Delen via


Quickstart: Een AKS-cluster implementeren met Confidential Computing Intel SGX-agentknooppunten met behulp van de Azure CLI

In deze quickstart gebruikt u de Azure CLI om een Azure Kubernetes Service (AKS)-cluster te implementeren met enclave-compatibele VM-knooppunten (DCsv2/DCSv3). Vervolgens voert u een eenvoudige Hallo wereld-toepassing uit in een enclave. U kunt ook een cluster inrichten en confidential computing-knooppunten toevoegen vanuit de Azure Portal, maar deze quickstart is gericht op de Azure CLI.

AKS is een beheerde Kubernetes-service waarmee ontwikkelaars of clusteroperators snel clusters kunnen implementeren en beheren. Lees de AKS-inleiding en het overzicht van vertrouwelijke AKS-knooppunten voor meer informatie.

Functies van Confidential Computing-knooppunten zijn onder andere:

Notitie

DCsv2/DCsv3-VM's maken gebruik van gespecialiseerde hardware die beschikbaar is in de onderwerpregio. Zie de beschikbare SKU's en ondersteunde regio's voor meer informatie.

Vereisten

Voor deze snelstart zijn de volgende zaken vereist:

  • Er zijn minimaal acht DCsv2/DCSv3/DCdsv3-kernen beschikbaar in uw abonnement.

    Standaard is er geen vooraf toegewezen quotum voor Intel SGX VM-grootten voor uw Azure-abonnementen. Volg deze instructies om vm-kernquota voor uw abonnementen aan te vragen.

Een AKS-cluster maken met enclave-compatibele confidential computing-knooppunten en Intel SGX-invoegtoepassing

Gebruik de volgende instructies om een AKS-cluster te maken met de Intel SGX-invoegtoepassing ingeschakeld, een knooppuntgroep toe te voegen aan het cluster en te controleren wat u hebt gemaakt met de hello world enclave-toepassing.

Een AKS-cluster maken met een systeemknooppuntgroep en AKS Intel SGX-invoegtoepassing

Notitie

Als u al een AKS-cluster hebt dat voldoet aan de vereiste criteria die eerder zijn vermeld, gaat u naar de volgende sectie om een confidential computing-knooppuntgroep toe te voegen.

De Intel SGX AKS-invoegtoepassing 'confcom' maakt de Intel SGX-apparaatstuurprogramma's beschikbaar voor uw containers om toegevoegde wijzigingen in uw pod-yaml te voorkomen.

Maak eerst een resourcegroep voor het cluster met behulp van de opdracht az group create . In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt in de regio eastus2 :

az group create --name myResourceGroup --location eastus2

Maak nu een AKS-cluster met de invoegtoepassing confidential computing ingeschakeld met behulp van de opdracht az aks create :

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

Met de bovenstaande opdracht wordt een nieuw AKS-cluster geïmplementeerd met een systeemknooppuntgroep van een niet-vertrouwelijk rekenknooppunt. Confidential Computing Intel SGX-knooppunten worden niet aanbevolen voor systeemknooppuntgroepen.

Een gebruikersknooppuntgroep met mogelijkheden voor vertrouwelijke computing toevoegen aan het AKS-cluster

Voer de volgende opdracht uit om een grote gebruikersknooppuntgroep Standard_DC4s_v3 met drie knooppunten toe te voegen aan het AKS-cluster. U kunt een andere grotere SKU kiezen in de lijst met ondersteunde DCsv2/DCsv3-SKU's en -regio's.

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

Nadat u de opdracht hebt uitgevoerd, moet een nieuwe knooppuntgroep met DCsv3 zichtbaar zijn met confidential computing add-on DaemonSets (SGX device plug-in).

De knooppuntgroep en invoegtoepassing controleren

Haal de referenties voor uw AKS-cluster op met behulp van de opdracht az aks get-credentials :

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

