Mulai cepat: Menyebarkan kluster AKS dengan simpul agen Intel SGX komputasi rahasia dengan menggunakan Azure CLI

Pada mulai cepat ini, Anda akan menggunakan Azure CLI untuk menyebarkan kluster Azure Kubernetes Service (AKS) dengan simpul mesin virtual enclave-aware (DCsv2/DCSv3). Anda kemudian akan menjalankan aplikasi Halo Dunia sederhana di enklave. Anda juga dapat memprovisikan kluster dan menambahkan simpul komputasi rahasia dari portal Microsoft Azure, tetapi mulai cepat ini berfokus pada Azure CLI.

AKS adalah layanan Kubernetes terkelola yang memungkinkan pengembang atau operator kluster untuk dengan cepat menyebarkan dan mengelola kluster. Untuk mempelajari lebih lanjut, baca pengantar AKS dan ringkasan simpul rahasia AKS.

Fitur simpul komputasi rahasia meliputi:

  • Simpul pekerja Linux yang mendukung kontainer Linux.
  • Komputer virtual generasi 2 (VM) dengan simpul komputer virtual Ubuntu 18.04.
  • CPU berkemampuan Intel SGX untuk membantu menjalankan kontainer Anda dalam enklave rahasia terlindungi yang memanfaatkan Memori Cache Halaman Terenkripsi (EPC). Untuk mengetahui informasi selengkapnya, lihat Tanya jawab umum untuk komputasi rahasia Azure.
  • Driver Intel SGX DCAP yang telah dipasang sebelumnya pada simpul komputasi rahasia. Untuk mengetahui informasi selengkapnya, lihat Tanya jawab umum untuk komputasi rahasia Azure.

Catatan

VM DCsv2/DCsv3 menggunakan perangkat keras khusus yang menjadi ketersediaan wilayah subjek. Untuk mengetahui informasi selengkapnya, lihat SKU yang tersedia dan wilayah yang didukung.

Prasyarat

Mulai cepat ini membutuhkan:

  • Minimal delapan inti DCsv2/DCSv3/DCdsv3 tersedia dalam langganan Anda.

    Secara default, tidak ada kuota yang telah ditetapkan sebelumnya untuk ukuran VM Intel SGX untuk langganan Azure Anda. Anda harus mengikuti instruksi ini untuk meminta kuota inti VM untuk langganan Anda.

Membuat kluster AKS dengan simpul komputasi rahasia yang sadar enklave dan add-on Intel SGX

Gunakan instruksi berikut untuk membuat kluster AKS dengan add-on Intel SGX diaktifkan, menambahkan kumpulan simpul ke kluster, dan memverifikasi apa yang Anda buat dengan aplikasi hello world enclave.

Membuat kluster AKS dengan kumpulan simpul sistem dan Addon AKS Intel SGX

Catatan

Jika Anda sudah memiliki kluster AKS yang memenuhi kriteria prasyarat yang tercantum sebelumnya, lompat ke bagian berikutnya untuk menambahkan kumpulan simpul komputasi rahasia.

Intel SGX AKS Addon "confcom" mengekspos driver perangkat Intel SGX ke kontainer Anda untuk menghindari perubahan tambahan pada yaml pod Anda.

Pertama, buat grup sumber daya untuk kluster dengan perintah az group create. Contoh berikut membuat grup sumber daya bernama myResourceGroup di wilayah eastus2 :

az group create --name myResourceGroup --location eastus2

Sekarang buat kluster AKS, dengan add-on komputasi rahasia yang diaktifkan, dengan menggunakan perintah az aks create:

az aks create -g myResourceGroup --name myAKSCluster --generate-ssh-keys --enable-addons confcom

Perintah di atas akan menyebarkan kluster AKS baru dengan kumpulan simpul sistem dari simpul komputasi non-rahasia. Simpul Intel SGX komputasi rahasia tidak disarankan untuk kumpulan simpul sistem.

Menambahkan kumpulan simpul pengguna dengan kemampuan komputasi rahasia ke kluster AKS

Jalankan perintah berikut untuk menambahkan kumpulan simpul pengguna berukuran Standard_DC4s_v3 dengan tiga simpul ke kluster AKS. Anda dapat memilih SKU berukuran lebih besar lainnya dari daftar SKU dan wilayah DCsv2/DCsv3 yang didukung.

az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-vm-size Standard_DC4s_v3 --node-count 2

Setelah Anda menjalankan perintah, kumpulan simpul baru dengan DCsv3 harus terlihat dengan add-on komputasi rahasia DaemonSets (plug-in perangkat SGX).

Memverifikasi kumpulan simpul dan add-on

