Halaman ini menjelaskan cara men-deploy image container ke cluster GKE (di
Google Cloud atau Google Distributed Cloud) tempat Otorisasi Biner diaktifkan.
Perintah kubectl
yang Anda gunakan untuk men-deploy image sama dengan perintah yang Anda gunakan untuk men-deploy image ke cluster yang tidak menggunakan Otorisasi Biner.
Sebelum memulai
Pastikan Anda telah mengaktifkan Binary Authorization API di project dan cluster GKE dengan Binary Authorization yang diaktifkan. Lihat menyiapkan di Google Kubernetes Engine atau menyiapkan di Distributed Cloud.
Instal kubectl
untuk berinteraksi dengan GKE.
Konfigurasi kubectl
Anda harus mengupdate file kubeconfig
lokal untuk penginstalan kubectl
.
Tindakan ini akan memberikan kredensial dan informasi endpoint yang diperlukan untuk mengakses cluster di GKE atau Distributed Cloud.
Untuk mengonfigurasi kubectl
, jalankan perintah gcloud
berikut:
GKE
gcloud container clusters get-credentials \ --zone ZONE \ CLUSTER_NAME
Ganti kode berikut:
- ZONE: nama zona GKE tempat
cluster berjalan, misalnya,
us-central1-a
- CLUSTER_NAME: nama cluster
Cloud Terdistribusi
gcloud container fleet memberships get-credentials \ --location LOCATION \ MEMBERSHIP_NAME
Ganti kode berikut:
- LOCATION: lokasi keanggotaan fleet cluster GKE, misalnya,
global
- MEMBERSHIP_NAME: nama keanggotaan fleet cluster GKE
Men-deploy image container
Deploy image container Anda sebagai berikut:
Konfigurasikan variabel lingkungan:
POD_NAME=POD_NAME IMAGE_PATH=IMAGE_PATH IMAGE_DIGEST=IMAGE_DIGEST
Ganti kode berikut:
- POD_NAME: nama yang ingin Anda gunakan untuk beban kerja GKE
- IMAGE_PATH: jalur image di Artifact Registry, Container Registry, atau repositori lainnya.
IMAGE_DIGEST: ringkasan manifes image. Contohnya adalah sebagai berikut:
- Artifact Registry:
- Jalur:
us-docker.pkg.dev/google-samples/containers/gke/hello-app
- Ringkasan:
sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567
- Jalur:
- Container Registry:
- Jalur:
gcr.io/google-samples/hello-app
- Ringkasan:
sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
- Jalur:
Untuk mempelajari cara mendapatkan ringkasan image di Artifact Registry, lihat Mengelola image; untuk image di Container Registry, lihat Mencantumkan versi image.
- Artifact Registry:
Deploy image Anda menggunakan perintah
kubectl run
.Anda harus men-deploy image menggunakan ringkasan, bukan tag seperti
1.0
ataulatest
, karena Otorisasi Biner menggunakan ringkasan untuk mencari pernyataan.Untuk men-deploy image, jalankan perintah
kubectl
berikut:kubectl run ${POD_NAME} \ --image ${IMAGE_PATH}@${IMAGE_DIGEST}
Sekarang, verifikasi bahwa deployment diblokir oleh Otorisasi Biner:
kubectl get pods
Anda akan melihat Pod Anda tercantum.
Fail open
Jika GKE tidak dapat menjangkau server Otorisasi Biner karena alasan apa pun, atau jika server menampilkan error, GKE tidak dapat menentukan apakah Otorisasi Biner akan mengizinkan atau menolak image. Dalam hal ini, GKE gagal terbuka: secara default, GKE mengizinkan image di-deploy, tetapi membuat entri log di Cloud Audit Logs untuk mencatat alasan image diizinkan.
Penerapan GKE gagal terbuka karena adanya kompromi antara keandalan dan keamanan. GKE mengirimkan permintaan ke Otorisasi Biner setiap kali Pod dibuat atau diperbarui. Hal ini mencakup skenario saat Pod dibuat atau diperbarui secara otomatis oleh pengontrol beban kerja Kubernetes level yang lebih tinggi, seperti ReplicaSet dan StatefulSet. Jika GKE gagal ditutup, bukan dibuka, pemadaman layanan Otorisasi Biner akan menghentikan Pod ini agar tidak berjalan. Selain itu, saat Pod ditolak, failover dapat menyebabkan kegagalan beruntun karena traffic yang dialihkan melebihi kapasitas Pod yang masih berjalan. Setiap pemadaman layanan Otorisasi Biner dapat memicu pemadaman layanan total untuk cluster Anda, bahkan tanpa men-deploy image baru.
Men-deploy gambar yang melanggar kebijakan
Otorisasi Biner mendukung fitur yang dikenal sebagai breakglass yang memungkinkan deployment gambar, meskipun melanggar kebijakan.
Untuk informasi selengkapnya, lihat Menggunakan breakglass
Pembersihan
Untuk membersihkan, hapus Pod dengan menjalankan perintah berikut:
kubectl delete pod ${POD_NAME}
Langkah selanjutnya
- Pelajari mode uji coba.
- Pelajari cara menggunakan CV.
- Pelajari cara menggunakan validasi berkelanjutan lama (tidak digunakan lagi).
- Pelajari cara menggunakan ringkasan image dalam manifes Kubernetes.