全部产品
Search
文档中心

Container Service for Kubernetes:Secara aman menerapkan layanan inferensi vLLM dalam kluster komputasi rahasia heterogen ACK

更新时间:Sep 16, 2025

Inferensi Large Language Model (LLM) melibatkan data sensitif dan aset model inti yang berisiko terpapar saat dijalankan di lingkungan tidak tepercaya. Container Service for Kubernetes (ACK) Confidential AI (ACK-CAI) menyediakan keamanan ujung ke ujung untuk inferensi model dengan mengintegrasikan teknologi komputasi rahasia berbasis perangkat keras seperti Intel Trust Domain Extensions (TDX) dan Lingkungan Eksekusi Tepercaya GPU (TEE).

ACK-CAI memungkinkan Anda menerapkan layanan inferensi vLLM dalam kluster komputasi rahasia heterogen ACK, memberikan isolasi aman dan perlindungan terenkripsi untuk model dan data Anda. Keuntungan utama:

  • Isolasi keamanan tingkat perangkat keras: Membangun TEE berbasis perangkat keras menggunakan Intel® TDX dan NVIDIA GPU TEE, memastikan kerahasiaan dan integritas model serta data selama komputasi.

  • Distribusi kunci tepercaya: Menggunakan mekanisme verifikasi jarak jauh untuk secara ketat memverifikasi integritas lingkungan eksekusi. Hanya setelah verifikasi berhasil, layanan trustee terpisah akan melepaskan kunci dekripsi model ke lingkungan tepercaya.

  • Enkripsi data ujung ke ujung: Membangun saluran terenkripsi dari klien ke server melalui Gateway Jaringan Tepercaya (TNG), melindungi permintaan dan tanggapan inferensi selama transmisi.

  • Tidak mengganggu aplikasi: Secara otomatis menyuntikkan komponen keamanan ke dalam pod menggunakan webhook Kubernetes. Anda dapat mengaktifkan kemampuan komputasi rahasia untuk aplikasi Anda dengan anotasi sederhana tanpa memerlukan perubahan pada kode bisnis atau gambar kontainer.

Cara kerjanya

ACK-CAI memungkinkan kemampuan komputasi rahasia transparan dengan menyuntikkan secara dinamis serangkaian kontainer sidecar bernama Trustiflux ke dalam pod aplikasi Anda. Mekanisme keamanan inti didasarkan pada verifikasi jarak jauh, yang memastikan bahwa model dan data hanya diakses dalam lingkungan tepercaya yang diverifikasi.

Komponen inti

  1. Kluster komputasi rahasia heterogen ACK: Kluster Kubernetes yang dibangun di atas instans rahasia TDX dan kemampuan komputasi rahasia GPU.

  2. Layanan verifikasi jarak jauh Trustee: Memverifikasi keandalan lingkungan eksekusi dan mendistribusikan kunci dekripsi model setelah verifikasi berhasil.

  3. Runtime Trustiflux: Komponen runtime komputasi rahasia yang disampaikan sebagai sidecar, mencakup modul inti berikut:

    • Agen Verifikasi (AA): Melakukan verifikasi jarak jauh dan mengambil kunci dekripsi.

    • Hub Data Rahasia (CDH): Menangani dekripsi data terenkripsi.

    • Server TNG: Membangun saluran komunikasi aman untuk layanan.

    • Cachefs: Menyediakan dukungan dasar untuk dekripsi model.

  4. Layanan inferensi: Kontainer yang bertanggung jawab menjalankan tugas inferensi LLM sebenarnya.

  5. Program inferensi: Aplikasi sisi klien yang digunakan untuk mengakses layanan inferensi model.

  6. Klien TNG: Membangun saluran komunikasi aman dengan kluster untuk memastikan keamanan komunikasi.