Gebruik de kubectl get pods opdracht om te controleren of de knooppunten correct zijn gemaakt en of de SGX-gerelateerde DaemonSets worden uitgevoerd op DCsv2-knooppuntgroepen:

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

Als de uitvoer overeenkomt met de voorgaande code, is uw AKS-cluster nu gereed om vertrouwelijke toepassingen uit te voeren.

U kunt in deze snelstart naar de sectie Hallo wereld implementeren vanuit een geïsoleerde enclavetoepassing gaan om een app in een enclave te testen. Of gebruik de volgende instructies om meer knooppuntgroepen toe te voegen aan AKS. (AKS ondersteunt het combineren van SGX-knooppuntgroepen en niet-SGX-knooppuntgroepen.)

Een confidential computing-knooppuntgroep toevoegen aan een bestaand AKS-cluster

In deze sectie wordt ervan uitgegaan dat u al een AKS-cluster uitvoert dat voldoet aan de vereiste criteria die eerder in deze quickstart zijn vermeld.

De AKS-invoegtoepassing confidential computing inschakelen op het bestaande cluster

Voer de volgende opdracht uit om de invoegtoepassing confidential computing in te schakelen:

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

Een DCsv3-gebruikersknooppuntgroep toevoegen aan het cluster

Notitie

Als u de functie confidential computing wilt gebruiken, moet uw bestaande AKS-cluster minimaal één knooppuntgroep hebben die is gebaseerd op een DCsv2/DCsv3 VM-SKU. Zie de beschikbare SKU's en ondersteunde regio's voor meer informatie over DCs-v2/Dcs-v3-VM's voor confidential computing.

Voer de volgende opdracht uit om een knooppuntgroep te maken:

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

Controleer of de nieuwe knooppuntgroep met de naam confcompool1 is gemaakt:

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

Controleer of DaemonSets worden uitgevoerd op vertrouwelijke knooppuntgroepen

Meld u aan bij uw bestaande AKS-cluster om de volgende verificatie uit te voeren:

kubectl get nodes

De uitvoer moet de zojuist toegevoegde confcompool1-pool in het AKS-cluster weergeven. Mogelijk ziet u ook andere DaemonSets.

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

Als de uitvoer overeenkomt met de voorgaande code, is uw AKS-cluster nu gereed om vertrouwelijke toepassingen uit te voeren.

Hallo wereld implementeren vanuit een geïsoleerde enclavetoepassing

U bent nu klaar om een testtoepassing te implementeren.

Maak een bestand met de naam hello-world-enclave.yaml en plak het volgende YAML-manifest. U vindt deze voorbeeldtoepassingscode in het project Open Enclave. Bij deze implementatie wordt ervan uitgegaan dat u de confcom-invoegtoepassing hebt geïmplementeerd.

Notitie

In het volgende voorbeeld wordt een openbare containerinstallatiekopie opgehaald uit Docker Hub. U wordt aangeraden een pull-geheim in te stellen om te verifiëren met behulp van een Docker Hub-account in plaats van een anonieme pull-aanvraag te doen. Als u de betrouwbaarheid wilt verbeteren bij het werken met openbare inhoud, importeert en beheert u de installatiekopieën in een privé-Azure-containerregister. Meer informatie over het werken met openbare installatiekopieën.

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

U kunt ook een knooppuntgroepselectieimplementatie uitvoeren voor uw containerimplementaties, zoals hieronder wordt weergegeven

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

Gebruik nu de kubectl apply opdracht om een voorbeeldtaak te maken die wordt geopend in een beveiligde enclave, zoals wordt weergegeven in de volgende voorbeelduitvoer:

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

U kunt controleren of de workload een vertrouwde uitvoeringsomgeving (enclave) heeft gemaakt door de volgende opdrachten uit te voeren:

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!

Resources opschonen

Als u de confidential computing-knooppuntgroep wilt verwijderen die u in deze quickstart hebt gemaakt, gebruikt u de volgende opdracht:

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

Gebruik de volgende opdracht om het AKS-cluster te verwijderen:

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

Volgende stappen