Rychlý start: Nasazení clusteru AKS s uzly agenta Intel SGX s důvěrným výpočetním prostředím pomocí Azure CLI

V tomto rychlém startu použijete Azure CLI k nasazení clusteru Azure Kubernetes Service (AKS) s uzly virtuálních počítačů s podporou enklávy (DCsv2/DCSv3). Pak spustíte jednoduchou aplikaci Hello World v enklávě. Můžete také zřídit cluster a přidat důvěrné výpočetní uzly z Azure Portal, ale tento rychlý start se zaměřuje na Azure CLI.

AKS je spravovaná služba Kubernetes, která vývojářům nebo operátorům clusterů umožňuje rychle nasazovat a spravovat clustery. Další informace najdete v úvodu k AKS a přehledu důvěrných uzlů AKS.

Mezi funkce důvěrných výpočetních uzlů patří:

Poznámka

Virtuální počítače DCsv2/DCsv3 používají specializovaný hardware, který je v dané oblasti dostupný. Další informace najdete v tématu Dostupné skladové položky a podporované oblasti.

Požadavky

K tomuto rychlému startu potřebujete:

  • Ve vašem předplatném je k dispozici minimálně osm jader DCsv2/DCSv3/DCdsv3.

    Ve výchozím nastavení neexistuje žádná předem přiřazená kvóta velikostí virtuálních počítačů Intel SGX pro vaše předplatná Azure. Pokud chcete požádat o kvótu jader virtuálních počítačů pro vaše předplatná, měli byste postupovat podle těchto pokynů .

Vytvoření clusteru AKS s důvěrnými výpočetními uzly podporujícími enklávy a doplňkem Intel SGX

Podle následujících pokynů vytvořte cluster AKS s povoleným doplňkem Intel SGX, přidejte do clusteru fond uzlů a ověřte, co jste vytvořili pomocí aplikace enklávy Hello World.

Vytvoření clusteru AKS s fondem systémových uzlů a doplňkem AKS Intel SGX

Poznámka

Pokud už máte cluster AKS, který splňuje výše uvedená kritéria požadavků, přejděte k další části a přidejte důvěrný fond výpočetních uzlů.

Intel SGX AKS Addon "confcom" zveřejňuje ovladače zařízení Intel SGX do kontejnerů, aby se zabránilo přidání změn do yaml podu.

Nejprve vytvořte skupinu prostředků pro cluster pomocí příkazu az group create . Následující příklad vytvoří skupinu prostředků myResourceGroup v oblasti eastus2 :

az group create --name myResourceGroup --location eastus2

Teď vytvořte cluster AKS s povoleným doplňkem důvěrného výpočetního prostředí pomocí příkazu az aks create :

az aks create -g myResourceGroup --name myAKSCluster --generate-ssh-keys --enable-addons confcom

Výše uvedený příkaz nasadí nový cluster AKS s fondem systémových uzlů bez důvěrných výpočetních uzlů. Důvěrné výpočetní uzly Intel SGX se pro fondy systémových uzlů nedoporučují.

Přidání fondu uživatelských uzlů s funkcemi důvěrného výpočetního prostředí do clusteru AKS

Spuštěním následujícího příkazu přidejte do clusteru AKS fond uživatelských Standard_DC4s_v3 uzlů o velikosti se třemi uzly. Ze seznamu podporovaných skladových položek DCsv2/DCsv3 můžete zvolit jinou skladovou položku s větší velikostí.

az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-vm-size Standard_DC4s_v3 --node-count 2

Po spuštění příkazu by měl být nový fond uzlů s řadičem DCsv3 viditelný pomocí modulu plug-in s důvěrným výpočetním doplňkem DaemonSets (SGX device plug-in).

Ověření fondu uzlů a doplňku

Pomocí příkazu az aks get-credentials získejte přihlašovací údaje pro cluster AKS:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

kubectl get pods Pomocí příkazu ověřte, že se uzly správně vytvořily a že na fondech uzlů DCsv2 běží daemonSets související s SGX:

kubectl get pods --all-namespaces
kube-system     sgx-device-plugin-xxxx     1/1     Running

Pokud výstup odpovídá předchozímu kódu, cluster AKS je teď připravený ke spouštění důvěrných aplikací.

V tomto rychlém startu můžete přejít do části Nasazení Hello World z izolované aplikace enklávy a otestovat aplikaci v enklávě. Nebo podle následujících pokynů přidejte do AKS další fondy uzlů. (AKS podporuje kombinování fondů uzlů SGX a fondů uzlů jiných než SGX.)

Přidání důvěrného fondu výpočetních uzlů do existujícího clusteru AKS

V této části se předpokládá, že už používáte cluster AKS, který splňuje kritéria požadavků uvedená dříve v tomto rychlém startu.

Povolení doplňku AKS pro důvěrné výpočetní prostředí v existujícím clusteru

Spuštěním následujícího příkazu povolte doplněk důvěrného výpočetního prostředí:

az aks enable-addons --addons confcom --name MyManagedCluster --resource-group MyResourceGroup