Dapatkan kredensial untuk kluster AKS Anda dengan perintah az aks get-credentials:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Gunakan perintah kubectl get pods untuk memverifikasi bahwa simpul dibuat dengan benar dan DaemonSets yang terkait SGX berjalan pada kumpulan simpul DCsv2:

kubectl get pods --all-namespaces
kube-system     sgx-device-plugin-xxxx     1/1     Running

Jika output cocok dengan kode sebelumnya, kluster AKS Anda sekarang siap untuk menjalankan aplikasi rahasia.

Anda dapat menuju ke bagian Menyebarkan Halo Dunia dari aplikasi enklave terisolasi di mulai cepat ini untuk menguji aplikasi di enklave. Atau gunakan instruksi berikut untuk menambahkan lebih banyak kumpulan simpul pada AKS. (AKS mendukung pencampuran kumpulan simpul SGX dan kumpulan simpul non-SGX.)

Menambahkan kumpulan simpul komputasi rahasia ke kluster AKS yang ada

Bagian ini mengasumsikan Anda sudah menjalankan kluster AKS yang memenuhi kriteria prasyarat yang tercantum sebelumnya dalam mulai cepat ini.

Mengaktifkan add-on komputasi rahasia AKS pada kluster yang ada

Jalankan perintah berikut untuk mengaktifkan add-on komputasi rahasia:

az aks enable-addons --addons confcom --name MyManagedCluster --resource-group MyResourceGroup

Menambahkan kumpulan simpul pengguna DCsv3 ke kluster

Catatan

Untuk menggunakan kemampuan komputasi rahasia, kluster AKS Anda yang sudah ada harus memiliki minimal satu kumpulan simpul yang didasarkan pada SKU VM DCsv2/DCsv3. Untuk mempelajari selengkapnya tentang SKU VM DCs-v2/Dcs-v3 untuk komputasi rahasia, lihat SKU yang tersedia dan wilayah yang didukung.

Jalankan perintah berikut untuk membuat kumpulan simpul:

az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-count 2 --node-vm-size Standard_DC4s_v3

Verifikasi bahwa kumpulan simpul baru dengan nama confcompool1 telah dibuat:

az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup

Verifikasi bahwa DaemonSets berjalan pada kumpulan simpul rahasia

Masuk ke kluster AKS yang sudah ada untuk melakukan verifikasi berikut:

kubectl get nodes

Output harus menampilkan kumpulan confcompool1 yang baru ditambahkan pada kluster AKS. Anda juga dapat melihat DaemonSets lainnya.

kubectl get pods --all-namespaces
kube-system     sgx-device-plugin-xxxx     1/1     Running

Jika output cocok dengan kode sebelumnya, kluster AKS Anda sekarang siap untuk menjalankan aplikasi rahasia.

Menyebarkan Halo Dunia dari aplikasi enklave terisolasi

Anda sekarang siap untuk menyebarkan aplikasi pengujian.

Buat file bernama hello-world-enclave.yaml dan tempelkan dalam manifes YAML berikut. Anda dapat menemukan contoh kode aplikasi ini di proyek Enklave Terbuka. Penyebaran ini mengasumsikan bahwa Anda telah menyebarkan add-on confcom.

Catatan

Contoh berikut menarik gambar kontainer publik dari Docker Hub. Sebaiknya Anda menyiapkan rahasia penarikan untuk diautentikasi menggunakan akun Docker Hub alih-alih membuat permintaan penarikan anonim. Untuk meningkatkan keandalan saat bekerja dengan konten publik, impor dan kelola gambar di registri kontainer Azure privat. Pelajari lebih lanjut bekerja dengan gambar publik.

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

Atau Anda juga dapat melakukan penyebaran pemilihan kumpulan simpul untuk penyebaran kontainer Anda seperti yang ditunjukkan di bawah ini

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

Sekarang gunakan perintah kubectl apply untuk membuat contoh pekerjaan yang akan terbuka di enklave yang aman, seperti yang ditunjukkan dalam contoh output berikut:

kubectl apply -f hello-world-enclave.yaml
job "oe-helloworld" created

Anda dapat mengonfirmasi bahwa beban kerja berhasil membuat Trusted Execution Environment (enklave) dengan menjalankan perintah berikut:

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!

Membersihkan sumber daya

Untuk menghapus kumpulan simpul komputasi rahasia yang Anda buat dalam mulai cepat ini, gunakan perintah berikut:

az aks nodepool delete --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup

Untuk menghapus kluster AKS, gunakan perintah berikut:

az aks delete --resource-group myResourceGroup --cluster-name myAKSCluster

Langkah berikutnya