Menggunakan registry image pribadi
Penginstalan GKE di Azure Anda dapat mengakses image container publik secara default. Topik ini menjelaskan cara menggunakan GKE di Azure dengan repositori image container pribadi, seperti Artifact Registry.
Sebelum memulai
Untuk melakukan langkah-langkah di halaman ini, selesaikan terlebih dahulu langkah-langkah berikut:
- Membuat cluster.
- Buat node pool.
Bangun image Docker dan kirimkan ke Artifact Registry. Contoh di halaman ini menggunakan container
hello-app. Untuk membangun container ini, ikuti langkah-langkah untuk Membangun image container dan Mengirim image Docker ke Artifact Registry, yang merupakan bagian dari dokumentasi GKE di Google Cloud .
Memeriksa image di Artifact Registry
Untuk menyelesaikan langkah-langkah lainnya, Anda memerlukan image penampung. Dapatkan nama image container Anda dengan melakukan langkah-langkah berikut:
Konfigurasi alat command line Docker untuk melakukan autentikasi ke Artifact Registry dengan Google Cloud SDK:
gcloud auth configure-dockerAlat command line
gcloudmendaftarkan helper kredensial untuk semua registry Docker yang didukung Google.Konfirmasi bahwa Artifact Registry Anda menyertakan image dengan perintah
docker images.docker imagesDocker terhubung ke Artifact Registry dan menampilkan image yang tersedia di repositori Anda. Misalnya, respons di bawah menampilkan image container bernama
hello-appdi repositoriPROJECT_NAMEdius-west1-docker.pkg.dev.REPOSITORY TAG IMAGE ID CREATED SIZE us-west1-docker.pkg.dev/PROJECT_NAME/hello-repo/hello-app v1 f7cfe0d58569 21 minutes ago 11.5MB
Jika Anda belum menyiapkan image container, buat image container dengan mengikuti langkah-langkah di Men-deploy aplikasi yang di-containerkan.
Membuat Akun Layanan
Cluster Anda melakukan autentikasi menggunakan akun layanan Identity and Access Management (IAM).
Untuk membuat akun layanan baru, ikuti langkah-langkah berikut:
Buat akun layanan IAM dengan Google Cloud CLI.
gcloud iam service-accounts create ACCOUNT_NAMEGanti ACCOUNT_NAME dengan nama akun layanan Google Cloud baru.
Berikan izin Artifact Registry untuk akun layanan.
gcloud projects add-iam-policy-binding PROJECT_NAME \ --member serviceAccount:ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \ --role roles/artifactregistry.readerGanti kode berikut:
PROJECT_NAMEdengan project Google Cloud AndaACCOUNT_NAMEdengan Google Cloud nama akun layanan Anda
Download kunci akun layanan akun.
gcloud iam service-accounts keys create registry-access-key.json \ --iam-account ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.comGanti kode berikut:
PROJECT_NAMEACCOUNT_NAME
Sekarang Anda siap mengonfigurasi cluster pengguna untuk terhubung ke Artifact Registry.
Simpan kunci ke cluster Anda
Untuk memberikan kunci guna melakukan autentikasi ke Artifact Registry, simpan kunci akun layanan sebagai Secret Kubernetes dengan langkah-langkah berikut:
Gunakan
kubectluntuk membuat Secret.kubectl create secret docker-registry registry-secret \ --docker-server=LOCATION-docker.pkg.dev \ --docker-username=_json_key \ --docker-email=ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \ --docker-password="$(cat registry-access-key.json)"Ganti kode berikut:
LOCATION: lokasi regional atau multi-regional repositori.PROJECT_NAMEACCOUNT_NAME
Hapus salinan lokal kunci akun layanan Anda.
rm registry-access-key.json
Anda kini dapat mereferensikan Secret ini dalam beban kerja Anda.
Membuat workload dengan image pribadi
Untuk menggunakan image dari repositori container pribadi dengan workload, tetapkan
kolom spec.imagePullSecrets ke nama Secret Anda. Kolom ini berada di
lokasi yang berbeda untuk Pod dan
Deployment.
Membuat Pod
Untuk membuat Pod yang dapat mengakses container registry, Anda menetapkan kolom
spec.imagePullSecrets ke nama Secret Anda.
Buat Pod yang menentukan
spec.imagePullSecrets.apiVersion: v1 kind: Pod metadata: name: POD_NAME spec: containers: - name: CONTAINER_NAME image: LOCATION-docker.pkg.dev/PROJECT_NAME/hello-repo/hello-app:v1 imagePullSecrets: - name: registry-secretGanti kode berikut:
POD_NAME: nama Pod AndaCONTAINER_NAME: nama container di dalam PodLOCATIONPROJECT_NAME
Misalnya, untuk menarik image
hello-app, salin YAML berikut ke dalam file bernamahello-pod.yaml.apiVersion: v1 kind: Pod metadata: name: hello-pod spec: containers: - name: hello-container image: us-west1-docker.pkg.dev/example-project/hello-repo/hello-app:v1 imagePullSecrets: - name: registry-secretTerapkan konfigurasi ke cluster Anda dengan
kubectl.kubectl apply -f hello-pod.yamlKonfirmasi bahwa pod sedang berjalan dengan
kubectl get.kubectl get pod/hello-podRespons mencakup satu Pod dengan status
Running.NAME READY STATUS RESTARTS AGE hello-pod 1/1 Running 0 15s
Membuat Deployment
Untuk menggunakan repositori pribadi dalam Deployment, Anda menentukan
imagePullSecretdi dalam template.Misalnya, untuk mengonfigurasi Deployment yang menggunakan image
hello-app, buat file bernamahello-deployment.yamldengan konten berikut:apiVersion: apps/v1 kind: Deployment metadata: name: hello-app-deployment spec: selector: matchLabels: app: products department: sales replicas: 3 template: metadata: labels: app: products department: sales spec: containers: - name: hello image: LOCATION-docker.pkg.dev/PROJECT_NAME/hello-repo/hello-app:v1 env: - name: "PORT" value: "50001" imagePullSecrets: - name: registry-secretGanti kode berikut:
LOCATIONPROJECT_NAME
Terapkan konfigurasi ke cluster Anda dengan
kubectl.kubectl apply -f hello-deployment.yamlPastikan Deployment Anda berjalan dengan
kubectl pods.kubectl get pods --selector=app=productsOutput menampilkan tiga pod
Running.NAME READY STATUS RESTARTS AGE hello-app-deployment-67d9c6d98c-b69f2 1/1 Running 0 14m hello-app-deployment-67d9c6d98c-d6k5c 1/1 Running 0 14m hello-app-deployment-67d9c6d98c-p2md5 1/1 Running 0 14m
Pembersihan
Untuk menghapus resource yang Anda buat di halaman ini, jalankan perintah berikut:
kubectl apply -f hello-pod.yaml
kubectl delete -f hello-deployment.yaml