Aracılığıyla paylaş


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