Rychlý start: Nasazení clusteru AKS s uzly agenta Intel SGX s důvěrným výpočetním prostředím 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čů s podporou enklávy (DCsv2/DCSv3). Pak 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 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 clusterů umožňuje rychle nasazovat a spravovat clustery. Další informace najdete v úvodu k AKS a přehledu důvěrných uzlů AKS.
Mezi funkce důvěrných výpočetních uzlů patří:
- Pracovní uzly Linuxu podporující linuxové kontejnery.
- Virtuální počítač 2. generace s uzly virtuálních počítačů s Ubuntu 18.04.
- Procesor intel SGX, který pomáhá spouštět kontejnery v enklávě chráněné důvěrností s využitím paměti EPC (Encrypted Page Cache Memory). Další informace najdete v tématu Nejčastější dotazy k důvěrným výpočetním prostředkům Azure.
- Ovladač Intel SGX DCAP předinstalovaný na důvěrných výpočetních uzlech. Další informace najdete v tématu Nejčastější dotazy k důvěrným výpočetním prostředkům Azure.
Poznámka
Virtuální počítače DCsv2/DCsv3 používají specializovaný hardware, který je v dané oblasti dostupný. Další informace najdete v tématu Dostupné skladové položky a podporované oblasti.
Požadavky
K tomuto rychlému startu potřebujete:
Ve vašem předplatném je k dispozici minimálně osm jader DCsv2/DCSv3/DCdsv3.
Ve výchozím nastavení neexistuje žádná předem přiřazená kvóta velikostí virtuálních počítačů Intel SGX pro vaše předplatná Azure. Pokud chcete požádat o kvótu jader virtuálních počítačů pro vaše předplatná, měli byste postupovat podle těchto pokynů .
Vytvoření clusteru AKS s důvěrnými výpočetními uzly podporujícími enklávy a doplňkem Intel SGX
Podle 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 pomocí aplikace enklávy Hello World.
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 důvěrný fond výpočetních uzlů.
Intel SGX AKS Addon "confcom" zveřejňuje ovladače zařízení Intel SGX do kontejnerů, aby se zabránilo přidání změn do yaml podu.
Nejprve vytvořte skupinu prostředků pro cluster pomocí příkazu az group create . Následující příklad vytvoří skupinu prostředků myResourceGroup v oblasti eastus2 :
az group create --name myResourceGroup --location eastus2
Teď vytvořte cluster AKS s povoleným doplňkem důvěrného výpočetního prostředí pomocí příkazu az aks create :
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ů bez důvěrných výpočetních uzlů. Důvěrné výpočetní uzly Intel SGX se pro fondy systémových uzlů nedoporučují.
Přidání fondu uživatelských uzlů s funkcemi důvěrného výpočetního prostředí do clusteru AKS
Spuštěním následujícího příkazu přidejte do clusteru AKS fond uživatelských Standard_DC4s_v3
uzlů o velikosti se třemi uzly. Ze seznamu podporovaných skladových položek DCsv2/DCsv3 můžete zvolit jinou skladovou položku s větší velikostí.
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čem DCsv3 viditelný pomocí modulu plug-in s důvěrným výpočetním doplňkem DaemonSets (SGX device plug-in).
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 se uzly správně vytvořily a že na fondech uzlů DCsv2 běží daemonSets související s SGX:
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 spouštění důvěrných aplikací.
V tomto rychlém startu můžete přejít do části Nasazení Hello World z izolované aplikace enklávy a otestovat aplikaci v enklávě. Nebo podle 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í důvěrného fondu 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 kritéria požadavků uvedená dříve v tomto rychlém startu.
Povolení doplňku AKS pro důvěrné výpočetní prostředí 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 využít funkci důvěrného výpočetního prostředí, váš stávající cluster AKS musí mít minimálně jeden fond uzlů založený na skladové pouce virtuálních počítačů DCsv2/DCsv3. Další informace o skladových pořicích virtuálních počítačů DCs-v2/Dcs-v3 pro důvěrné výpočetní prostředí najdete v dostupných skladových posadá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 se vytvořil nový fond uzlů s názvem confcompool1 :
az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup
Ověřte, že na důvěrných fondech uzlů běží daemonSets.
Přihlaste se ke svému 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ůžete také vidět 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 spouštění důvěrných aplikací.
Nasazení 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 následující manifest YAML. Tento ukázkový 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 přetáhne image veřejného kontejneru z Docker Hub. Doporučujeme, abyste místo anonymní žádosti o přijetí změn nastavili tajný kód pro vyžádání změn pro ověřování pomocí účtu Docker Hub. 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
Případně 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 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
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é prostředí spouštění (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 důvěrný fond 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
Spusťte Python, Node nebo jiné aplikace prostřednictvím důvěrných kontejnerů pomocí obálkového softwaru ISV/OSS SGX. Projděte si ukázky důvěrných kontejnerů na GitHubu.
Spouštějte aplikace podporující enklávy pomocí ukázek kontejnerů Azure podporujících enklávy na GitHubu.