Topik ini menjelaskan cara menggunakan GKE di AWS dengan repositori image container pribadi, seperti Container Registry (GCR).
Sebelum memulai
Sebelum Anda mulai menggunakan GKE di AWS, pastikan Anda telah melakukan tugas berikut:
- Selesaikan Prasyarat.
- Instal layanan pengelolaan.
- Buat cluster pengguna.
- Dari direktori
anthos-aws
, gunakananthos-gke
untuk beralih konteks ke cluster pengguna Anda. Ganti CLUSTER_NAME dengan nama cluster pengguna Anda.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
- Membangun dan mengirim image Docker ke Container Registry. Contoh dalam topik ini menggunakan container
hello-app
, yang dibangun dengan langkah-langkah dari Men-deploy aplikasi dalam container di dokumentasi GKE on Google Cloud .
Container Registry Pribadi
Container registry menyimpan dan mendistribusikan image container. Penginstalan GKE di AWS Anda dapat mengakses image publik secara default.
Memeriksa image di Container 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 Container Registry dengan Google Cloud CLI:
gcloud auth configure-docker
Google Cloud CLI mendaftarkan pembantu kredensial untuk semua registry Docker yang didukung Google.
Pastikan Container Registry Anda menyertakan image dengan
docker images
.docker images
Docker terhubung ke Container Registry dan menampilkan image yang tersedia di repositori Container Registry Anda. Misalnya, respons di bawah menampilkan image container bernama
hello-app
di repositori project-id.REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/project-id/hello-app v1 732f02cea7cb 12 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 pengguna Anda melakukan autentikasi menggunakan akun layanan Identity and Access Management (IAM).
Untuk membuat akun layanan baru, lakukan 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 akses akun layanan ke Container Registry.
gcloud projects add-iam-policy-binding project-id \ --member serviceAccount:account-name@project-id.iam.gserviceaccount.com \ --role roles/storage.objectViewer
Ganti kode berikut:
- project-id dengan project Google Cloud Anda
- account-name dengan Google Cloud nama akun layanan Anda
Download kunci akun layanan akun.
gcloud iam service-accounts keys create key.json \ --iam-account account-name@project-id.iam.gserviceaccount.com
Ganti kode berikut:
- project-id dengan project Google Cloud Anda
- account-name dengan Google Cloud nama akun layanan Anda
Sekarang Anda siap mengonfigurasi cluster pengguna untuk terhubung ke Container Registry.
Tentukan Secret Kubernetes
Untuk memberikan kunci guna melakukan autentikasi ke Container Registry, simpan kunci akun layanan sebagai Secret Kubernetes dengan melakukan langkah-langkah berikut:
Gunakan
kubectl
untuk membuat secret.env HTTPS_PROXY=http://localhost:8118 \ kubectl create secret docker-registry gcr-secret \ --docker-server=gcr.io \ --docker-username=_json_key \ --docker-email=account-name@project-id.iam.gserviceaccount.com \ --docker-password="$(cat key.json)"
Ganti kode berikut:
- project-id dengan project Google Cloud Anda
- account-name dengan Google Cloud nama akun layanan Anda
Hapus salinan lokal kunci akun layanan Anda.
rm key.json
Anda kini dapat mereferensikan secret ini di workload Anda.
Membuat workload dengan image pribadi
Untuk menggunakan image dari repositori container pribadi dengan workload, Anda menetapkan
kolom spec.imagePullSecrets
ke nama rahasia 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: gcr.io/project-id/hello-app:v1 imagePullSecrets: - name: secret-name
Ganti kode berikut:
- pod-name dengan nama Pod Anda
- container-name dengan nama container di dalam Pod
- project-id dengan project Google Cloud Anda
- secret-name dengan nama secret registri Anda
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: gcr.io/project-id/hello-app:v1 imagePullSecrets: - name: gcr-secret
Terapkan konfigurasi ke cluster Anda dengan
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-pod.yaml
Konfirmasi bahwa pod sedang berjalan dengan
kubectl get
.env HTTPS_PROXY=http://localhost:8118 \ 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 membuat Deployment, 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: "gcr.io/project-id/hello-app:v1" env: - name: "PORT" value: "50001" imagePullSecrets: - name: gcr-secret
Terapkan konfigurasi ke cluster Anda dengan
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-deployment.yaml
Pastikan Deployment Anda berjalan dengan
kubectl pods
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=products
Output-nya berisi 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