Mekanisme keamanan inti

  • Distribusi model terenkripsi dengan verifikasi jarak jauh:

    1. Saat pod dimulai, AA di sidecar mengirim permintaan ke layanan verifikasi jarak jauh trustee.

    2. Layanan trustee memverifikasi integritas lingkungan rahasia untuk CPU (TDX) dan GPU.

    3. Setelah verifikasi, layanan trustee mendistribusikan kunci dekripsi model ke pod secara aman.

    4. CDH dan Cachefs di sidecar menggunakan kunci ini untuk mendekripsi file model terenkripsi, yang kemudian dipasang pada kontainer layanan inferensi.

  • Inferensi terenkripsi ujung ke ujung dengan verifikasi jarak jauh:

    1. Program inferensi pengguna akhir mengirim permintaan melalui Klien TNG lokal.

    2. Permintaan tetap terenkripsi selama transitnya untuk mencegah serangan man-in-the-middle.

    3. Di server, permintaan didekripsi oleh modul TNG di sidecar sebelum diteruskan ke layanan inferensi.

    4. Hasil inferensi kemudian dienkripsi oleh TNG dan dikembalikan secara aman ke klien.

Proses dan panduan lingkungan

Menerapkan dan mengakses layanan inferensi vLLM yang aman melibatkan tahapan berikut:

Langkah

Tujuan

Lingkungan

Langkah 1: Persiapkan model terenkripsi

Enkripsi model inferensi dan unggah ke Layanan Penyimpanan Objek (OSS) untuk memastikan kerahasiaannya saat diam.

Server terpisah untuk persiapan data.

Langkah 2: Terapkan layanan verifikasi jarak jauh trustee

Terapkan layanan trustee mandiri untuk bertindak sebagai akar kepercayaan untuk memverifikasi lingkungan dan mendistribusikan kunci.

Server trustee terpisah.

Langkah 3: Konfigurasikan kluster komputasi rahasia ACK

Buat dan konfigurasikan node Kubernetes untuk menjalankan tugas komputasi rahasia.

  • Konsol ACK dan Konsol Elastic Compute Service (ECS)

  • Lingkungan shell instance ecs.gn8v-tee

Langkah 4: Terapkan komponen ACK-CAI

Instal komponen CAI di kluster untuk mengaktifkan penyuntikan dinamis kemampuan keamanan.

Konsol ACK

Langkah 5: Terapkan layanan vLLM

Terapkan layanan vLLM ke kluster menggunakan Helm dan aktifkan perlindungan komputasi rahasia dengan anotasi.

Mesin dengan kubectl dan Helm yang dikonfigurasi, serta terhubung ke server API.

Langkah 6: Akses layanan inferensi secara aman

Mulai proxy keamanan sisi klien untuk mengakses layanan model yang diterapkan melalui saluran terenkripsi.

Lingkungan klien

Langkah 1: Persiapkan model terenkripsi

Langkah ini mencakup cara mengenkripsi data model Anda dan mengunggahnya ke OSS sebagai persiapan untuk distribusi yang aman.

Lingkungan eksekusi: Untuk memastikan keamanan, lakukan langkah-langkah ini pada instans ECS sementara dan terisolasi. Untuk performa optimal, instans ini harus berada di wilayah yang sama dengan bucket OSS Anda untuk memanfaatkan unggahan jaringan internal berkecepatan tinggi.
File model besar, dan proses ini bisa memakan waktu lama. Untuk menguji solusi dengan cepat, Anda dapat melewati langkah ini. Gunakan file model terenkripsi contoh dan lanjutkan ke Langkah 2: Terapkan layanan verifikasi jarak jauh trustee.

1. Unduh model

Sebelum menerapkan model, Anda harus terlebih dahulu mengenkripsinya, lalu mengunggahnya ke penyimpanan cloud. Kunci untuk mendekripsi model akan dihosting oleh KMS, dikendalikan oleh layanan verifikasi jarak jauh. Lakukan operasi enkripsi model di lingkungan lokal atau tepercaya. Solusi ini menunjukkan cara menerapkan Qwen2.5-3B-Instruct sebagai contoh.

Catatan

Jika Anda sudah memiliki model, Anda tidak perlu mengunduh satu lagi. Lewati ke 2. Enkripsi model.

