Sdílet prostřednictvím


Rychlý start: Nasazení clusteru AKS s důvěrnými výpočetními uzly agenta Intel SGX 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čů podporujících enklávu (DCsv2/DCSv3). Potom 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 webu 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 clusteru umožňuje rychle nasazovat a spravovat clustery. Další informace najdete v úvodu 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 dostupný v jednotlivých oblastech. Další informace najdete v dostupných cenových úrovních a podporovaných oblastech.

Požadavky

K tomuto rychlému startu potřebujete:

  • Minimálně osm jader DCsv2/DCSv3/DCdsv3, které jsou k dispozici ve vašem předplatném.

    Ve výchozím nastavení neexistuje kvóta pro velikosti virtuálních počítačů Intel SGX pro vaše předplatná Azure. Podle těchto pokynů byste měli požádat o kvótu jader virtuálních počítačů pro vaše předplatná.

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

Pomocí 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 v aplikaci hello world enclave.

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 fond důvěrných výpočetních uzlů.

Doplněk Intel SGX AKS Addon "confcom" zveřejňuje ovladače zařízení Intel SGX vašim kontejnerům, aby nedocházelo k přidávání změn do vašeho podu yaml.

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

az group create --name myResourceGroup --location eastus2

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

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ů neutajení výpočetního uzlu. Pro fondy systémových uzlů se nedoporučuje používat důvěrné výpočetní uzly Intel SGX.

Přidání fondu uzlů uživatele s důvěrnými výpočetními funkcemi do clusteru AKS

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

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či domény v3 viditelný s doplňkem DaemonSets (plug-in zařízení SGX).

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 jsou uzly správně vytvořeny a že procesy daemonSet související s SGX běží ve fondech uzlů DCsv2:

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 spuštění důvěrných aplikací.

V tomto rychlém startu můžete přejít do části Nasazení Hello World z oddílu izolované aplikace enklávy a otestovat aplikaci v enklávě. Nebo pomocí 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í fondu důvěrných 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 požadavky uvedené výše v tomto rychlém startu.

Povolení doplňku AKS pro důvěrné výpočetní operace 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 použít důvěrné výpočetní funkce, musí mít váš stávající cluster AKS minimálně jeden fond uzlů založený na skladové pořiďte skladové položky virtuálního počítače DCsv2/DCsv3. Další informace o skladových posílacích DCS-v2/Dcs-v3 pro důvěrné výpočetní operace najdete v dostupných skladových posílací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 byl vytvořen nový fond uzlů s názvem confcompool1 :

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

Ověřte, že jsou daemonSets spuštěné ve fondech důvěrných uzlů.

Přihlaste se ke 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ůže se také zobrazit 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 spuštění důvěrných aplikací.

Nasazení aplikace 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 do následujícího manifestu YAML. Tento vzorový 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 načítá image veřejného kontejneru z Docker Hubu. Doporučujeme nastavit tajný kód pro přijetí změn pro ověření pomocí účtu Docker Hubu místo vytvoření anonymní žádosti o přijetí změn. 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

Alternativně 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 node pool
                - acc_second # this is the name of your confidential computing node 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é spouštěcí prostředí (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 fond důvěrných 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