Início Rápido: Implementar um cluster do AKS com nós de agente Intel SGX de computação confidencial com a CLI do Azure
Neste início rápido, irá utilizar a CLI do Azure para implementar um cluster de Azure Kubernetes Service (AKS) com nós de VM com suporte para enclaves (DCsv2/DCSv3). Em seguida, irá executar uma aplicação Hello World simples num enclave. Também pode aprovisionar um cluster e adicionar nós de computação confidenciais do portal do Azure, mas este início rápido foca-se na CLI do Azure.
O AKS é um serviço do Kubernetes gerido que permite aos programadores ou operadores de cluster implementar e gerir rapidamente clusters. Para saber mais, leia a introdução do AKS e a descrição geral dos nós confidenciais do AKS.
As funcionalidades dos nós de computação confidenciais incluem:
- Nós de trabalho do Linux que suportam contentores do Linux.
- Máquina virtual de geração 2 (VM) com nós de VM do Ubuntu 18.04.
- CPU compatível com Intel SGX para ajudar a executar os seus contentores no enclave protegido por confidencialidade, tirando partido da Memória de Cache de Página Encriptada (EPC). Para obter mais informações, veja Perguntas mais frequentes sobre computação confidencial do Azure.
- Controlador DCAP Intel SGX pré-instalado nos nós de computação confidenciais. Para obter mais informações, veja Perguntas mais frequentes sobre computação confidencial do Azure.
Nota
As VMs DCsv2/DCsv3 utilizam hardware especializado que está sujeito à disponibilidade da região. Para obter mais informações, veja os SKUs disponíveis e as regiões suportadas.
Pré-requisitos
Este início rápido requer:
Um mínimo de oito núcleos DCsv2/DCSv3/DCdsv3 disponíveis na sua subscrição.
Por predefinição, não existe uma quota pré-atribuída para tamanhos de VM Intel SGX para as suas subscrições do Azure. Deve seguir estas instruções para pedir quota de núcleo de VM para as suas subscrições.
Criar um cluster do AKS com nós de computação confidenciais com suporte para enclaves e suplemento Intel SGX
Utilize as seguintes instruções para criar um cluster do AKS com o suplemento Intel SGX ativado, adicione um conjunto de nós ao cluster e verifique o que criou com a aplicação hello world enclave.
Criar um cluster do AKS com um conjunto de nós de sistema e o AKS Intel SGX Addon
Nota
Se já tiver um cluster do AKS que cumpra os critérios de pré-requisito listados anteriormente, avance para a secção seguinte para adicionar um conjunto de nós de computação confidencial.
O "confcom" do Intel SGX AKS Addon expõe os controladores de dispositivo Intel SGX aos seus contentores para evitar alterações adicionais ao yaml do pod.
Em primeiro lugar, crie um grupo de recursos para o cluster com o comando az group create . O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na região eastus2 :
az group create --name myResourceGroup --location eastus2
Agora, crie um cluster do AKS, com o suplemento de computação confidencial ativado, com o comando az aks create :
az aks create -g myResourceGroup --name myAKSCluster --generate-ssh-keys --enable-addons confcom
O comando acima irá implementar um novo cluster do AKS com um conjunto de nós de sistema de nó de computação não confidencial. Os nós Intel SGX de computação confidencial não são recomendados para conjuntos de nós de sistema.
Adicionar um conjunto de nós de utilizador com capacidades de computação confidenciais ao cluster do AKS
Execute o seguinte comando para adicionar um conjunto de nós de utilizador com Standard_DC4s_v3
três nós ao cluster do AKS. Pode escolher outro SKU de tamanho maior na lista de SKUs e regiões DCsv2/DCsv3 suportados.
az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-vm-size Standard_DC4s_v3 --node-count 2
Depois de executar o comando, um novo conjunto de nós com DCsv3 deve estar visível com o suplemento de computação confidencial DaemonSets (plug-in de dispositivo SGX).
Verificar o conjunto de nós e o suplemento
Obtenha as credenciais do cluster do AKS com o comando az aks get-credentials :
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Utilize o kubectl get pods
comando para verificar se os nós são criados corretamente e que os DaemonSets relacionados com SGX estão em execução em conjuntos de nós DCsv2:
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
Se o resultado corresponder ao código anterior, o cluster do AKS está agora pronto para executar aplicações confidenciais.
Pode aceder à secção Implementar Hello World a partir de uma aplicação de enclave isolada neste início rápido para testar uma aplicação num enclave. Em alternativa, utilize as seguintes instruções para adicionar mais conjuntos de nós no AKS. (O AKS suporta a mistura de conjuntos de nós SGX e conjuntos de nós não SGX.)
Adicionar um conjunto de nós de computação confidencial a um cluster do AKS existente
Esta secção pressupõe que já está a executar um cluster do AKS que cumpre os critérios de pré-requisito listados anteriormente neste início rápido.
Ativar o suplemento do AKS de computação confidencial no cluster existente
Execute o seguinte comando para ativar o suplemento de computação confidencial:
az aks enable-addons --addons confcom --name MyManagedCluster --resource-group MyResourceGroup
Adicionar um conjunto de nós de utilizador DCsv3 ao cluster
Nota
Para utilizar a capacidade de computação confidencial, o cluster do AKS existente tem de ter um mínimo de um conjunto de nós baseado num SKU de VM DCsv2/DCsv3. Para saber mais sobre os SKUs de VMs DCs-v2/Dcs-v3 para computação confidencial, veja os SKUs disponíveis e as regiões suportadas.
Execute o seguinte comando para criar um conjunto de nós:
az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-count 2 --node-vm-size Standard_DC4s_v3
Verifique se o novo conjunto de nós com o nome confcompool1 foi criado:
az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup
Verifique se o DaemonSets está em execução em conjuntos de nós confidenciais
Inicie sessão no cluster do AKS existente para efetuar a seguinte verificação:
kubectl get nodes
O resultado deve mostrar o conjunto confcompool1 recentemente adicionado no cluster do AKS. Também poderá ver outros DaemonSets.
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
Se o resultado corresponder ao código anterior, o cluster do AKS está agora pronto para executar aplicações confidenciais.
Implementar Hello World a partir de uma aplicação de enclave isolada
Está agora pronto para implementar uma aplicação de teste.
Crie um ficheiro com o nome hello-world-enclave.yaml e cole o seguinte manifesto YAML. Pode encontrar este código de aplicação de exemplo no projeto Abrir Enclave. Esta implementação pressupõe que implementou o suplemento confcom .
Nota
O exemplo seguinte extrai uma imagem de contentor público do Docker Hub. Recomendamos que configure um segredo pull para autenticar com uma conta Docker Hub em vez de fazer um pedido Pull anónimo. Para melhorar a fiabilidade ao trabalhar com conteúdo público, importe e faça a gestão da imagem num registo de contentor privado do Azure. Saiba mais sobre como trabalhar com imagens públicas.
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
Em alternativa, também pode efetuar uma implementação de seleção de conjuntos de nós para as implementações de contentores, conforme mostrado abaixo
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
Agora, utilize o kubectl apply
comando para criar uma tarefa de exemplo que será aberta num enclave seguro, conforme mostrado na seguinte saída de exemplo:
kubectl apply -f hello-world-enclave.yaml
job "oe-helloworld" created
Pode confirmar que a carga de trabalho criou com êxito um Ambiente de Execução Fidedigna (enclave) ao executar os seguintes comandos:
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!
Limpar os recursos
Para remover o conjunto de nós de computação confidencial que criou neste início rápido, utilize o seguinte comando:
az aks nodepool delete --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup
Para eliminar o cluster do AKS, utilize o seguinte comando:
az aks delete --resource-group myResourceGroup --cluster-name myAKSCluster
Passos seguintes
Execute o Python, o Nó ou outras aplicações através de contentores confidenciais com software de wrapper SGX ISV/OSS. Reveja os exemplos confidenciais de contentor no GitHub.
Execute aplicações com suporte para enclaves com os exemplos de contentor do Azure com suporte para enclaves no GitHub.