全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan CAA untuk menerapkan confidential containers pada confidential VM di kluster ACK

更新时间:Dec 20, 2025

Pada skenario yang memerlukan confidential computing, seperti industri pengendalian risiko keuangan dan layanan kesehatan, Anda dapat menggunakan Cloud API Adaptor (CAA), juga dikenal sebagai Peer Pods, untuk menerapkan beban kerja dalam lingkungan confidential computing berbasis Intel® Trust Domain Extensions (TDX). Pendekatan ini membantu melindungi data sensitif dari serangan eksternal atau potensi risiko dari penyedia layanan cloud sekaligus memastikan beban kerja memenuhi persyaratan kepatuhan industri.

Intel® TDX adalah teknologi keamanan berbasis perangkat keras CPU yang digunakan oleh Elastic Compute Service (ECS) untuk mengamankan confidential computing. Untuk informasi selengkapnya, lihat Pengenalan TDX.

Ikhtisar fitur

CAA merupakan komponen utama proyek Cloud Native Computing Foundation (CNCF) Confidential Containers. CAA mengintegrasikan confidential computing dengan Kubernetes dengan memanggil operasi API pada platform cloud untuk secara otomatis membuat confidential VM. Confidential VM tersebut berfungsi sebagai sandbox bagi beban kerja dan menyediakan trusted execution environment (TEE) berbasis perangkat keras guna meningkatkan keamanan data runtime. Solusi berbasis CAA ini menawarkan manfaat berikut.

  • Kemudahan penggunaan: CAA menghilangkan kebutuhan untuk memelihara server bare metal dasar atau stack virtualisasi bersarang. Setelah menerapkan CAA di kluster Container Service for Kubernetes (ACK), Anda dapat menggunakan kubectl untuk menerapkan beban kerja rahasia.

  • Keamanan dan kerahasiaan: CAA memungkinkan Anda menjalankan beban kerja pada confidential VM ECS yang dibangun di atas mekanisme enkripsi dan isolasi memori berbasis perangkat keras untuk menjamin integritas dan kerahasiaan data runtime.

  • Kompatibilitas dengan komunitas: ACK berkolaborasi dengan komunitas Confidential Containers untuk mendukung penerapan beban kerja rahasia. Selain itu, ACK memungkinkan transparansi kode agar komunitas dapat melakukan audit secara berkelanjutan.

Anda dapat menerapkan CAA sebagai DaemonSet di kluster ACK. Beban kerja rahasia yang diterapkan akan berjalan di Pod yang dijalankan pada confidential VM, sehingga menjamin keamanan data runtime sepanjang siklus hidup Pod dan melindungi beban kerja dari serangan eksternal. Gambar berikut menunjukkan arsitektur solusi berbasis CAA.

image

Persiapan

  • Confidential computing TDX memiliki beberapa batasan. Pastikan Anda memahami batasan tersebut sebelum menggunakan confidential computing TDX.

  • Sebuah kluster ACK managed Pro telah dibuat. Kluster tersebut harus memenuhi persyaratan berikut. Untuk informasi selengkapnya, lihat Buat kluster ACK managed.

    Parameter

    Deskripsi

    Region dan Zone

    Hanya Zone I di wilayah China (Beijing) dan Zone B di wilayah Singapura yang didukung.

    Untuk membuat vSwitch, lihat Buat dan kelola vSwitch.

    Kubernetes Version

    Hanya versi 1.34 yang didukung.

    Untuk meningkatkan kluster ACK Anda, lihat Tingkatkan kluster secara manual.

    Network Plug-in

    Pilih Flannel.

    Configure SNAT for VPC

    Pilih kotak centang ini. Fitur ini memungkinkan kluster mengakses Internet.

    Anda juga dapat mengaktifkan fitur ini untuk kluster ACK yang sudah ada. Untuk informasi selengkapnya, lihat Aktifkan kluster ACK yang sudah ada untuk mengakses Internet.

    RRSA OIDC

    Pilih Aktifkan. Fitur RAM Roles for Service Accounts (RRSA) memungkinkan Anda membatasi izin untuk melakukan operasi API pada volume OSS tertentu. Hal ini memungkinkan Anda mengatur akses ke sumber daya cloud secara detail halus dan meningkatkan keamanan kluster.

    Anda juga dapat mengaktifkan fitur ini untuk kluster ACK yang sudah ada. Untuk informasi selengkapnya, lihat Gunakan RRSA untuk mengotorisasi Pod berbeda mengakses layanan cloud berbeda.

    Setelah mengaktifkan fitur ini, rujuk ke Dapatkan informasi URL dan ARN untuk memperoleh Alibaba Cloud Resource Name (ARN) penyedia OpenID Connect (OIDC) guna autentikasi.

