Menjalankan workload dengan hak istimewa dari partner Autopilot GKE


Halaman ini menunjukkan cara menjalankan workload dengan hak istimewa dari partner Autopilot Google Kubernetes Engine (GKE). Anda akan mempelajari cara menyiapkan workload sinkronisasi yang menginstal daftar yang diizinkan di cluster dan terus memperbarui daftar yang diizinkan.

Halaman ini ditujukan untuk jenis peran berikut:

  • Engineer keamanan yang ingin memastikan bahwa workload pihak ketiga memerlukan daftar yang diizinkan untuk berjalan di cluster Anda dan berasal dari sumber yang disetujui GKE.
  • Engineer platform yang ingin mengaktifkan beban kerja pihak ketiga di cluster untuk berhenti memblokir tim aplikasi.

Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam dokumentasi, lihat Peran dan tugas pengguna GKE Enterprise umum.

Sebelum membaca halaman ini, pastikan Anda memahami hal-hal berikut:

Tentang workload partner dengan hak istimewa di Autopilot

GKE memungkinkan sebagian partner yang disetujui untuk menjalankan workload dengan hak istimewa di cluster Autopilot. Workload dengan hak istimewa ini dapat mengabaikan beberapa batasan keamanan yang diterapkan Autopilot. Misalnya, partner mungkin perlu menjalankan beban kerja yang menggunakan kemampuan Linux tertentu atau memerlukan penampung dengan hak istimewa.

Partner membuat dan mengelola daftar yang diizinkan untuk workload dengan hak istimewa mereka. Setiap daftar yang diizinkan adalah file yang cocok dengan workload partner dengan hak istimewa tertentu. Partner mengirimkan file daftar yang diizinkan ini ke GKE untuk mendapatkan persetujuan. Setelah disetujui, GKE akan menghosting file daftar yang diizinkan di repositori yang dikelola Google.

Untuk menjalankan workload partner, Anda harus menginstal file daftar yang diizinkan yang sesuai di cluster. GKE menyediakan resource kustom Kubernetes bernama AllowlistSynchronizer yang menginstal daftar yang diizinkan dan terus memperbaruinya. Setelah daftar yang diizinkan berhasil diinstal, Anda dapat men-deploy beban kerja partner dengan hak istimewa yang sesuai.

Bug dan permintaan fitur untuk workload dan daftar yang diizinkan dengan hak istimewa

Partner bertanggung jawab untuk membuat, mengembangkan, dan mengelola workload dan daftar yang diizinkan dengan hak istimewa. Jika Anda menemukan bug atau memiliki permintaan fitur untuk workload dengan hak istimewa atau daftar yang diizinkan, hubungi partner yang sesuai.

Tentang pengontrol AllowlistSynchronizer

AllowlistSynchronizer adalah pengontrol yang berjalan di bidang kontrol GKE Anda. Anda men-deploy AllowlistSynchronizer baru sebagai manifes YAML, serupa dengan cara men-deploy workload Kubernetes lainnya. Dalam manifes, Anda menentukan jalur ke file daftar yang diizinkan yang ingin diinstal, yang Anda dapatkan dari partner pihak ketiga. Sinkroniser menemukan file daftar yang diizinkan partner di repositori yang dikelola Google dan menginstal daftar yang diizinkan di cluster Anda.

Setiap 10 menit, sinkronisasi akan memeriksa pembaruan pada file daftar yang diizinkan. Jika ada update, sinkronisasi akan menginstal daftar yang diizinkan yang diperbarui di cluster Anda.

Untuk berhenti mengizinkan workload tertentu, perbarui AllowlistSynchronizers yang ada untuk menghapus jalur file daftar yang diizinkan yang sesuai, lalu hapus objek WorkloadAllowlist dari . Jika Anda menghapus objek WorkloadAllowlist yang diinstal tanpa menghapus jalur dari sinkronisasi daftar yang diizinkan, sinkronisasi akan menginstal ulang daftar yang diizinkan. Partner tidak dapat menghapus file yang diizinkan dari repositori yang dikelola Google.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Persyaratan

  • Resource kustom AllowlistSynchronizer memerlukan GKE versi 1.32.1-gke.1729000 atau yang lebih baru.
  • Anda harus mengetahui workload partner yang ingin dijalankan di cluster. Periksa dokumentasi partner Anda untuk mengetahui petunjuk menginstal beban kerja istimewa.

Membuat AllowlistSynchronizer baru

