Delen via


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

In deze quickstart gebruikt u de Azure CLI om een AKS-cluster (Azure Kubernetes Service) te implementeren met enclavebewuste VM-knooppunten (DCsv2/DCSv3). Vervolgens voert u een eenvoudige Hallo wereld toepassing uit in een enclave. U kunt ook een cluster inrichten en vertrouwelijke rekenknooppunten toevoegen vanuit 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 inleiding tot AKS 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 beschikbaarheid in de onderwerpregio is. Zie de beschikbare SKU's en ondersteunde regio's voor meer informatie.

Vereisten

Voor deze snelstart zijn de volgende zaken vereist:

  • Minimaal acht DCSv2/DCSv3/DCdsv3-kernen die beschikbaar zijn in uw abonnement.

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

Een AKS-cluster maken met enclavebewuste vertrouwelijke rekenknooppunten en Intel SGX-invoegtoepassing

Gebruik de volgende instructies om een AKS-cluster te maken waarvoor de Intel SGX-invoegtoepassing is ingeschakeld, voeg een knooppuntgroep toe aan het cluster en controleer 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 verder met de volgende sectie om een vertrouwelijke rekenknooppuntgroep toe te voegen.

Intel SGX AKS Addon "confcom" toont de Intel SGX-apparaatstuurprogramma's aan 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. Vertrouwelijke computing Intel SGX-knooppunten worden niet aanbevolen voor systeemknooppuntgroepen.

Een gebruikersknooppuntgroep met vertrouwelijke computingmogelijkheden toevoegen aan het AKS-cluster

Voer de volgende opdracht uit om een gebruikersknooppuntgroep met Standard_DC4s_v3 grootte toe te voegen met drie knooppunten 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 DCV3 zichtbaar zijn met de invoegtoepassing Confidential Computing 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 aan 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 klaar om vertrouwelijke toepassingen uit te voeren.

In deze quickstart gaat u naar de sectie Implementeren Hallo wereld vanuit een geïsoleerde enclavetoepassing 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 mogelijkheden voor vertrouwelijke 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 DC's-v2/Dcs-v3-VM's voor vertrouwelijke 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 wordt uitgevoerd in vertrouwelijke knooppuntgroepen

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

kubectl get nodes

In de uitvoer moet de zojuist toegevoegde confcompool1-pool in het AKS-cluster worden weergegeven. 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 klaar 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 Open Enclave-project. 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 voor verificatie met behulp van een Docker Hub-account in plaats van een anonieme pull-aanvraag te maken. 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 afbeeldingen.

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 implementatie van selectie van knooppuntgroepen 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 Trusted Execution Environment (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

Gebruik de volgende opdracht om de vertrouwelijke rekenknooppuntgroep te verwijderen die u in deze quickstart hebt gemaakt:

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