Langkah 1: Konfigurasikan RRSA

Untuk memungkinkan CAA mengelola dan mengonfigurasi confidential VM, Anda harus menetapkan identitas (peran RAM) dan memberikan izin yang diperlukan (kebijakan RAM) kepada CAA. Bagian ini menjelaskan cara mengotorisasi akun layanan yang digunakan oleh Cloud API Adaptor untuk mengelola instance ECS dan virtual private cloud (VPC). Hal ini memerlukan kontrol izin spesifik per Pod.

1. Buat peran RAM

Rujuk ke Buat peran RAM untuk IdP tepercaya untuk membuat peran RAM. Dalam contoh ini, peran RAM diberi nama ack-caa-demo. Tabel berikut menjelaskan parameter utama peran RAM tersebut.

Parameter

Deskripsi

Identity Provider Type

Pilih OIDC.

Identity Provider

Pilih ack-rrsa-<CLUSTER_ID>. <CLUSTER_ID> menunjukkan ID kluster Anda.

Condition

  • oidc:iss: Gunakan nilai default.

  • oidc:aud: Gunakan nilai default.

  • oidc:sub: Tambahkan kondisi ini secara manual untuk menentukan akun layanan yang perlu mengasumsikan peran RAM. Dalam contoh ini, akun layanan yang digunakan oleh Cloud API Adaptor berada di namespace confidential-containers-system.

    • Kunci: Pilih oidc:sub.

    • Operator: Pilih StringEquals.

    • Nilai: Masukkan system:serviceaccount:confidential-containers-system:cloud-api-adaptor.

Role Name

Tetapkan nama peran menjadi ack-caa-demo.

Setelah membuat peran, buka halaman detail peran dan catat ARN peran tersebut di bagian Basic Information untuk autentikasi.

2. Buat kebijakan RAM

  1. Gunakan skrip berikut untuk membuat kebijakan ack-caa-policy yang memberikan izin untuk mengakses ECS dan VPC. Untuk informasi selengkapnya, lihat Buat kebijakan kustom.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ecs:RunInstances",
            "ecs:DeleteInstance",
            "ecs:DescribeInstanceAttribute",
            "ecs:CreateNetworkInterface",
            "ecs:DeleteNetworkInterface",
            "ecs:AttachNetworkInterface",
            "ecs:ModifyNetworkInterfaceAttribute",
            "ecs:DescribeNetworkInterfaceAttribute"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "vpc:DescribeVSwitchAttributes",
            "vpc:AllocateEipAddress",
            "vpc:ReleaseEipAddress",
            "vpc:AssociateEipAddress",
            "vpc:UnassociateEipAddress",
            "vpc:DescribeEipAddresses"
          ],
          "Resource": "*"
        }
      ]
    }
  2. Lampirkan kebijakan ack-caa-policy ke peran RAM yang telah Anda buat. Untuk informasi selengkapnya, lihat Berikan izin kepada peran RAM.

Langkah 2: Buat kelompok node dan konfigurasikan aturan grup keamanan kelompok node