Untuk menjalankan beban kerja dengan hak istimewa dari partner, Anda menambahkan jalur ke file daftar yang diizinkan yang sesuai ke resource kustom AllowlistSynchronizer. Kemudian, Anda akan men-deploy AllowlistSynchronizer ke cluster.

  1. Di editor teks, buat file YAML baru.
  2. Tambahkan konten berikut ke file YAML:

    apiVersion: auto.gke.io/v1
    kind: AllowlistSynchronizer
    metadata:
      name: ALLOWLIST_SYNCHRONIZER_NAME
    spec:
      allowlistPaths:
      - ALLOWLIST1_PATH
      - ALLOWLIST2_PATH
    

    Ganti kode berikut:

    • ALLOWLIST_SYNCHRONIZER_NAME: nama sinkronisasi baru. Pilih nama deskriptif yang mengidentifikasi workload atau tim yang didukung daftar yang diizinkan.
    • ALLOWLIST1_PATH, ALLOWLIST2_PATH, ...: satu atau beberapa jalur ke file daftar yang diizinkan partner untuk diinstal. Periksa dokumentasi untuk beban kerja partner yang Anda pilih untuk jalur ini. Anda dapat menentukan seluruh direktori atau file individual.
  3. Deploy file YAML ke cluster Anda:

    kubectl apply -f PATH_TO_YAML_FILE
    

    Ganti PATH_TO_YAML_FILE dengan jalur ke file YAML yang Anda buat di langkah sebelumnya.

    Pengontrol AllowlistSynchronizer menginstal file daftar yang diizinkan dari jalur yang ditentukan di cluster Anda.

  4. Tunggu hingga sinkronisasi melaporkan status Ready:

    kubectl wait --for-condition=Ready allowlistsynchronizer/ALLOWLIST_SYNCHRONIZER_NAME \
      --timeout=60s
    

Anda juga dapat mengintegrasikan deployment workload partner ke dalam pipeline continuous integration dan continuous deployment (CI/CD). Konfigurasikan alur kerja Anda untuk menunggu hingga daftar yang diizinkan berhasil diinstal sebelum men-deploy beban kerja yang sesuai.

Memperbarui AllowlistSynchronizer yang ada

Anda dapat memperbarui AllowlistSynchronizer yang ada untuk menambahkan atau menghapus file daftar yang diizinkan. Anda dapat memperbarui sinkroniser yang ada dalam situasi seperti berikut:

  • Partner menambahkan file daftar yang diizinkan baru yang memiliki nama berbeda.
  • Anda ingin menambahkan daftar yang diizinkan beban kerja baru ke sinkroniser yang ada yang mengelompokkan daftar yang diizinkan terkait.
  • Anda ingin menghapus daftar yang diizinkan dari sinkroniser karena tidak ingin lagi menggunakan beban kerja yang sesuai.

Untuk memperbarui objek AllowlistSynchronizer yang ada, lakukan hal berikut:

  1. Cantumkan sinkronisasi yang ada di cluster Anda:

    kubectl get allowlistsynchronizer
    
  2. Buka spesifikasi sinkronisasi yang ingin Anda perbarui di editor teks.

  3. Perbarui kolom spec.allowlistPaths untuk menambahkan, mengubah, atau menghapus jalur file daftar yang diizinkan.

  4. Simpan dan tutup editor teks.

  5. Terapkan konfigurasi yang telah diperbarui ke cluster:

    kubectl apply -f PATH_TO_YAML_FILE
    

    Ganti PATH_TO_YAML_FILE dengan jalur ke file YAML yang Anda perbarui di langkah sebelumnya.

Saat Anda men-deploy konfigurasi sinkronisasi yang diperbarui, kolom managedAllowlistStatus.generation dalam status objek AllowlistSynchronizer akan bertambah satu. Pengontrol AllowlistSynchronizer kemudian akan menerapkan perubahan Anda.

Memantau status sinkronisasi daftar yang diizinkan

Setelah menginstal AllowlistSynchronizer atau mengupdate sinkroniser yang ada, Anda dapat memantau status sinkronisasi. Status ini membantu Anda melacak penginstalan, penghapusan, atau perubahan file daftar yang diizinkan serta error yang mungkin terjadi.

Untuk memantau status umum sinkronisasi, jalankan perintah berikut:

kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml

Outputnya mirip dengan hal berikut ini:

