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-docker
Alat command line
gcloud
mendaftarkan helper kredensial untuk semua registry Docker yang didukung Google.Pastikan Artifact Registry Anda menyertakan image dengan perintah
docker images
.docker images
Docker terhubung ke Artifact Registry dan menampilkan image yang tersedia di repositori Anda. Misalnya, respons di bawah menampilkan image container bernama
hello-app
di repositoriPROJECT_NAME
dius-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_NAME
Ganti 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.reader
Ganti kode berikut:
PROJECT_NAME
dengan project Google Cloud AndaACCOUNT_NAME
dengan 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.com
Ganti kode berikut:
PROJECT_NAME
ACCOUNT_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
kubectl
untuk 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_NAME
ACCOUNT_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 registry container, 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-secret
Ganti kode berikut:
POD_NAME
: nama Pod AndaCONTAINER_NAME
: nama container di dalam PodLOCATION
PROJECT_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-secret
Terapkan konfigurasi ke cluster Anda dengan
kubectl
.kubectl apply -f hello-pod.yaml
Konfirmasi bahwa pod sedang berjalan dengan
kubectl get
.kubectl get pod/hello-pod
Respons 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
imagePullSecret
di dalam template.Misalnya, untuk mengonfigurasi Deployment yang menggunakan image
hello-app
, buat file bernamahello-deployment.yaml
dengan 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-secret
Ganti kode berikut:
LOCATION
PROJECT_NAME
Terapkan konfigurasi ke cluster Anda dengan
kubectl
.kubectl apply -f hello-deployment.yaml
Pastikan Deployment Anda berjalan dengan
kubectl pods
.kubectl get pods --selector=app=products
Output 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