Men-deploy container (GKE, Distributed Cloud)

Halaman ini menjelaskan cara men-deploy image container ke cluster GKE (diGoogle Cloud atau Google Distributed Cloud) yang mengaktifkan Otorisasi Biner. 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 Anda dan cluster GKE dengan Otorisasi Biner 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

Distributed Cloud

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:

  1. 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 workload GKE
    • IMAGE_PATH: jalur image di Artifact Registry, atau registry 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

      Untuk mempelajari cara mendapatkan ringkasan image di Artifact Registry, lihat Mengelola image.

  2. Deploy image Anda menggunakan perintah kubectl run.

    Anda harus men-deploy image menggunakan ringkasan, bukan tag seperti 1.0 atau latest, karena Otorisasi Biner menggunakan ringkasan untuk mencari pengesahan.

    Untuk men-deploy image, jalankan perintah kubectl berikut:

    kubectl run ${POD_NAME} \
        --image ${IMAGE_PATH}@${IMAGE_DIGEST}
    

    Sekarang, pastikan deployment diblokir oleh Otorisasi Biner:

    kubectl get pods
    

    Anda akan melihat Pod Anda tercantum.

Batasan

Pada waktu deployment, Otorisasi Biner hanya memindai image di kolom containers dan ephemeralContainers dari PodSpec. Tidak ada kolom lain yang dipindai. Container init dan volume image tidak dipindai pada waktu deployment.

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 akan gagal terbuka: secara default, GKE akan mengizinkan image di-deploy, tetapi membuat entri log di Cloud Audit Logs untuk mencatat alasan image diizinkan.

Penegakan GKE gagal terbuka karena adanya kompromi antara keandalan dan keamanan. GKE mengirimkan permintaan ke Otorisasi Biner setiap kali Pod dibuat atau diupdate. Hal ini mencakup skenario saat Pod dibuat atau diupdate secara otomatis oleh pengontrol workload Kubernetes tingkat 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 membebani 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 image yang melanggar kebijakan

Otorisasi Biner mendukung fitur yang dikenal sebagai akses darurat yang memungkinkan image di-deploy, meskipun melanggar kebijakan.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan akses darurat

Pembersihan

Untuk melakukan pembersihan, hapus Pod dengan menjalankan perintah berikut:

  kubectl delete pod ${POD_NAME}
  

Langkah berikutnya