Início rápido: implantar um cluster do AKS com nós de agente Intel SGX de computação confidencial usando a CLI do Azure
Neste início rápido, você usará a CLI do Azure para implantar um cluster do AKS (Serviço de Kubernetes do Azure) com nós de VM (DCsv2/DCSv3) com reconhecimento de enclave. Em seguida, você executará um aplicativo Olá, Mundo simples em um enclave. Você também pode provisionar um cluster e adicionar nós de computação confidencial por meio do portal do Azure, mas esse início rápido se concentra na CLI do Azure.
O AKS é um serviço Kubernetes gerenciado que permite aos desenvolvedores ou aos operadores de cluster implantar e gerenciar clusters rapidamente. Para saber mais, leia a Introdução do AKS e a Visão geral dos nós confidenciais do AKS.
Os recursos dos nós de computação confidencial incluem:
- Nós de trabalho do Linux que dão suporte a contêineres do Linux.
- VM (Máquina Virtual) de Geração 2 com nós de VM do Ubuntu 18.04.
- CPU com capacidade para Intel SGX para ajudar a executar seus contêineres em enclaves com a confidencialidade protegida, aproveitando a memória EPC (Cache de Página Criptografada). Para obter mais informações, confira Perguntas frequentes para a computação confidencial do Azure.
- Driver Intel SGX DCAP pré-instalado em nós de computação confidencial. Para obter mais informações, confira Perguntas frequentes para a computação confidencial do Azure.
Observação
As VMs DCsv2/DCsv3 usam hardware especializado que estão sujeitos à disponibilidade por região. Para obter mais informações, confira os SKUs disponíveis e as regiões com suporte.
Pré-requisitos
Este início rápido requer:
Há pelo menos oito núcleos DCsv2/DCSv3/DCdsv3 disponíveis na sua assinatura.
Por padrão, não há cota pré-atribuída para tamanhos de VM Do Intel SGX para suas assinaturas do Azure. Você deve seguir estas instruções para solicitar a cota principal da VM para suas assinaturas.
Criar um cluster do AKS com nós e complemento Intel SGX de computação confidenciais com reconhecimento de enclave
Use as instruções a seguir para criar um cluster AKS com o complemento Intel SGX de computação confidencial habilitado, adicionar um pool de nós ao cluster e verificar o que você criou com o aplicativo Olá, Mundo enclave.
Criar um cluster do AKS com um pool de nós do sistema e um Complemento Intel SGX do AKS
Observação
Se você já tem um cluster do AKS que atende aos critérios pré-requisitos listados acima, vá diretamente para a próxima seção para adicionar um pool de nós de computação confidencial.
A "configuração" do Complemento do Intel SGX AKS expõe os drivers de dispositivo Intel SGX para seus contêineres para evitar alterações adicionadas ao seu yaml de pod.
Primeiro, crie um grupo de recursos para o cluster usando o comando az group create. O seguinte exemplo cria um grupo de recursos chamado myResourceGroup na região eastus2:
az group create --name myResourceGroup --location eastus2
Agora, crie um cluster do AKS com o complemento de computação confidencial habilitado, usando o comando az aks create:
az aks create -g myResourceGroup --name myAKSCluster --generate-ssh-keys --enable-addons confcom
O comando acima implantará um novo cluster do AKS com o pool de nós do sistema de nó de computação não confidencial. Nós Intel SGX de computação confidencial não são recomendados para pools de nós do sistema.
Adicione um pool de nós de usuário com funcionalidades de computação confidencial ao cluster do AKS
Execute o comando a seguir para adicionar um pool de nós de usuário de tamanho Standard_DC4s_v3
com três nós ao cluster do AKS. Você pode escolher outro SKU de tamanho maior na lista de SKUs e regiões DCsv2/DCsv3 com suporte.
az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-vm-size Standard_DC4s_v3 --node-count 2
Após a execução do comando, um novo pool de nós com DCsv3 deverá ficar visível com os DaemonSets do complemento de computação confidencial (Plug-in de dispositivo da SGX).
Verificar o pool de nós e o complemento
Obtenha as credenciais do seu cluster do AKS usando o comando az aks get-credentials:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Use o comando kubectl get pods
para verificar se os nós foram criados corretamente e se os DaemonSets relacionados a SGX estão em execução em pools de nós DCsv2:
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
Se a saída corresponder ao código anterior, o cluster do AKS estará pronto para executar aplicativos confidenciais.
Você pode ir para a seção Implantar Olá, Mundo de um aplicativo enclave isolado neste início rápido para testar um aplicativo em um enclave. Ou use as instruções a seguir para adicionar mais pools de nós ao AKS. (O AKS dá suporte à combinação de pools de nós SGX e pools de nós não SGX.)
Adicionar um pool de nós de computação confidencial a um cluster do AKS existente
Esta seção pressupõe que você já está executando um cluster AKS que atende aos critérios de pré-requisito listados anteriormente neste início rápido.
Habilitar o complemento de computação confidencial do AKS no cluster existente
Execute o seguinte comando para habilitar o complemento de computação confidencial:
az aks enable-addons --addons confcom --name MyManagedCluster --resource-group MyResourceGroup
Adicionar um pool de nós de usuário DCsv3 ao cluster
Observação
Para usar a funcionalidade de computação confidencial, o cluster do AKS existente precisa ter pelo menos um pool de nós baseado em um SKU de VM DCsv2/DCsv3. Para saber mais sobre os SKUs de VMs DCs-v2/DCs-v3 para computação confidencial, confira SKUs disponíveis e regiões com suporte.
Execute o seguinte comando para criar um pool 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 pool de nós com o nome confcompool1 foi criado:
az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup
Verificar se os DaemonSets estão em execução nos pools de nós confidenciais
Entre no cluster do AKS existente para executar a seguinte verificação:
kubectl get nodes
A saída deve mostrar o pool confcompool1 recém-adicionado no cluster do AKS. Você também poderá ver outros DaemonSets.
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
Se a saída corresponder ao código anterior, o cluster do AKS estará pronto para executar aplicativos confidenciais.
Implantar o Olá, Mundo de um aplicativo enclave isolado
Agora você está pronto para implantar um aplicativo de teste.
Crie um arquivo chamado hello-world-enclave.yaml e cole no manifesto YAML a seguir. Você pode encontrar esse código de aplicativo de exemplo no projeto de enclave aberto. Essa implantação pressupõe que você implantou o complemento confcom.
Observação
O exemplo a seguir efetua pull de uma imagem de contêiner público do Docker Hub. É recomendável configurar um segredo de pull para autenticar-se usando uma conta do Docker Hub em vez de fazer uma solicitação de pull anônima. Para melhorar a confiabilidade ao trabalhar com o conteúdo público, importe e gerencie a imagem em um registro de contêiner 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
Como alternativa, você também pode fazer uma implantação de seleção de pool de nós para suas implantações de contêiner, 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, use o comando kubectl apply
para criar um trabalho de exemplo que será aberto em um enclave seguro, conforme mostrado na seguinte saída de exemplo:
kubectl apply -f hello-world-enclave.yaml
job "oe-helloworld" created
Você pode confirmar se a carga de trabalho criou com sucesso um enclave (Ambiente de Execução Confiável) executando 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 recursos
Para remover o pool de nós de computação confidencial que você criou neste início rápido, use o seguinte comando:
az aks nodepool delete --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup
Para excluir o cluster do AKS, use o seguinte comando:
az aks delete --resource-group myResourceGroup --cluster-name myAKSCluster
Próximas etapas
Execute Python, Node ou outros aplicativos por meio de contêineres confidenciais usando software de wrapper de SGX ISV/OSS. Examine exemplos de contêiner confidencial no GitHub.
Execute aplicativos com reconhecimento de enclave usando os Exemplos de contêineres do Azure com reconhecimento de enclave no GitHub.