Jalankan perintah berikut di terminal gunakan alat ModelScope untuk mengunduh Qwen2.5-3B-Instruct(memerlukan Python 3.9 atau lebih tinggi).

pip3 install modelscope importlib-metadata
modelscope download --model Qwen/Qwen2.5-3B-Instruct

Perintah ini akan mengunduh model ke ~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/.

2. Enkripsi model

Solusi ini mendukung enkripsi model menggunakan mode enkripsi gocryptfs, yang didasarkan pada standar AES-256-GCM open-source.

  1. Instal alat Gocryptfs; saat ini hanya Gocryptfs V2.4.0 dengan parameter default yang didukung. Pilih salah satu metode instalasi berikut:

    Metode 1: (Direkomendasikan) Instal dari sumber yum

    Jika Anda menggunakan Alinux3 atau AnolisOS 23 sistem operasi, Anda dapat menginstal gocryptfs menggunakan sumber yum.

    Alinux 3
    sudo yum install gocryptfs -y
    AnolisOS 23
    sudo yum install anolis-epao-release -y
    sudo yum install gocryptfs -y

    Metode 2: Unduh binari pra-kompilasi langsung

    # Unduh paket Gocryptfs pra-kompilasi
    wget https://github.jobcher.com/gh/https://github.com/rfjakob/gocryptfs/releases/download/v2.4.0/gocryptfs_v2.4.0_linux-static_amd64.tar.gz
    
    # Ekstrak dan instal
    tar xf gocryptfs_v2.4.0_linux-static_amd64.tar.gz
    sudo install -m 0755 ./gocryptfs /usr/local/bin
  2. Buat file kunci Gocryptfs sebagai kunci untuk enkripsi model. Di langkah selanjutnya, Anda perlu mengunggah kunci ini ke Trustee.

    Dalam solusi ini, alibaba@1688 adalah kunci untuk enkripsi, dan akan disimpan dalam file cachefs-password. Anda juga dapat menyesuaikan kunci. Namun, dalam praktiknya, sebaiknya gunakan kunci kuat yang dihasilkan secara acak.

    cat << EOF > ~/cachefs-password
    alibaba@1688
    EOF
  3. Gunakan kunci untuk mengenkripsi model.

    1. Konfigurasikan jalur model teks biasa.

      Catatan

      Konfigurasikan jalur model teks biasa yang baru saja Anda unduh, atau ganti dengan jalur model Anda sendiri.

      PLAINTEXT_MODEL_PATH=~/.cache/modelscope/hub/models/Qwen/Qwen2.5-3B-Instruct/
    2. Gunakan Gocryptfs untuk mengenkripsi struktur direktori model.

      Setelah enkripsi, model akan disimpan dalam bentuk terenkripsi di direktori ./cipher.

      mkdir -p ~/mount
      cd ~/mount
      mkdir -p cipher plain
      
      # Instal dependensi runtime Gocryptfs
      sudo yum install -y fuse
      
      # inisialisasi gocryptfs
      cat ~/cachefs-password | gocryptfs -init cipher
      
      # mount ke plain
      cat ~/cachefs-password | gocryptfs cipher plain
      
      # pindahkan model AI ke ~/mount/plain
      cp -r ${PLAINTEXT_MODEL_PATH} ~/mount/plain

3. Unggah model

Siapkan bucket OSS yang berada di wilayah yang sama dengan instans heterogen yang akan digunakan. Unggah model terenkripsi ke bucket OSS tersebut. Dengan langkah ini, Anda dapat menarik dan menerapkan data model dari instans heterogen untuk operasi berikutnya.

Lihat panduan Mulai menggunakan konsol OSS untuk membuat ruang penyimpanan (bucket) dan direktori bernama

