Hızlı Başlangıç: Azure CLI kullanarak gizli bilgi işlem Intel SGX aracı düğümleriyle AKS kümesi dağıtma
Bu hızlı başlangıçta, Azure CLI kullanarak kapanım kullanan (DCsv2/DCSv3) VM düğümlerine sahip bir Azure Kubernetes Service (AKS) kümesi dağıtacaksınız. Ardından bir kapanımda basit bir Merhaba Dünya uygulaması çalıştıracaksınız. Ayrıca Azure portalından bir küme sağlayabilir ve gizli bilgi işlem düğümleri ekleyebilirsiniz, ancak bu hızlı başlangıçta Azure CLI'ya odaklanabilirsiniz.
AKS, geliştiricilerin veya küme operatörlerinin kümeleri hızla dağıtıp yönetmesini sağlayan yönetilen bir Kubernetes hizmetidir. Daha fazla bilgi edinmek için AKS'ye giriş ve AKS gizli düğümlerine genel bakış konularını okuyun.
Gizli bilgi işlem düğümlerinin özellikleri şunlardır:
- Linux kapsayıcılarını destekleyen Linux çalışan düğümleri.
- Ubuntu 18.04 VM düğümleriyle 2. nesil sanal makine (VM).
- Şifrelenmiş Sayfa Önbelleği (EPC) belleğinden yararlanarak kapsayıcılarınızı gizlilik korumalı kapanımda çalıştırmaya yardımcı olan Intel SGX özellikli CPU. Daha fazla bilgi için bkz . Azure gizli bilgi işlem hakkında sık sorulan sorular.
- Intel SGX DCAP Sürücüsü gizli bilgi işlem düğümlerine önceden yüklenmiş. Daha fazla bilgi için bkz . Azure gizli bilgi işlem hakkında sık sorulan sorular.
Not
DCsv2/DCsv3 VM'leri, ilgili bölge kullanılabilirliğine sahip özel donanımlar kullanır. Daha fazla bilgi için kullanılabilir SKU'lara ve desteklenen bölgelere bakın.
Önkoşullar
Bu hızlı başlangıç şunları gerektirir:
Aboneliğinizde en az sekiz DCsv2/DCSv3/DCdsv3 çekirdeği kullanılabilir.
Varsayılan olarak, Azure abonelikleriniz için Intel SGX VM boyutları için önceden atanmış bir kota yoktur. Abonelikleriniz için VM çekirdek kotası istemek için bu yönergeleri izlemeniz gerekir.
Kapanım kullanan gizli bilgi işlem düğümleri ve Intel SGX eklentisi ile AKS kümesi oluşturma
Intel SGX eklentisi etkinleştirilmiş bir AKS kümesi oluşturmak, kümeye bir düğüm havuzu eklemek ve hello world enclave uygulamasıyla ne oluşturduğunuzu doğrulamak için aşağıdaki yönergeleri kullanın.
Sistem düğümü havuzu ve AKS Intel SGX Eklentisi ile AKS kümesi oluşturma
Not
Daha önce listelenen önkoşul ölçütlerini karşılayan bir AKS kümeniz zaten varsa, gizli bilgi işlem düğümü havuzu eklemek için sonraki bölüme geçin.
Intel SGX AKS Addon "confcom", pod yaml'nize eklenen değişiklikleri önlemek için Intel SGX cihaz sürücülerini kapsayıcılarınızda kullanıma sunar.
İlk olarak az group create komutunu kullanarak küme için bir kaynak grubu oluşturun . Aşağıdaki örnek, eastus2 bölgesinde myResourceGroup adlı bir kaynak grubu oluşturur:
az group create --name myResourceGroup --location eastus2
Şimdi az aks create komutunu kullanarak gizli bilgi işlem eklentisinin etkinleştirildiği bir AKS kümesi oluşturun :
az aks create -g myResourceGroup --name myAKSCluster --generate-ssh-keys --enable-addons confcom
Yukarıdaki komut, gizli olmayan bilgi işlem düğümü sistem düğümü havuzuna sahip yeni bir AKS kümesi dağıtır. Sistem düğümü havuzları için gizli bilgi işlem Intel SGX düğümleri önerilmez.
AKS kümesine gizli bilgi işlem özelliklerine sahip bir kullanıcı düğümü havuzu ekleme
AKS kümesine üç düğüm içeren boyutta bir kullanıcı düğümü havuzu Standard_DC4s_v3
eklemek için aşağıdaki komutu çalıştırın. Desteklenen DC'lerv2/DCsv3 SKU'ları ve bölgeleri listesinden daha büyük boyutlu başka bir SKU seçebilirsiniz.
az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-vm-size Standard_DC4s_v3 --node-count 2
Komutu çalıştırdıktan sonra, gizli bilgi işlem eklentisi DaemonSets (SGX cihaz eklentisi) ile DCsv3 içeren yeni bir düğüm havuzu görünür olmalıdır.
Düğüm havuzunu ve eklentiyi doğrulama
az aks get-credentials komutunu kullanarak AKS kümenizin kimlik bilgilerini alın:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
kubectl get pods
Düğümlerin düzgün oluşturulduğunu ve DCsv2 düğüm havuzlarında SGX ile ilgili DaemonSet'lerin çalıştığını doğrulamak için komutunu kullanın:
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
Çıkış önceki kodla eşleşiyorsa AKS kümeniz artık gizli uygulamaları çalıştırmaya hazırdır.
Bir uygulamayı bir kapanımda test etmek için bu hızlı başlangıçtaki Yalıtılmış bir kapanım uygulamasından Merhaba Dünya dağıtma bölümüne gidebilirsiniz. Veya AKS'ye daha fazla düğüm havuzu eklemek için aşağıdaki yönergeleri kullanın. (AKS, SGX düğüm havuzlarını ve SGX olmayan düğüm havuzlarını karıştırmayı destekler.)
Mevcut AKS kümesine gizli bilgi işlem düğümü havuzu ekleme
Bu bölümde, bu hızlı başlangıçta daha önce listelenen önkoşul ölçütlerini karşılayan bir AKS kümesi çalıştırdığınız varsayılır.
Mevcut kümede gizli bilgi işlem AKS eklentisini etkinleştirme
Gizli bilgi işlem eklentisini etkinleştirmek için aşağıdaki komutu çalıştırın:
az aks enable-addons --addons confcom --name MyManagedCluster --resource-group MyResourceGroup
Kümeye DCsv3 kullanıcı düğümü havuzu ekleme
Not
Gizli bilgi işlem özelliğini kullanmak için mevcut AKS kümenizin DCsv2/DCsv3 VM SKU'sunu temel alan en az bir düğüm havuzuna sahip olması gerekir. Gizli bilgi işlem için DC-v2/Dcs-v3 VM SKU'ları hakkında daha fazla bilgi edinmek için kullanılabilir SKU'lara ve desteklenen bölgelere bakın.
Düğüm havuzu oluşturmak için aşağıdaki komutu çalıştırın:
az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-count 2 --node-vm-size Standard_DC4s_v3
confcompool1 adlı yeni düğüm havuzunun oluşturulduğunu doğrulayın:
az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup
DaemonSets'in gizli düğüm havuzlarında çalıştığını doğrulayın
Aşağıdaki doğrulamayı gerçekleştirmek için mevcut AKS kümenizde oturum açın:
kubectl get nodes
Çıkışta AKS kümesinde yeni eklenen confcompool1 havuzu gösterilmelidir. Diğer DaemonSet'leri de görebilirsiniz.
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
Çıkış önceki kodla eşleşiyorsa AKS kümeniz artık gizli uygulamaları çalıştırmaya hazırdır.
Yalıtılmış bir kapanım uygulamasından Merhaba Dünya dağıtma
Artık bir test uygulaması dağıtmaya hazırsınız.
hello-world-enclave.yaml adlı bir dosya oluşturun ve aşağıdaki YAML bildirimine yapıştırın. Bu örnek uygulama kodunu Açık Kapanım projesinde bulabilirsiniz. Bu dağıtım, confcom eklentisini dağıttığınız varsayılır.
Not
Aşağıdaki örnek, Docker Hub'dan bir genel kapsayıcı görüntüsü çeker. Anonim çekme isteğinde bulunmak yerine Docker Hub hesabı kullanarak kimlik doğrulaması yapmak için bir çekme gizli dizisi ayarlamanızı öneririz. Genel içerikle çalışırken güvenilirliği artırmak için görüntüyü özel bir Azure kapsayıcı kayıt defterinde içeri aktarın ve yönetin. Genel görüntülerle çalışma hakkında daha fazla bilgi edinin.
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
Alternatif olarak, aşağıda gösterildiği gibi kapsayıcı dağıtımlarınız için düğüm havuzu seçimi dağıtımı da yapabilirsiniz
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
Şimdi komutunu kullanarak kubectl apply
aşağıdaki örnek çıktıda gösterildiği gibi güvenli bir kapanımda açılacak örnek bir iş oluşturun:
kubectl apply -f hello-world-enclave.yaml
job "oe-helloworld" created
Aşağıdaki komutları çalıştırarak iş yükünün başarılı bir Şekilde Güvenilen Yürütme Ortamı (kapanım) oluşturduğunu onaylayabilirsiniz:
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!
Kaynakları temizleme
Bu hızlı başlangıçta oluşturduğunuz gizli bilgi işlem düğümü havuzunu kaldırmak için aşağıdaki komutu kullanın:
az aks nodepool delete --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup
AKS kümesini silmek için aşağıdaki komutu kullanın:
az aks delete --resource-group myResourceGroup --cluster-name myAKSCluster
Sonraki adımlar
ISV/OSS SGX sarmalayıcı yazılımını kullanarak gizli kapsayıcılar aracılığıyla Python, Node veya diğer uygulamaları çalıştırın. GitHub'da gizli kapsayıcı örneklerini gözden geçirin.
GitHub'daki kapanım kullanan Azure kapsayıcı örneklerini kullanarak kapanım kullanan uygulamaları çalıştırın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin