Panduan ini menjelaskan cara mengambil image dari Artifact Registry untuk di-deploy ke Google Kubernetes Engine. Jika ingin men-deploy ke layanan Kubernetes pihak ketiga atau yang dihosting sendiri, Anda harus mengonfigurasi autentikasi ke Google Cloud sebelum mengambil image dari Artifact Registry. Untuk mengautentikasi ke Google Cloud dari workload Kubernetes di luar Google Cloud, lihat Mengonfigurasi Workload Identity Federation dengan Kubernetes.
Google Kubernetes Engine dapat mengambil image langsung dari repositori Docker. Beberapa versi menyertakan dukungan yang telah dikonfigurasi sebelumnya untuk mengambil image dari repositori Docker Artifact Registry.
Persyaratan
Bagian ini menjelaskan persyaratan untuk berintegrasi dengan GKE.
Izin
GKE menggunakan setelan default berikut saat Anda membuat node pool atau cluster:
- Akun layanan default Compute Engine adalah identitas untuk node.
Akun layanan default ini memiliki peran Pembaca Artifact Registry
(
roles/artifactregistry.reader
) jika Anda telah menonaktifkan pemberian peran Editor dasar. - Node yang Anda buat dengan akun layanan default memiliki cakupan akses default Compute Engine, termasuk akses hanya baca ke penyimpanan. Anda tidak dapat mengubah cakupan akses pada node yang ada.
Jika Anda menggunakan setelan default ini, GKE dapat mengambil image dari repositori Artifact Registry di project Google Cloud yang sama. Jika Anda perlu mendorong image dari node, menarik atau mendorong image di seluruh project, menggunakan akun layanan yang disediakan pengguna, atau memiliki kebutuhan lain yang tidak didukung oleh setelan default, lihat dokumentasi kontrol akses untuk mengetahui informasi tentang cara mengonfigurasi akses.
Jika Anda mengalami error "izin ditolak", lihat error 4xx.
Versi GKE
Tabel berikut mencantumkan versi GKE minimum yang diperlukan untuk membuat cluster yang memiliki izin default untuk mengambil penampung dari repositori Docker dalam project yang sama.
Versi | Patch minimum yang diperlukan |
---|---|
1,14 | 1.14.10-gke.22 |
1,15 | 1.15.9-gke.8 |
Jika versi GKE Anda lebih lama dari versi minimum, Anda harus mengonfigurasi imagePullSecrets Kubernetes untuk memungkinkan GKE mengambil image.
Jika GKE berada dalam project yang berbeda dengan Artifact Registry, berikan izin Artifact Registry ke akun layanan yang digunakan node GKE Anda. Secara default, node menggunakan akun layanan default Compute Engine.
Menjalankan image
Anda dapat menjalankan image Artifact Registry di cluster Google Kubernetes Engine menggunakan perintah berikut:
kubectl run [NAME] --image=LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE:TAG
dengan:
- LOCATION adalah lokasi regional atau multi-regional repositori.
- PROJECT adalah project ID Konsol Google Cloud Anda.
Jika project ID Anda berisi titik dua (
:
), lihat Project cakupan domain. - REPOSITORY adalah nama repositori tempat image disimpan.
- IMAGE adalah nama image di repositori.
- TAG adalah tag untuk versi image yang ingin Anda tarik.
Untuk informasi selengkapnya tentang perintah Kubernetes, lihat Ringkasan kubectl.
Memecahkan masalah image node containerd
Mulai dari node GKE versi 1.19, image node default untuk node Linux adalah varian Container-Optimized OS dengan containerd (cos_containerd
) sebagai ganti dari Container-Optimized OS dengan varian Docker (cos
).
Meskipun biner Docker tersedia di node Linux yang menggunakan containerd sebagai runtime, sebaiknya jangan menggunakannya. Docker tidak mengelola container yang dijalankan Kubernetes di node containerd, sehingga Anda tidak dapat menggunakannya untuk melihat atau berinteraksi dengan container Kubernetes yang berjalan menggunakan perintah Docker atau Docker API.
Untuk proses debug atau pemecahan masalah pada node Linux, Anda dapat berinteraksi dengan containerd menggunakan alat command line portabel yang dibangun untuk runtime container Kubernetes: crictl
. crictl
mendukung fungsi umum untuk melihat container
dan image, membaca log, dan menjalankan perintah container.
Untuk informasi selengkapnya, lihat panduan pengguna crictl dan dokumentasi GKE tentang containerd.
Untuk node Windows Server, daemon containerd berjalan sebagai layanan Windows bernama containerd
. Log tersedia di direktori log berikut:
C:\etc\kubernetes\logs\containerd.log
dan ditampilkan di Logs Explorer
di bagian LOG NAME: "container-runtime"
.
Mengambil dari repositori Artifact Registry publik
Setelah men-deploy dan membuat image ke cluster GKE dengan node containerd, Anda dapat terhubung ke instance VM menggunakan SSH dan menjalankan perintah crictl
untuk memecahkan masalah.
Repositori Artifact Registry publik tidak memerlukan autentikasi. crictl
juga dapat digunakan untuk mengambil image di repositori Artifact Registry pribadi.
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Dalam daftar instance virtual machine, klik panah di samping SSH di baris instance yang ingin Anda hubungkan.
Pilih "Buka di jendela browser" atau metode koneksi pilihan Anda dari opsi drop-down.
Konsol Google Cloud akan membuka jendela terminal baru. Gunakan
crictl
untuk mengambil image dari Artifact Registry:crictl pull IMAGE_LOCATION:TAG
Outputnya akan terlihat seperti berikut:
Image is up to date for sha256:0f25067aa9c180176967b4b50ed49eed096d43fa8c17be9a5fa9bff05933bee5
Saat mengambil image dari repositori pribadi Artifact Registry, Anda harus mengautentikasi ke repositori. Anda dapat menggunakan token akses untuk memberikan kredensial Anda.
gcloud
Pastikan Anda memiliki Google Cloud CLI versi terbaru
gcloud components update
Hubungkan ke VM:
gcloud compute ssh --project=PROJECT_ID \ --zone=ZONE \ VM_NAME
Ganti kode berikut:
PROJECT_ID
: ID project yang berisi VMZONE
: nama zona tempat VM beradaVM_NAME
: nama VM
Jika telah menetapkan properti default untuk Google Cloud CLI, Anda dapat menghilangkan flag
--project
dan--zone
dari perintah ini. Contoh:gcloud compute ssh VM_NAME
Jika Anda belum membuat kunci SSH, SSH keygen akan membuatnya untuk Anda. Masukkan frasa sandi atau biarkan kosong saat diminta.
Gunakan
crictl
untuk mengambil image dari Artifact Registry:crictl pull IMAGE_LOCATION:TAG
Outputnya akan terlihat seperti berikut:
Image is up to date for sha256:0f25067aa9c180176967b4b50ed49eed096d43fa8c17be9a5fa9bff05933bee5
Saat mengambil image dari repositori pribadi Artifact Registry, Anda harus mengautentikasi ke repositori. Anda dapat menggunakan token akses untuk memberikan kredensial Anda.
Menarik dari repositori Artifact Registry pribadi
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Dalam daftar instance virtual machine, klik panah di samping SSH di baris instance yang ingin Anda hubungkan.
Pilih "Buka di jendela browser" dari opsi drop-down.
Konsol Google Cloud akan membuka jendela terminal baru. Buat token akses akun layanan Compute Engine menggunakan
curl
.curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"
Outputnya akan terlihat seperti contoh berikut:
"access_token":"ya29.c.KpkBCQgdwv6LrZ2tjrCpG6snWwPMX29LzMeUmAV_Hq_XaxUurfXcCfGZfASGh_KbdmUYTvkuV3sh-WaSBplEskdP6Tc HDsTv4B9hMyvoL4M9HrzKHuKTa1ZGj_3iQ1lwq_dAMxAPGjxEVKexatwN2KP0EAWyb6R55Cuu8ItgLf9f4pm9lC5zH4Qo0fkxPUsnCGRBe4AYxEpN6T sh","expires_in":3526,"token_type":"Bearer"}
Salin nilai
access_token
dari output yang ditampilkan tanpa tanda petik.Ambil gambar menggunakan
crictl pull --creds
dan nilaiaccess_token
yang disalin di langkah sebelumnya.crictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" IMAGE_LOCATION:TAG
Outputnya akan terlihat seperti berikut:
Image is up to date for sha256:0f25067aa9c180176967b4b50ed49eed096d43fa8c17be9a5fa9bff05933bee5
gcloud
Pastikan Anda memiliki Google Cloud CLI versi terbaru
gcloud components update
Hubungkan ke VM:
gcloud compute ssh --project=PROJECT_ID \ --zone=ZONE \ VM_NAME
Ganti variabel berikut:
PROJECT_ID
: ID project yang berisi VMZONE
: nama zona tempat VM beradaVM_NAME
: nama VM
Jika telah menetapkan properti default untuk Google Cloud CLI, Anda dapat menghilangkan flag
--project
dan--zone
dari perintah ini. Contoh:gcloud compute ssh VM_NAME
Jika Anda belum membuat kunci SSH, SSH keygen akan membuatnya untuk Anda. Masukkan frasa sandi atau biarkan kosong saat diminta.
Buat token akses akun layanan Compute Engine menggunakan
curl
.curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"
Outputnya akan terlihat seperti berikut:
"access_token":"ya29.c.KpkBCQgdwv6LrZ2tjrCpG6snWwPMX29LzMeUmAV_Hq_XaxUurfXcCfGZfASGh_KbdmUYTvkuV3sh-WaSBplEskdP6Tc HDsTv4B9hMyvoL4M9HrzKHuKTa1ZGj_3iQ1lwq_dAMxAPGjxEVKexatwN2KP0EAWyb6R55Cuu8ItgLf9f4pm9lC5zH4Qo0fkxPUsnCGRBe4AYxEpN6T sh","expires_in":3526,"token_type":"Bearer"}
Salin nilai
access_token
dari output yang ditampilkan tanpa tanda petik.Ambil gambar menggunakan
crictl pull --creds
dan nilaiaccess_token
yang disalin di langkah sebelumnya.crictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" IMAGE_LOCATION:TAG
Outputnya akan terlihat seperti berikut:
Image is up to date for sha256:0f25067aa9c180176967b4b50ed49eed096d43fa8c17be9a5fa9bff05933bee5
crictl
memungkinkan developer men-debug runtime tanpa perlu menyiapkan
komponen Kubernetes. Untuk mengetahui daftar lengkap perintah, lihat dokumen crictl
dan dokumen proses debug Kubernetes.