Rychlý start: Nasazení clusteru AKS s důvěrnými výpočetními uzly agenta Intel SGX 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čů podporujících enklávu (DCsv2/DCSv3). Potom 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 webu 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 clusteru umožňuje rychle nasazovat a spravovat clustery. Další informace najdete v úvodu 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í kontejnery Linuxu
- Virtuální počítač generace 2 s uzly virtuálních počítačů s Ubuntu 18.04
- Procesor s podporou Intel SGX pomáhá spouštět kontejnery v chráněné enklávě s využitím paměti EPC (Encrypted Page Cache). Další informace najdete v tématu Nejčastější dotazy k důvěrnému výpočetnímu prostředí 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ému výpočetnímu prostředí Azure.
Poznámka:
Virtuální počítače DCsv2/DCsv3 používají specializovaný hardware, který je dostupný v jednotlivých oblastech. Další informace najdete v dostupných cenových úrovních a podporovaných oblastech.
Požadavky
K tomuto rychlému startu potřebujete:
Minimálně osm jader DCsv2/DCSv3/DCdsv3, které jsou k dispozici ve vašem předplatném.
Ve výchozím nastavení neexistuje kvóta pro velikosti virtuálních počítačů Intel SGX pro vaše předplatná Azure. Podle těchto pokynů byste měli požádat o kvótu jader virtuálních počítačů pro vaše předplatná.
Vytvoření clusteru AKS s důvěrnými výpočetními uzly podporujícími enklávu a doplňkem Intel SGX
Pomocí 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 v aplikaci hello world enclave.
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 fond důvěrných výpočetních uzlů.
Doplněk Intel SGX AKS Addon "confcom" zveřejňuje ovladače zařízení Intel SGX vašim kontejnerům, aby nedocházelo k přidávání změn do vašeho podu yaml.
Nejprve pomocí příkazu az group create vytvořte skupinu prostředků pro cluster. Následující příklad vytvoří skupinu prostředků myResourceGroup v oblasti eastus2:
az group create --name myResourceGroup --location eastus2
Teď pomocí příkazu az aks create vytvořte cluster AKS s povoleným doplňkem důvěrného výpočetního prostředí:
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ů neutajení výpočetního uzlu. Pro fondy systémových uzlů se nedoporučuje používat důvěrné výpočetní uzly Intel SGX.
Přidání fondu uzlů uživatele s důvěrnými výpočetními funkcemi do clusteru AKS
Spuštěním následujícího příkazu přidejte fond Standard_DC4s_v3
uzlů uživatele se třemi uzly do clusteru AKS. V seznamu podporovaných skladových položek DCsv2/DCsv3 můžete zvolit jinou skladovou položku větší velikosti.
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či domény v3 viditelný s doplňkem DaemonSets (plug-in zařízení SGX).
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 jsou uzly správně vytvořeny a že procesy daemonSet související s SGX běží ve fondech uzlů DCsv2:
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 spuštění důvěrných aplikací.
V tomto rychlém startu můžete přejít do části Nasazení Hello World z oddílu izolované aplikace enklávy a otestovat aplikaci v enklávě. Nebo pomocí 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í fondu důvěrných 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 požadavky uvedené výše v tomto rychlém startu.
Povolení doplňku AKS pro důvěrné výpočetní operace 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 použít důvěrné výpočetní funkce, musí mít váš stávající cluster AKS minimálně jeden fond uzlů založený na skladové pořiďte skladové položky virtuálního počítače DCsv2/DCsv3. Další informace o skladových posílacích DCS-v2/Dcs-v3 pro důvěrné výpočetní operace najdete v dostupných skladových posílací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 byl vytvořen nový fond uzlů s názvem confcompool1 :
az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup
Ověřte, že jsou daemonSets spuštěné ve fondech důvěrných uzlů.
Přihlaste se ke 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ůže se také zobrazit 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 spuštění důvěrných aplikací.
Nasazení aplikace 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 do následujícího manifestu YAML. Tento vzorový 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 načítá image veřejného kontejneru z Docker Hubu. Doporučujeme nastavit tajný kód pro přijetí změn pro ověření pomocí účtu Docker Hubu místo vytvoření anonymní žádosti o přijetí změn. 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
Alternativně 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 node pool
- acc_second # this is the name of your confidential computing node 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é spouštěcí prostředí (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 fond důvěrných 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í softwaru isV/OSS SGX wrapper. Projděte si důvěrné ukázky kontejnerů na GitHubu.
Spouštění aplikací podporujících enklávu pomocí ukázek kontejnerů Azure podporujících enklávu na GitHubu