Přidání fondu uzlů uživatele DCsv3 do clusteru

Poznámka

Pokud chcete využít funkci důvěrného výpočetního prostředí, váš stávající cluster AKS musí mít minimálně jeden fond uzlů založený na skladové pouce virtuálních počítačů DCsv2/DCsv3. Další informace o skladových pořicích virtuálních počítačů DCs-v2/Dcs-v3 pro důvěrné výpočetní prostředí najdete v dostupných skladových posadách a podporovaných oblastech.

Spuštěním následujícího příkazu vytvořte fond uzlů:

az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-count 2 --node-vm-size Standard_DC4s_v3

Ověřte, že se vytvořil nový fond uzlů s názvem confcompool1 :

az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup

Ověřte, že na důvěrných fondech uzlů běží daemonSets.

Přihlaste se ke svému stávajícímu clusteru AKS a proveďte následující ověření:

kubectl get nodes

Výstup by měl zobrazit nově přidaný fond confcompool1 v clusteru AKS. Můžete také vidět další daemonSets.

kubectl get pods --all-namespaces
kube-system     sgx-device-plugin-xxxx     1/1     Running

Pokud výstup odpovídá předchozímu kódu, cluster AKS je teď připravený ke spouštění důvěrných aplikací.

Nasazení Hello World z izolované aplikace enklávy

Teď jste připraveni nasadit testovací aplikaci.

Vytvořte soubor s názvem hello-world-enclave.yaml a vložte následující manifest YAML. Tento ukázkový kód aplikace najdete v projektu Open Enclave. Toto nasazení předpokládá, že jste nasadili doplněk confcom .

Poznámka

Následující příklad přetáhne image veřejného kontejneru z Docker Hub. Doporučujeme, abyste místo anonymní žádosti o přijetí změn nastavili tajný kód pro vyžádání změn pro ověřování pomocí účtu Docker Hub. Pokud chcete zvýšit spolehlivost při práci s veřejným obsahem, naimportujte a spravujte image v privátním registru kontejneru Azure. Přečtěte si další informace o práci s veřejnými imagemi.

apiVersion: batch/v1
kind: Job
metadata:
  name: oe-helloworld
  namespace: default
spec:
  template:
    metadata:
      labels:
        app: oe-helloworld
    spec:
      containers:
      - name: oe-helloworld
        image: mcr.microsoft.com/acc/samples/oe-helloworld:latest
        resources:
          limits:
            sgx.intel.com/epc: "10Mi"
          requests:
            sgx.intel.com/epc: "10Mi"
        volumeMounts:
        - name: var-run-aesmd
          mountPath: /var/run/aesmd
      restartPolicy: "Never"
      volumes:
      - name: var-run-aesmd
        hostPath:
          path: /var/run/aesmd
  backoffLimit: 0

Případně můžete také provést nasazení výběru fondu uzlů pro nasazení kontejnerů, jak je znázorněno níže.

apiVersion: batch/v1
kind: Job
metadata:
  name: oe-helloworld
  namespace: default
spec:
  template:
    metadata:
      labels:
        app: oe-helloworld
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: agentpool
                operator: In
                values:
                - acc # this is the name of your confidential computing nodel pool
                - acc_second # this is the name of your confidential computing nodel pool
      containers:
      - name: oe-helloworld
        image: mcr.microsoft.com/acc/samples/oe-helloworld:latest
        resources:
          limits:
            sgx.intel.com/epc: "10Mi"
          requests:
            sgx.intel.com/epc: "10Mi"
        volumeMounts:
        - name: var-run-aesmd
          mountPath: /var/run/aesmd
      restartPolicy: "Never"
      volumes:
      - name: var-run-aesmd
        hostPath:
          path: /var/run/aesmd
  backoffLimit: 0

Teď pomocí kubectl apply příkazu vytvořte ukázkovou úlohu, která se otevře v zabezpečené enklávě, jak je znázorněno v následujícím příkladu výstupu:

kubectl apply -f hello-world-enclave.yaml
job "oe-helloworld" created

Spuštěním následujících příkazů můžete ověřit, že úloha úspěšně vytvořila důvěryhodné prostředí spouštění (enkláva):

kubectl get jobs -l app=oe-helloworld
NAME       COMPLETIONS   DURATION   AGE
oe-helloworld   1/1           1s         23s
kubectl get pods -l app=oe-helloworld
NAME             READY   STATUS      RESTARTS   AGE
oe-helloworld-rchvg   0/1     Completed   0          25s
kubectl logs -l app=oe-helloworld
Hello world from the enclave
Enclave called into host to print: Hello World!

Vyčištění prostředků

Pokud chcete odebrat důvěrný fond výpočetních uzlů, který jste vytvořili v tomto rychlém startu, použijte následující příkaz:

az aks nodepool delete --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup

Pokud chcete odstranit cluster AKS, použijte následující příkaz:

az aks delete --resource-group myResourceGroup --cluster-name myAKSCluster

Další kroky