...
status:
  conditions:
  - type: Ready
    status: "False"
    reason: "SyncError"
    message: "some allowlists failed to sync: example-allowlist-1.yaml"
    lastTransitionTime: "2024-10-12T10:00:00Z"
    observedGeneration: 2
  managedAllowlistStatus:
    - filePath: "gs://path/to/allowlist1.yaml"
      generation: 1
      phase: Installed
      lastSuccessfulSync: "2024-10-10T10:00:00Z"
    - filePath: "gs://path/to/allowlist2.yaml"
      phase: Failed
      lastError: "Initial install failed: invalid contents"
      lastSuccessfulSync: "2024-10-08T10:00:00Z"

Untuk deskripsi kolom ini, lihat status AllowlistSynchronizer.

Memastikan daftar yang diizinkan ada di cluster Anda

Untuk memverifikasi bahwa daftar yang diizinkan ada di cluster Anda, jalankan perintah berikut:

kubectl get workloadallowlist

Output-nya adalah daftar daftar yang diizinkan yang diinstal di cluster. Pastikan output menyertakan daftar yang diizinkan yang ingin Anda gunakan.

Men-deploy workload dengan hak istimewa

Setelah daftar yang diizinkan berhasil diinstal, Anda dapat men-deploy beban kerja yang sesuai di cluster. Partner yang menyediakan workload juga harus memberikan petunjuk penginstalan untuk workload tersebut kepada Anda. Untuk mengetahui daftar partner Autopilot dan link ke dokumentasi mereka, lihat Partner Autopilot.

Menghapus workload dengan hak istimewa

Untuk berhenti mengizinkan workload dengan hak istimewa berjalan di cluster, hapus jalur ke daftar yang diizinkan yang sesuai dari AllowlistSynchronizer Anda. Sinkronisasi akan meng-uninstal daftar yang diizinkan.

Jika Anda menghapus objek WorkloadAllowlist dari cluster, bukan mengupdate sinkronisasi, sinkronisasi akan menginstal ulang daftar yang diizinkan. Pastikan Anda menghapus jalur dari AllowlistSynchronizer.

Untuk meng-uninstal daftar yang diizinkan, lakukan langkah berikut:

  1. Dalam manifes YAML untuk AllowlistSynchronizer yang mengelola daftar yang diizinkan, hapus jalur ke daftar yang diizinkan yang ingin Anda uninstal. Untuk mendapatkan petunjuk, lihat Memperbarui bagian AllowlistSynchronizer yang ada.
  2. Untuk memverifikasi bahwa daftar yang diizinkan telah di-uninstal, dapatkan daftar objek WorkloadAllowlist di cluster Anda:

    kubectl get workloadallowlist
    

    Dalam output, pastikan daftar yang diizinkan yang ingin Anda hapus tidak muncul.

  3. Hapus workload dari cluster Anda. Untuk mengetahui petunjuknya, lihat dokumentasi penyedia workload.

Mencegah penginstalan daftar yang diizinkan di cluster Anda

Untuk mencegah penginstalan daftar yang diizinkan workload dengan hak istimewa di cluster tertentu, gunakan ValidatingAdmissionPolicy. Memvalidasi kebijakan penerimaan memastikan bahwa resource Kubernetes memenuhi kriteria tertentu sebelum diizinkan untuk berjalan di cluster. Misalnya, Anda dapat memvalidasi bahwa label memiliki nilai tertentu.

Untuk mencegah penginstalan daftar yang diizinkan di cluster, lakukan hal berikut:

  1. Simpan manifes ValidatingAdmissionPolicy berikut sebagai disallow-allowlists.yaml:

    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingAdmissionPolicy
    metadata:
      name: "disallow-allowlists"
    spec:
      failurePolicy: Fail
      matchConstraints:
        resourceRules:
        - apiGroups:   ["auto.gke.io"]
          apiVersions: ["*"]
          operations:  ["*"]
          resources:   ["allowlistsynchronizers"]
      validations:
      - expression: "false"
        message: 'AllowlistSynchronizer creation is not allowed'
    
  2. Simpan manifes ValidatingAdmissionPolicyBinding berikut sebagai disallow-allowlists-binding.yaml:

    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingAdmissionPolicyBinding
    metadata:
      name: "disallow-allowlists-binding"
    spec:
      policyName: "disallow-allowlists"
      validationActions: [Deny]
    
  3. Deploy ValidatingAdmissionPolicy di cluster Anda:

    kubectl apply -f disallow-allowlists.yaml
    kubectl apply -f disallow-allowlists-binding.yaml
    

Kebijakan ini mencegah pembuatan AllowlistSynchronizers baru di cluster.

Memecahkan masalah

Jika sinkronisasi atau deployment workload gagal, lihat Memecahkan masalah deployment workload Autopilot dengan hak istimewa.

Langkah berikutnya