Halaman ini menunjukkan cara menjalankan workload istimewa dari partner Autopilot Google Kubernetes Engine (GKE). Anda akan mempelajari cara menyiapkan workload sinkronisasi yang menginstal daftar yang diizinkan di cluster Anda 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 workload pihak ketiga di cluster untuk membantu tim aplikasi.
Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam dokumentasi kami, lihat Peran dan tugas pengguna GKE Enterprise umum.
Sebelum membaca halaman ini, pastikan Anda memahami hal-hal berikut:
Tentang workload partner yang memiliki hak istimewa di Autopilot
GKE mengizinkan subset partner yang disetujui untuk menjalankan workload istimewa di cluster Autopilot. Workload dengan hak istimewa ini dapat melewati beberapa batasan keamanan yang diterapkan Autopilot. Misalnya, partner mungkin perlu menjalankan workload yang menggunakan kemampuan Linux tertentu atau memerlukan container dengan hak istimewa.
Partner membuat dan memelihara daftar yang diizinkan untuk workload istimewa mereka. Setiap daftar yang diizinkan adalah file yang cocok dengan workload partner 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 menginstal file daftar yang diizinkan yang sesuai di cluster Anda. GKE menyediakan resource kustom Kubernetes bernama
AllowlistSynchronizer
yang menginstal daftar yang diizinkan dan terus memperbaruinya.
Setelah penginstalan daftar yang diizinkan berhasil, Anda dapat men-deploy workload partner istimewa yang sesuai.
Bug dan permintaan fitur untuk workload dan daftar yang diizinkan yang memiliki hak istimewa
Partner bertanggung jawab untuk membuat, mengembangkan, dan memelihara workload istimewa dan daftar yang diizinkan. Jika Anda menemukan bug atau memiliki permintaan fitur untuk workload atau daftar yang diizinkan yang memiliki hak istimewa, hubungi partner yang bersangkutan.
Tentang pengontrol AllowlistSynchronizer
AllowlistSynchronizer
adalah pengontrol yang berjalan di bidang kontrol GKE Anda. Anda men-deploy AllowlistSynchronizer
baru sebagai manifes YAML,
mirip dengan cara Anda men-deploy beban kerja Kubernetes lainnya. Dalam manifes, Anda
menentukan jalur ke file daftar yang diizinkan yang ingin Anda instal, yang Anda dapatkan
dari partner pihak ketiga. Penyinkron akan 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 update pada file daftar yang diizinkan. Jika ada update, sinkronisasi akan menginstal daftar yang diizinkan yang telah diupdate di cluster Anda.
Untuk berhenti mengizinkan workload tertentu, perbarui AllowlistSynchronizer yang ada untuk
menghapus jalur file daftar yang diizinkan yang sesuai, lalu hapus objek WorkloadAllowlist
dari cluster Anda. 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 daftar 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.2-gke.1652000 atau yang lebih baru. - Anda harus mengetahui workload partner mana yang ingin dijalankan di cluster Anda. Periksa dokumentasi partner Anda untuk mengetahui petunjuk menginstal beban kerja istimewa.
Buat AllowlistSynchronizer
baru
Untuk menjalankan beban kerja yang memiliki hak istimewa dari partner, Anda menambahkan jalur ke file daftar yang diizinkan yang sesuai ke resource kustom AllowlistSynchronizer
. Kemudian, Anda
men-deploy AllowlistSynchronizer ke cluster Anda.
- Di editor teks, buat file YAML baru.
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 beban kerja partner yang Anda pilih untuk jalur ini. Anda dapat menentukan seluruh direktori atau file individual.
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
yang diinstal memungkinkan file daftar yang diizinkan dari jalur yang ditentukan di cluster Anda.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) Anda. Konfigurasi 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 sinkronisasi yang ada dalam situasi seperti berikut:
- Partner menambahkan file daftar yang diizinkan baru yang memiliki nama berbeda.
- Anda ingin menambahkan daftar yang diizinkan untuk beban kerja baru ke sinkronisasi yang ada yang mengelompokkan daftar yang diizinkan terkait.
- Anda ingin menghapus daftar yang diizinkan dari sinkronisasi karena Anda tidak ingin lagi menggunakan workload yang sesuai.
Untuk memperbarui objek AllowlistSynchronizer
yang ada, lakukan hal berikut:
Mencantumkan sinkronisasi yang ada di cluster Anda:
kubectl get allowlistsynchronizer
Buka spesifikasi sinkronisasi yang ingin Anda perbarui di editor teks.
Perbarui kolom
spec.allowlistPaths
untuk menambahkan, mengubah, atau menghapus jalur file daftar yang diizinkan.Simpan dan tutup editor teks.
Terapkan konfigurasi yang telah diupdate 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
di status objek AllowlistSynchronizer
akan bertambah satu. Pengontrol AllowlistSynchronizer
kemudian menerapkan perubahan Anda.
Memantau status sinkronisasi daftar yang diizinkan
Setelah menginstal AllowlistSynchronizer
atau memperbarui sinkronisasi yang ada,
Anda dapat memantau status sinkronisasi. Status ini membantu Anda melacak penginstalan, penghapusan, atau modifikasi 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 mengetahui deskripsi kolom ini, lihat
Status AllowlistSynchronizer
.
Memastikan bahwa daftar yang diizinkan ada di cluster Anda
Untuk memverifikasi bahwa daftar yang diizinkan ada di cluster Anda, jalankan perintah berikut:
kubectl get workloadallowlist
Outputnya adalah daftar daftar yang diizinkan yang diinstal di cluster. Pastikan output menyertakan daftar yang diizinkan yang ingin Anda gunakan.
Men-deploy workload istimewa
Setelah penginstalan daftar yang diizinkan berhasil, Anda dapat men-deploy workload yang sesuai di cluster. Partner yang menyediakan workload juga harus memberi Anda petunjuk penginstalan untuk workload tersebut. Untuk mengetahui daftar partner Autopilot dan link ke dokumentasinya, lihat Partner Autopilot.
Menggunakan repositori mirror image pribadi
Anda dapat mencerminkan image container workload partner di repositori pribadi yang Anda miliki. Untuk menjalankan gambar yang dicerminkan ini dalam beban kerja, Anda harus memenuhi semua persyaratan berikut:
- Ringkasan SHA-256 gambar yang dicerminkan harus cocok dengan ringkasan gambar beban kerja partner yang tersedia secara publik.
- Ringkasan image SHA-256 yang Anda tentukan harus ada di objek
WorkloadAllowlist
yang disediakan oleh partner dan disinkronkan ke cluster Anda.
Jika workload partner mendukung image yang dicerminkan, spesifikasi daftar yang diizinkan
untuk workload tersebut berisi daftar ringkasan image ke kolom
containers.imageDigests
dalam spesifikasi daftar yang diizinkan untuk
workload tersebut. Biasanya, kolom ini memiliki ringkasan terpisah untuk setiap versi image container yang tersedia. Untuk melihat daftar ringkasan gambar ini, lakukan hal berikut:
- Pastikan daftar yang diizinkan ada di cluster Anda.
Dapatkan spesifikasi daftar yang diizinkan yang diinstal:
kubectl get workloadallowlist ALLOWLIST_NAME -o yaml
Ganti
ALLOWLIST_NAME
dengan nama daftar yang diizinkan yang diinstal. Contoh,company-name-solution-v1.0.0
.Untuk workload yang mendukung fitur ini, outputnya mirip dengan berikut ini. Kolom
imageDigests
memiliki daftar ringkasan yang diizinkan.# lines omitted for clarity - containerName: pause-container1 imageDigests: - cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229 - 932ea160d395f3d7f76c0c17a52a63c4cfe1836a900f1058b6bc20b16fd10d23
Jika output tidak menyertakan kolom
imageDigests
, atau jika ringkasan untuk rilis yang ingin Anda gunakan tidak ada dalam daftar, hubungi partner secara langsung dan minta mereka untuk memperbarui daftar yang diizinkan. Setelah partner menambahkan ringkasan gambar ke daftar yang diizinkan dan mengirimkan perubahan ke GKE, penyinkron daftar yang diizinkan di cluster Anda akan otomatis menginstal daftar yang diizinkan yang telah diupdate.Tambahkan salah satu ringkasan gambar yang didukung ke manifes workload Anda.
Misalnya, perhatikan gambar berikut dalam spesifikasi Pod yang tersedia secara publik dari partner:
...
containers:
- name: pause-container1
image: partner-repo/pause1@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229
securityContext:
privileged: true
Anda dapat menggunakan image yang dicerminkan jika ringkasannya cocok dengan ringkasan yang tersedia secara publik, seperti dalam contoh berikut:
...
containers:
- name: pause-container1
image: my-private-repo/pause1@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229
securityContext:
privileged: true
Anda harus menyertakan ringkasan SHA-256 di kolom gambar, mirip dengan contoh sebelumnya. Jika ringkasan tidak cocok, gambar yang dicerminkan tidak akan berjalan. Untuk mempertahankan ringkasan gambar saat Anda mencerminkan gambar partner, pertimbangkan untuk menggunakan alat seperti crane, ORAS, atau skopeo.
Menghapus workload istimewa
Untuk berhenti mengizinkan workload istimewa berjalan di cluster Anda, hapus jalur ke daftar yang diizinkan yang sesuai dari AllowlistSynchronizer Anda. Penyinkronisasi akan meng-uninstal daftar yang diizinkan.
Jika Anda menghapus objek WorkloadAllowlist
dari cluster, bukan
memperbarui sinkronisasi, sinkronisasi akan menginstal ulang daftar yang diizinkan. Pastikan
Anda menghapus jalur dari AllowlistSynchronizer
.
Untuk meng-uninstal daftar yang diizinkan, lakukan hal berikut:
- Di manifes YAML untuk
AllowlistSynchronizer
yang mengelola daftar yang diizinkan, hapus jalur ke daftar yang diizinkan yang ingin Anda uninstal. Untuk mengetahui petunjuknya, lihat Memperbarui bagian AllowlistSynchronizer yang ada. 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.
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 untuk workload istimewa di cluster tertentu, gunakan ValidatingAdmissionPolicy. Kebijakan penerimaan yang valid 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:
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'
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]
Deploy ValidatingAdmissionPolicy di cluster Anda:
kubectl apply -f disallow-allowlists.yaml kubectl apply -f disallow-allowlists-binding.yaml
Kebijakan ini mencegah pembuatan AllowlistSynchronizer baru di cluster.
Memecahkan masalah
Jika sinkronisasi atau deployment workload gagal, lihat Memecahkan masalah deployment workload Autopilot yang memiliki hak istimewa.
Langkah berikutnya
- Partner GKE Autopilot
- Menjalankan workload open source yang memiliki hak istimewa di GKE Autopilot
- Kemampuan keamanan GKE Autopilot
- Definisi resource kustom AllowlistSynchronizer