Buat kelompok node yang digunakan untuk menerapkan controller CAA. Konfigurasikan aturan grup keamanan kelompok node untuk membuka port yang digunakan oleh CAA.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang akan dikelola lalu klik namanya. Di panel navigasi kiri, pilih Nodes > Node Pools.

  3. Klik Create Node Pool dan lengkapi konfigurasi kelompok node sesuai petunjuk di layar.

    Tabel berikut hanya menjelaskan parameter utama. Untuk informasi selengkapnya tentang parameter kelompok node, lihat Buat dan kelola kelompok node.

    Parameter

    Deskripsi

    Configure Managed Node Pool

    Pilih Disable.

    vSwitch

    Pilih vSwitch di bawah Zone yang didukung. Node di Zone I ditambahkan ke kelompok node.

    Operating System

    Pilih Ubuntu 22.04 64-bit.

    Expected Nodes

    Jumlah awal node di kelompok node. Anda harus menentukan setidaknya satu node.

    Bentangkan Advanced Options (Optional) untuk mengonfigurasi pengaturan lanjutan.

    Node Labels

    Tambahkan label berikut untuk memfasilitasi penjadwalan controller CAA.

    • Tetapkan kunci menjadi node.kubernetes.io/worker.

    • Biarkan nilai kosong.

  4. Buka halaman Node Pools dan klik nama kelompok node yang telah Anda buat. Di halaman detail kelompok node, klik tab Overview. Di bagian Node Pool Information, klik ID grup keamanan untuk membuka halaman detail grup keamanan.

  5. Di tab Inbound, klik Add Rule untuk menambahkan aturan berikut.

    Protocol

    Source

    Destination

    Deskripsi

    Custom TCP

    Current VPC CIDR Block

    15150

    Mengaktifkan komponen CAA untuk berkomunikasi dengan confidential VM.

    Custom UDP

    Current VPC CIDR Block

    4789

    Mengaktifkan manajemen jaringan berdasarkan Virtual Extensible Local Area Network (VXLAN).

Langkah 3: Terapkan CAA

Terapkan komponen utama berikut:

  • Operator Confidential Containers (CoCo): Komponen ini secara otomatis menerapkan dan mengelola lingkungan runtime tempat confidential container dijalankan, seperti Kata Remote Runtime dari Kata Containers.

  • DaemonSet CAA: CAA diterapkan pada node sebagai DaemonSet dan secara dinamis membuat confidential VM sebagai node runtime untuk Pod berdasarkan persyaratan penjadwalan Pod di kluster.

1. Instal CoCo Operator

Jalankan perintah berikut untuk menginstal CoCo Operator:

Perintah instalasi

mkdir -p kustomize && cd kustomize
mkdir release && mkdir -p ccruntime/peer-pods

cat <<EOF > release/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- "github.com/confidential-containers/operator/config/release?ref=v0.17.0"

images:
- name: quay.io/confidential-containers/operator
  newName: registry-cn-hangzhou.ack.aliyuncs.com/dev/coco-operator
EOF

cat <<EOF > ccruntime/peer-pods/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- "github.com/confidential-containers/operator/config/samples/ccruntime/peer-pods?ref=v0.17.0"

images:
- name: quay.io/confidential-containers/reqs-payload
  newName: registry-cn-hangzhou.ack.aliyuncs.com/dev/coco-reqs-payload
- name: quay.io/kata-containers/kata-deploy-ci
  newName: registry-cn-hangzhou.ack.aliyuncs.com/dev/coco-kata-deploy-ci
- name: quay.io/kata-containers/kata-deploy
  newName: registry-cn-hangzhou.ack.aliyuncs.com/dev/coco-kata-deploy
EOF

kubectl apply -k release
kubectl apply -k ccruntime/peer-pods