Lihat panduan Mulai menggunakan konsol OSS untuk membuat ruang penyimpanan (bucket) dan direktori bernama qwen-encrypted (misalnya, oss://examplebucket/qwen-encrypted/). Karena ukuran file model yang besar, disarankan menggunakan ossbrowser untuk mengunggah model terenkripsi ke direktori ini.

Langkah 2: Terapkan layanan verifikasi jarak jauh trustee

Mengikuti prinsip Zero Trust, lingkungan komputasi rahasia apa pun harus diverifikasi sebelum dapat mengakses data sensitif, seperti kunci dekripsi model.

Layanan trustee mandiri, yang akan Anda terapkan dalam langkah ini, bertindak sebagai otoritas pusat untuk proses verifikasi ini. Ini bertanggung jawab untuk:

  • Memverifikasi lingkungan eksekusi model dan layanan inferensi.

  • Memastikan bahwa kunci dekripsi model dirilis hanya ke lingkungan tepercaya yang diverifikasi.

  • Mengizinkan klien untuk mengonfirmasi keandalan layanan saat memulai permintaan inferensi.

Lingkungan eksekusi: Server khusus yang diterapkan di luar kluster ACK, seperti instans ECS atau server lokal.

1. Pilih solusi penerapan

Berdasarkan tingkat kepercayaan yang Anda butuhkan, pilih di antara solusi berikut:

  • Instans ECS

    Menerapkan layanan trustee pada instans ECS terpisah dalam VPC yang sama memberikan isolasi logis dan komunikasi jaringan internal yang cepat dan aman dengan kluster ACK Anda.

  • Server lokal

    Untuk keamanan maksimal, terapkan layanan trustee di pusat data Anda dan hubungkan ke virtual private cloud (VPC) Anda melalui jalur sewa atau VPN. Ini memastikan bahwa Anda memiliki kontrol penuh atas lingkungan perangkat keras dan perangkat lunak akar kepercayaan, independen dari penyedia cloud.

Sebelum Anda mulai, pastikan server memiliki akses Internet yang diaktifkan, dan port 8081 terbuka.

2. Terapkan layanan trustee

  1. Instal paket RPM trustee dari repositori YUM resmi (tersedia di Alibaba Cloud Linux 3.x dan Anolis 8.x+).

    yum install trustee-1.5.2

    Layanan akan mulai secara otomatis dan mendengarkan di port 8081. Anda dapat mengaksesnya langsung melalui jaringan menggunakan URL http://<trustee-ip>:8081/api.

    Ganti <trustee-ip> dengan alamat IP server tempat trustee diterapkan.
    Untuk lingkungan produksi, konfigurasikan akses HTTPS untuk trustee untuk meningkatkan keamanan.
  2. Verifikasi kesehatan layanan.

    Jalankan sudo yum install -y jq untuk menginstal alat jq.
    # Ganti <trustee-ip> dengan alamat IP server trustee
    curl http://<trustee-ip>:8081/api/services-health | jq

    Tanggapan sukses akan menampilkan status semua komponen sebagai ok.

    {
      "gateway": {
        "status": "ok",
        "timestamp": "2025-08-26T13:46:13+08:00"
      },
      "kbs": {
        "status": "ok",
        "timestamp": "2025-08-26T13:46:13+08:00"
      },
      "as": {
        "status": "ok",
        "timestamp": "2025-08-26T13:46:13+08:00"
      },
      "rvps": {
        "status": "ok",
        "timestamp": "2025-08-26T13:46:13+08:00"
      }
    }

Perintah manajemen umum

Layanan trustee dikelola oleh systemd. Anda dapat menggunakan perintah systemctl untuk mengelola siklus hidupnya. Operasi umum meliputi:

  • Mulai layanan: systemctl start trustee

  • Hentikan layanan: systemctl stop trustee

  • Mulai ulang layanan: systemctl restart trustee

  • Lihat status: systemctl status trustee

3. Impor kunci dekripsi model ke instans trustee

Setelah layanan Trustee diterapkan, Anda harus menyediakannya dengan kunci dekripsi model. Kunci ini diperlukan untuk proses verifikasi jarak jauh dan distribusi kunci aman.

Trustee mengelola kunci dengan memetakan jalur file lokal ke ID sumber daya. Langkah-langkah berikut membuat dan mengimpor kunci dekripsi model di folder penyimpanan default.

  1. Buat direktori dan file untuk menyimpan kunci dekripsi di server trustee. Ini membuat subdirektori bernama aliyun di folder lokal /opt/trustee/kbs/repository/default/.

    Ganti <model-decryption-key> dengan kunci yang Anda gunakan di Langkah 1. Dalam contoh ini, kuncinya adalah alibaba@1688.
    sudo mkdir -p /opt/trustee/kbs/repository/default/aliyun/
    sudo sh -c 'echo -n "<model-decryption-key>" > /opt/trustee/kbs/repository/default/aliyun/model-decryption-key'
  2. Verifikasi ID kunci.

    Kunci sekarang disimpan di jalur file .../aliyun/model-decryption-key dengan ID kunci kbs:///default/aliyun/model-decryption-key dalam sistem trustee.

Langkah 3: Konfigurasikan kluster komputasi rahasia ACK

Dalam langkah ini, Anda akan membangun infrastruktur dasar: kluster ACK dengan instans ecs.gn8v-tee yang menyediakan kemampuan komputasi rahasia Intel TDX dan NVIDIA TEE sebagai node pekerja.

Lingkungan eksekusi: Konsol ECS dan ACK (untuk membuat kluster, kelompok node, dan instans ECS), serta lingkungan shell dari instans ecs.gn8v-tee yang dibuat (untuk menginstal driver).
  1. Buat kluster ACK Pro yang dikelola di wilayah China (Beijing).

  2. Buat kelompok node untuk kluster untuk mengelola instans komputasi rahasia.

    • vSwitch: Pilih vSwitch virtual di Zona L wilayah China (Beijing).

    • Scaling Mode: Pertahankan konfigurasi default. Jangan aktifkan penskalaan otomatis.

    • Instance Type: ecs.gn8v-tee.4xlarge atau spesifikasi lebih tinggi.

    • Operating System: Alibaba Cloud Linux 3.2104 LTS 64-bit.

    • System Disk: 100 GiB atau lebih besar.

    • Expected Nodes: Jumlah awal node dalam kelompok node. Pertahankan konfigurasi default yaitu 0.

    • Node Labels: Tambahkan label (Key: ack.aliyun.com/nvidia-driver-version, Value: 550.144.03) untuk menentukan versi driver NVIDIA.

  3. Buat instans Layanan GPU Elastis (EGS) komputasi rahasia untuk berfungsi sebagai node kluster. Lihat Buat instans pada tab Peluncuran Kustom.

    • Region: China (Beijing).

    • Network and Zone: VPC harus sama dengan VPC kluster. Contoh ini menggunakan salah satu di Zona L.

    • Instance: ecs.gn8v-tee.4xlarge atau spesifikasi lebih tinggi.

      Tipe instans gn8v-tee memiliki fitur komputasi rahasia CPU dan GPU yang diaktifkan secara default. Anda tidak perlu memilih VM rahasia.
    • Image: Alibaba Cloud Linux 3.2104 LTS 64-bit.

  4. Masuk ke instans EGS yang dibuat dan instal driver NVIDIA dan toolkit CUDA.

  5. Tambahkan instans EGS ke kelompok node yang dibuat. Pilih Manual sebagai metode untuk menambahkan instans. Lihat Tambahkan node yang ada.

Langkah 4: Terapkan komponen ACK-CAI

Komponen ACK-CAI mencakup pengontrol webhook yang secara otomatis menyuntikkan kontainer sidecar yang diperlukan ke dalam pod berdasarkan anotasi mereka. Sidecar ini menangani verifikasi jarak jauh, dekripsi model, dan komunikasi aman.

Lingkungan eksekusi: Konsol ACK.
  1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel navigasi di sebelah kiri, pilih Applications > Helm.

  3. Klik Deploy dan instal versi terbaru ack-cai.

    Di langkah Parameters, ubah tag menjadi 1.1.1 di template YAML.

    Sekarang Anda dapat melihat status penyebaran di daftar bagan Helm.

Langkah 5: Terapkan layanan inferensi vLLM

Terapkan layanan vLLM menggunakan Helm dan tambahkan anotasi tertentu untuk mengaktifkan perlindungan komputasi rahasia.

Lingkungan eksekusi: Mesin dengan kubectl dan Helm yang dikonfigurasi dan dapat mengakses kluster. Anda dapat menggunakan Workbench atau CloudShell.
  1. Buat folder baru untuk bagan Helm.

    mkdir -p ack-cai-vllm-demo
    cd ack-cai-vllm-demo
  2. Inisialisasi bagan Helm untuk menerapkan layanan vLLM.

    Bagan Helm ini mengonfigurasi layanan inferensi vLLM dengan afinitas node untuk memastikan hanya berjalan pada node komputasi rahasia yang dipercepat GPU. Ini juga menggunakan plugin CSI untuk memasang bucket OSS untuk penyimpanan model.

    Perluas untuk melihat skrip inisialisasi bagan Helm

    values.yaml# Buat file template
    mkdir -p ./templates
    cat <<EOF >templates/vllm.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-oss
      namespace: {{ .Release.Namespace }}
      labels:
        alicloud-pvname: pv-oss
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-oss
        volumeAttributes:
          bucket: {{ .Values.oss.bucket }}
          path: {{ .Values.oss.path }}
          url: {{ .Values.oss.url }}
          otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
        nodePublishSecretRef:
          name: oss-secret
          namespace: {{ .Release.Namespace }}
    
    ---
    
    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
      namespace: {{ .Release.Namespace }}
    stringData:
      akId: {{ .Values.oss.akId }}
      akSecret: {{ .Values.oss.akSecret }}
    
    ---
    
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-oss
      namespace: {{ .Release.Namespace }}
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-oss
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: cai-vllm-svc
      namespace: {{ .Release.Namespace }}
      {{- if .Values.loadbalancer}}
      {{- if .Values.loadbalancer.aclId }}
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: {{ .Values.loadbalancer.aclId }}
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
      {{- end }}
      {{- end }}
      labels:
        app: cai-vllm
    spec:
      ports:
      - port: 8080
        protocol: TCP
        targetPort: 8080
      selector:
        app: cai-vllm
      type: LoadBalancer
    
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: cai-vllm
      namespace: {{ .Release.Namespace }}
      labels:
        app: cai-vllm
        trustiflux.alibaba.com/confidential-computing-mode: "ACK-CAI"
      annotations:
        trustiflux.alibaba.com/ack-cai-options: |
    {{ .Values.caiOptions | indent 6 }}
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: node.kubernetes.io/instance-type
                operator: In
                values:
                  - ecs.gn8v-tee.4xlarge
                  - ecs.gn8v-tee.6xlarge
                  - ecs.gn8v-tee-8x.16xlarge
                  - ecs.gn8v-tee-8x.48xlarge
      containers:
        - name: inference-service
          image: egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/llm-inference:vllm0.5.4-deepgpu-llm24.7-pytorch2.4.0-cuda12.4-ubuntu22.04
          command:
            - bash
          args: ["-c", "vllm serve /tmp/model --port 8080 --host 0.0.0.0 --served-model-name qwen2.5-3b-instruct --device cuda --dtype auto"]
          ports:
            - containerPort: 8080
          resources:
            limits:
              nvidia.com/gpu: 1  # Permintaan 1 GPU untuk kontainer ini
          volumeMounts:
            - name: pvc-oss
              mountPath: "/tmp/model"
    
      volumes:
        - name: pvc-oss
          persistentVolumeClaim:
            claimName: pvc-oss
    
    EOF
    
    # Buat file deskripsi bagan Helm
    cat <<EOF > ./Chart.yaml
    apiVersion: v2
    name: vllm
    description: Tes berbasis vllm untuk ack-cai
    type: application
    version: 0.1.0
    appVersion: "0.1.0"
    EOF
    
    # Buat file variabel untuk bagan Helm bernama <code data-tag="code" id="ef7b35f304kct">values.yaml
  3. Edit file values.yaml untuk memberikan informasi spesifik lingkungan Anda.

    Ganti <trustee-ip> dengan alamat trustee dan ganti konfigurasi OSS dengan nilai aktual Anda.
    caiOptions: |
      {
          "cipher-text-volume": "pvc-oss",
          "model-decryption-key-id" : "kbs:///default/aliyun/model-decryption-key",
          "trustee-address": "http://<trustee-ip>:8081/api"
      }
    oss:
      bucket: "conf-ai"                          # Ganti dengan nama bucket OSS yang menyimpan model terenkripsi.
      path: "/qwen2.5-3b-gocryptfs/"             # Ganti dengan jalur ke file model terenkripsi di Bucket OSS.
      url: "https://oss-cn-beijing-internal.aliyuncs.com"   # Ganti dengan titik akhir OSS.
      akId: "xxxxx"                              # Ganti dengan ID AccessKey Alibaba Cloud Anda.
      akSecret: "xxxxx"                          # Ganti dengan Rahasia AccessKey Alibaba Cloud Anda.
  4. Terapkan layanan vLLM menggunakan Helm.

    helm install vllm . -n default
  5. Verifikasi bahwa kontainer sidecar komponen CAI telah berhasil disuntikkan ke dalam pod.

    kubectl get pod cai-vllm -n default -o jsonpath='{range .status.initContainerStatuses[*]}{.name}{"\t"}{range .state.running}Running{end}{.state.*.reason}{"\n"}{end}{range .status.containerStatuses[*]}{.name}{"\t"}{range .state.running}Running{end}{.state.*.reason}{"\n"}{end}'

    Output yang diharapkan menunjukkan lima kontainer berikut, artinya penyuntikan berhasil. Tunggu semua kontainer berubah dari PodInitializing menjadi Running. Ini menunjukkan bahwa layanan telah dimulai.

    cai-sidecar-attestation-agent   Running
    cai-sidecar-confidential-data-hub       Running
    cai-sidecar-tng Running
    cai-sidecar-cachefs     Running
    inference-service       Running
  6. Dapatkan dan catat titik akhir layanan vLLM.

    kubectl get service cai-vllm-svc -o jsonpath='http://{.status.loadBalancer.ingress[0].ip}:{.spec.ports[0].port}{"\n"}'

    Output yang diharapkan adalah URL dalam format <vllm-ip>:<port>.

    http://182.XX.XX.225:8080

Langkah 6: Akses layanan inferensi secara aman

Untuk memastikan keamanan ujung ke ujung, Anda harus menggunakan gateway TNG klien untuk memproksi permintaan Anda. Proxy ini secara otomatis mengenkripsi semua permintaan yang dikirim ke layanan vLLM dan mendekripsi tanggapan.

Lingkungan eksekusi: Mesin klien tempat Anda ingin memanggil layanan inferensi.
  1. Mulai gateway TNG di klien untuk membangun saluran komunikasi aman.

    Gateway TNG membuat proxy lokal di klien untuk mengenkripsi permintaan yang dikirim ke server.
    Ganti <IP> dengan alamat trustee.
    docker run -d \
        --network=host \
        confidential-ai-registry.cn-shanghai.cr.aliyuncs.com/product/tng:2.2.4 \
        tng launch --config-content '
          {
            "add_ingress": [
              {
                "http_proxy": {
                  "proxy_listen": {
                    "host": "0.0.0.0",
                    "port": 41000
                  }
                },
                "encap_in_http": {},
                "verify": {
     "as_addr": "http://<trustee-ip>:8081/api/attestation-service/",
                  "policy_ids": [
                    "default"
                  ]
                }
              }
            ]
          }
    '
  2. Akses layanan vLLM melalui proxy TNG.

    Ganti <vllm-ip>:<port> dengan titik akhir layanan vLLM yang Anda peroleh sebelumnya.
    # Set variabel lingkungan http_proxy
    export http_proxy=http://127.0.0.1:41000
    
    # Kirim permintaan curl
    curl http://<vllm-ip>:<port>/v1/completions \
      -H "Content-type: application/json" \
      -d '{
        "model": "qwen2.5-3b-instruct",
        "prompt": "San Francisco is a",
        "max_tokens": 7,
        "temperature": 0
        }'

