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-gkeuntuk 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-dockerGoogle Cloud CLI mendaftarkan pembantu kredensial untuk semua registry Docker yang didukung Google.
Pastikan Container Registry Anda menyertakan image dengan
docker images.docker imagesDocker terhubung ke Container Registry dan menampilkan image yang tersedia di repositori Container Registry Anda. Misalnya, respons di bawah menampilkan image container bernama
hello-appdi 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-nameGanti 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.objectViewerGanti 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.comGanti 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
kubectluntuk 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 dalam 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-nameGanti 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-secretTerapkan konfigurasi ke cluster Anda dengan
kubectl.env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-pod.yamlKonfirmasi bahwa pod sedang berjalan dengan
kubectl get.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pod/hello-podRespons mencakup satu Pod dengan status
Running.NAME READY STATUS RESTARTS AGE hello-pod 1/1 Running 0 15sMembuat Deployment
Untuk menggunakan repositori pribadi dalam Deployment, Anda menentukan
imagePullSecretdi dalam template.Misalnya, untuk membuat Deployment, 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: "gcr.io/project-id/hello-app:v1" env: - name: "PORT" value: "50001" imagePullSecrets: - name: gcr-secretTerapkan konfigurasi ke cluster Anda dengan
kubectl.env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-deployment.yamlPastikan Deployment Anda berjalan dengan
kubectl pods.env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=productsOutput-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