2. Terapkan DaemonSet CAA

  1. Unduh kode sumber proyek.

    git clone https://github.com/confidential-containers/cloud-api-adaptor.git -b v0.17.0
    cd cloud-api-adaptor
  2. Ubah konfigurasi di src/cloud-api-adaptor/install/overlays/alibabacloud/kustomization.yaml.

    Parameter

    Deskripsi

    newTag

    Tag versi gambar kontainer untuk DaemonSet CAA. Ubah nilai ini menjadi v0.17.0-alibaba-alpha0.

    SECURITY_GROUP_IDS

    ID grup keamanan. Tetapkan nilai ini ke ID grup keamanan kelompok node yang dibuat di Langkah 2.

    VSWITCH_ID

    ID vSwitch. Tetapkan nilai ini ke ID vSwitch yang digunakan oleh kelompok node yang dibuat di Langkah 2.

    IMAGEID

    ID citra VM yang digunakan untuk meluncurkan instance di kelompok node.

    • China (Beijing): Ubah nilai ini menjadi m-2zef6zaa0j0qz3sunhjp.

    • Singapura: Ubah nilai ini menjadi m-t4n9ocuen5sy6rhbxbk1.

  3. Buat file src/cloud-api-adaptor/install/overlays/alibabacloud/alibabacloud-cred.env untuk mengonfigurasi informasi autentikasi. Kode berikut menunjukkan isi file tersebut:

    Ganti <role_arn> dengan ARN peran RAM dan <provider_arn> dengan ARN penyedia RRSA OIDC.

    ALIBABA_CLOUD_ROLE_ARN=<role_arn>
    ALIBABA_CLOUD_OIDC_PROVIDER_ARN=<provider_arn>
    ALIBABA_CLOUD_OIDC_TOKEN_FILE=/var/run/secrets/ack.alibabacloud.com/rrsa-tokens/token
  4. Terapkan beban kerja CAA.

    kubectl apply -k src/cloud-api-adaptor/install/overlays/alibabacloud

    Tunggu 3 menit dan periksa progres penerapan.

    kubectl -n confidential-containers-system get pod 

    Output yang diharapkan:

    NAME                                              READY   STATUS    RESTARTS   AGE
    cc-operator-controller-manager-5d79465b47-d8s2k   1/1     Running   0          2m11s
    cc-operator-daemon-install-trlvt                  1/1     Running   0          108s
    cc-operator-pre-install-daemon-qpvzw              1/1     Running   0          117s
    cloud-api-adaptor-daemonset-46spp                 1/1     Running   0          92s

    Jika cc-operator-* dan cloud-api-adaptor-daemonset-* ditampilkan dalam output dan berada dalam status Running, beban kerja CAA telah berhasil diterapkan.

Langkah 4: Terapkan aplikasi

Lakukan operasi berikut untuk menerapkan aplikasi. Dalam konfigurasi aplikasi, pengaturan runtimeClassName: kata-remote menentukan runtime confidential container. Saat Pod dijadwalkan, Kata Remote memicu CAA untuk secara dinamis membuat confidential VM TDX.

Penting

Sebelum menghapus kluster, pastikan semua beban kerja dengan runtimeClassName: kata-remote telah dihapus untuk mencegah sisa sumber daya confidential VM yang dibuat oleh CAA.

  1. Gunakan templat YAML berikut untuk membuat file pod-caa-demo.yaml, yang digunakan untuk membuat Pod yang menggunakan runtime confidential container.

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-caa-demo
    spec:
      runtimeClassName: kata-remote
      containers:
        - image: alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
          name: hello
          command:
          - sh
          - -c
          - 'echo hello && sleep infinity'
  2. Terapkan file pod-caa-demo.yaml.

    kubectl apply -f pod-caa-demo.yaml

    Tunggu 3 menit dan periksa progres penerapan.

    kubectl get pod pod-caa-demo

    Output yang diharapkan:

    NAME           READY   STATUS    RESTARTS   AGE
    pod-caa-demo   1/1     Running   0          52s
  3. Masuk ke ECS console. Di panel navigasi kiri, klik Instances. Jika terdapat confidential VM TDX yang namanya diawali dengan podvm-, berarti CAA telah membuat sumber daya komputasi dasar untuk aplikasi tersebut.

FAQ

Mengapa hanya Pod cc-operator-controller-manager yang berjalan setelah saya menjalankan kubectl -n confidential-containers-system get pod?

Kemungkinan penyebab

Node pekerja Anda mungkin tidak memiliki label yang diperlukan. Tanpa label tersebut, penjadwal Kubernetes tidak dapat menempatkan Pod terkait ke node, sehingga Pod tetap dalam status Pending dan tidak langsung muncul.

Solusi
  1. Periksa label saat ini pada node pekerja Anda.

    kubectl get nodes --show-labels
  2. Tambahkan label yang diperlukan ke node target Anda.

    for NODE_NAME in $(kubectl get nodes -o jsonpath='{.items[*].metadata.name}'); do
      kubectl label node $NODE_NAME node.kubernetes.io/worker=
    done
  3. Tunggu satu hingga dua menit agar penjadwal menempatkan Pod, lalu periksa statusnya kembali.

    kubectl -n confidential-containers-system get pod

Referensi

Hubungi kami

Jika Anda memiliki pertanyaan atau saran mengenai ACK, bergabunglah dengan grup DingTalk 30521601 untuk menghubungi kami.