Referensi

Mengonfigurasi caiOptions

Anotasi caiOptions menerima objek konfigurasi dalam format JSON. Webhook admission ACK CAI mengurai parameter ini dan menggunakannya untuk menyuntikkan dan mengonfigurasi komponen keamanan secara dinamis, seperti AA dan CDH, ke dalam pod. Ini mengaktifkan fitur seperti enkripsi dan dekripsi transparan, verifikasi jarak jauh, dan jaringan tepercaya.

Berikut adalah contoh lengkap konfigurasi caiOptions.

{
  "cipher-text-volume": "pvc-oss",
  "model-decryption-key-id": "kbs:///default/aliyun/model-decryption-key",
  "trustee-address": "http://<trustee-ip>:8081/api",
  "aa-version": "1.3.1",
  "cdh-version": "1.3.1",
  "tng-version": "2.2.4",
  "cachefs-version": "1.0.7-2.6.1",
  "tdx-ra-enable": true,
  "gpu-ra-enable": true,
  "tng-http-secure-ports": [
    {
      "port": 8080
    }
  ]
}

Tabel berikut merinci konfigurasi:

Parameter

Diperlukan

Deskripsi

cipher-text-volume

Ya

Nama klaim volume persisten (PVC) yang menyimpan model terenkripsi. ACK-CAI secara otomatis mendekripsi data yang dipasang dari PVC ini di lingkungan tepercaya.

model-decryption-key-id

Ya

URI Key Broker Service (KBS) dari kunci dekripsi model, dalam format kbs:///<repository>/<group>/<key>.

trustee-address

Ya

Alamat layanan trustee, digunakan untuk verifikasi jarak jauh dan pengambilan kunci.

aa-version

Tidak

Versi komponen AA.

cdh-version

Tidak

Versi komponen CDH.

tng-version

Tidak

Versi komponen TNG.

cachefs-version

Tidak

Versi komponen Cachefs.

tdx-ra-enable

Tidak

Menentukan apakah akan mengaktifkan dukungan verifikasi jarak jauh untuk CPU (instans rahasia TDX). Default: true.

gpu-ra-enable

Tidak

Menentukan apakah akan mengaktifkan dukungan verifikasi jarak jauh untuk GPU. Default: true.

tng-http-secure-ports

Tidak

Mengonfigurasi TNG untuk menggunakan TLS untuk mengenkripsi lalu lintas untuk port HTTP tertentu. Ini menerima array objek, di mana setiap objek mewakili aturan enkripsi port.

"tng-http-secure-ports": [
  {
    "port": 8080,
    "allow-insecure-request-regexes": [
      "/api/builtin/.*"
    ]
  }
]
  • port: Nomor port layanan HTTP yang memerlukan perlindungan enkripsi TLS oleh TNG.

  • allow-insecure-request-regexes: Array ekspresi reguler. Untuk setiap permintaan HTTP yang dikirim ke port tertentu, jika jalurnya cocok dengan ekspresi reguler apa pun dalam array ini, TNG tidak akan mengenkripsi permintaan tersebut.

File model terenkripsi contoh

Untuk tujuan pengujian, Anda dapat menggunakan model terenkripsi berikut yang tersedia secara publik. Mereka disimpan di bucket OSS dan telah dienkripsi menggunakan metode yang ditentukan.

Buka

Nama model

Metode enkripsi

Kata sandi enkripsi

Wilayah OSS baca-publik

Titik akhir OSS

Lokasi penyimpanan model

Qwen2.5-3B-Instruct

Gocryptfs

alibaba@1688

cn-beijing

oss-cn-beijing-internal.aliyuncs.com

conf-ai:/qwen2.5-3b-gocryptfs/

Sam

conf-ai:/qwen2.5-3b-sam/