Container Compute Service (ACS) memungkinkan Anda menarik gambar dari Container Registry (ACR) tanpa menggunakan rahasia. Hal ini meningkatkan efisiensi dan keamanan. Topik ini menjelaskan cara menarik gambar dari instans ACR dalam kluster ACS tanpa menggunakan rahasia.
Informasi Latar Belakang
Container Registry (ACR) menyediakan hosting yang aman dan distribusi yang efisien untuk artefak cloud native standar. ACR tersedia dalam berbagai edisi, seperti Edisi Personal dan Edisi Perusahaan. Untuk informasi lebih lanjut, lihat Apa itu Container Registry?. ACS menyediakan metode terpadu untuk mengonfigurasi penarikan gambar tanpa kata sandi untuk berbagai edisi ACR.
Saat Anda mengonfigurasi layanan tanpa kata sandi untuk kluster ACS, ACS secara otomatis menyediakan kredensial otentikasi untuk menarik gambar dari ACR. Ini menyederhanakan proses pembuatan Pod, mencegah kebocoran kata sandi, dan meningkatkan keamanan.
Penarikan gambar tanpa kata sandi tidak didukung untuk gambar dari repositori selain ACR, seperti Docker Hub atau repositori yang dikelola sendiri.
Prasyarat
Sebelum mengonfigurasi penarikan gambar tanpa kata sandi dari ACR untuk kluster ACS, selesaikan tugas-tugas berikut:
Buat sebuah kluster ACS. Untuk informasi lebih lanjut, lihat Buat sebuah kluster ACS.
Buat sebuah instans ACR dan konfigurasikan repositori citra dan citranya.
Untuk informasi tentang cara mengonfigurasi sebuah instans ACR Edisi Personal, lihat Gunakan sebuah instans Edisi Personal untuk mendorong dan menarik citra.
Untuk informasi tentang cara mengonfigurasi sebuah instans ACR Edisi Perusahaan, lihat Gunakan sebuah instans Edisi Perusahaan untuk mendorong dan menarik citra.
Jika Anda menggunakan sebuah instans ACR Edisi Perusahaan, konfigurasikan metode aksesnya.
Secara default, sebuah instans baru ACR Edisi Perusahaan tidak terhubung ke jaringan apa pun. Anda harus mengonfigurasi Daftar Kontrol Akses (ACL) untuk mengizinkan akses ke instans tersebut melalui internet atau virtual private cloud (VPC).
Akses jaringan publik: Setelah Anda mengaktifkan akses jaringan publik, Anda dapat mengakses citra dalam instans Edisi Perusahaan melalui internet menggunakan titik akhir publik. Anda dapat mengakses citra lintas wilayah. Untuk informasi lebih lanjut, lihat Konfigurasikan akses melalui Internet.
Akses VPC: Untuk mengakses sebuah instans ACR Edisi Perusahaan melalui VPC, Anda harus memberikan izin yang diperlukan. Untuk informasi lebih lanjut, lihat Konfigurasikan akses melalui VPC.
Cara kerjanya
Komponen bebas kata sandi membaca konfigurasi Anda dari Konsol untuk menarik citra pribadi. Setelah Anda mengonfigurasi komponen, ia secara otomatis membuat rahasia di dalam kluster. Komponen kemudian mengaitkan rahasia tersebut dengan akun layanan yang Anda tentukan di dalam konfigurasi. Secara default, setiap Pod yang menggunakan akun layanan ini akan menggunakan rahasia yang dihasilkan untuk menarik citra. Hal ini memungkinkan Anda menarik citra tanpa kata sandi.
Instal dan konfigurasikan komponen bebas kata sandi
Masuk ke Konsol ACS. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster target dan klik ID-nya. Di panel navigasi kiri, pilih Operations > Add-ons.
Di halaman Add-ons, klik tab Security. Temukan aliyun-acr-credential-helper dan klik Install.

Di kotak dialog Parameters, klik Add di sebelah kanan AcrInstanceInfo untuk menambahkan informasi tentang satu atau lebih instans ACR. Konfigurasikan parameter seperti yang dijelaskan dalam contoh berikut dan klik Confirm.
Tambahkan AcrInstanceInfo.
CatatanKonfigurasi untuk skenario default adalah sebagai berikut:
Untuk menyinkronkan dengan instans ACR Edisi Personal, gunakan konfigurasi default untuk AcrInstanceInfo.
Untuk menyinkronkan dengan instans ACR Edisi Perusahaan, tentukan instanceID dan gunakan konfigurasi default untuk item AcrInstanceInfo lainnya.
Kunci
Deskripsi
Nilai
instanceID
ID dari instans ACR.
Temukan instans yang telah dibuat di Konsol Container Registry.
Edisi Perusahaan: Di halaman Instance Information, Anda dapat menemukan Instance ID. Nilainya adalah string yang dimulai dengan
cri-.Edisi Personal: Untuk mengonfigurasi penarikan bebas kata sandi untuk instans Edisi Personal, biarkan parameter ini kosong.
Nilai defaultnya kosong. Ini mengonfigurasi instans Edisi Personal di wilayah saat ini.
regionID
ID wilayah dari instans ACR.
ID wilayah tempat instans ACR berada. Sebagai contoh, ID wilayah untuk instans di wilayah China (Hangzhou) adalah
cn-hangzhou.Nilai defaultnya adalah wilayah dari kluster ACS. Jika instans ACR berada di wilayah yang sama dengan kluster ACS, biarkan parameter ini kosong.
domains
Nama domain yang digunakan untuk mengakses instans ACR.
Nama domain yang digunakan untuk mengakses citra. Pisahkan beberapa nama domain dengan koma (,).
Nilai default mencakup semua nama domain yang sesuai dengan instanceID dari instans ACR. Ini termasuk titik akhir publik (registry.*), titik akhir VPC (registry-vpc.*), dan titik akhir internal wilayah yang sama (registry-internal.*).
assumeRoleARN
(Opsional) ARN dari peran RAM pemilik repositori citra, yang dapat Anda peroleh di Langkah 4 dari Konfigurasikan penarikan citra lintas akun. Biarkan parameter ini kosong jika Anda tidak menarik citra lintas akun.
Contoh: acs:ram::123456789012****:test-rrsa-acr
Nilai defaultnya kosong.
expireDuration
(Opsional) Periode validitas kredensial sementara dalam skenario lintas akun. Biarkan parameter ini kosong jika Anda tidak menarik citra lintas akun.
PentingNilai dari expireDuration harus kurang dari atau sama dengan Maximum Session Duration dari peran pemilik repositori citra yang Anda atur di Langkah 4 dari Konfigurasikan penarikan citra lintas akun.
Nilai defaultnya adalah
3600.rrsaRoleARN
(Opsional) ARN dari peran RAM kluster ACS, yang dapat Anda peroleh di Langkah 3 dari Konfigurasikan penarikan citra lintas akun. Biarkan parameter ini kosong jika Anda tidak menarik citra lintas akun.
Contoh: acs:ram::987654321012****:demo-role-for-rrsa
Nilai defaultnya kosong.
rrsaOIDCProviderRoleARN
(Opsional) RRSA OpenID Connect (OIDC) Provider ARN dari kluster ACS, yang dapat Anda peroleh di Langkah 2 dari Konfigurasikan penarikan citra lintas akun. Biarkan parameter ini kosong jika Anda tidak menarik citra lintas akun.
Contoh: acs:ram::987654321012****:oidc-provider/ack-rrsa-abcd1234****
Nilai defaultnya kosong.
Konfigurasikan parameter lainnya.
Kunci
Deskripsi
Nilai
Aktifkan RRSA
Pilih kotak centang ini untuk mengaktifkan RAM Roles for Service Accounts (RRSA). Anda harus menyelesaikan konfigurasi terkait RRSA.
Opsi ini tidak dipilih secara default. Setelah Anda mengonfigurasi parameter terkait RRSA dan memilih kotak centang ini, Anda dapat menarik citra lintas akun.
watchNamespace
Namespace tempat Anda ingin menarik citra tanpa kata sandi.
Nilai defaultnya adalah
default. Jika Anda mengatur nilainya menjadi all, Anda dapat menarik citra tanpa kata sandi dari semua namespace. Untuk menentukan beberapa namespace, pisahkan mereka dengan koma (,).CatatanTentukan namespace bisnis Anda. Jangan tentukan semua atau namespace komponen sistem untuk mencegah kegagalan penarikan citra untuk komponen sistem.
serviceAccount
Akun layanan yang diterapkan oleh komponen bebas kata sandi.
Nilai defaultnya adalah
default.CatatanUntuk menentukan beberapa akun layanan, pisahkan mereka dengan koma (,). Jika Anda mengatur parameter ini ke asterisk (*), semua akun layanan di namespace yang ditentukan didukung.
expiringThreshold
Ambang batas kedaluwarsa untuk kredensial yang di-cache secara lokal.
Nilai defaultnya adalah
15m.CatatanKami sarankan Anda menggunakan 15m. Ini berarti kredensial diperbarui 15 menit sebelum kedaluwarsa.
notifyEmail
Tag email di rahasia yang dihasilkan oleh komponen bebas kata sandi.
Nilai defaultnya adalah
xxx@aliyun.com.
Konfigurasikan penarikan gambar lintas akun
Gunakan RRSA untuk menarik gambar lintas akun
Fitur RAM Roles for Service Accounts (RRSA) menyediakan isolasi izin tingkat pod dalam kluster ACS. Dengan mengaktifkan fitur RRSA untuk kluster ACS dan mendistribusikan ARN dari peran yang berwenang kepada pemilik repositori gambar yang berbeda, komponen tanpa kata sandi dapat menarik gambar ACR lintas akun.
Fitur RRSA hanya didukung untuk menarik gambar dari instance ACR Enterprise Edition (Basic, Standard, dan Premium).
Setelah Anda mengaktifkan RRSA, kredensial yang dihasilkan oleh komponen tidak mendukung penarikan gambar pribadi dari instance Edisi Personal. Metode autentikasi lain yang dijelaskan dalam topik ini juga tidak didukung.
Anda harus mengaktifkan RRSA untuk kluster sebelum mengonfigurasi pengaturan RRSA untuk add-on tanpa kata sandi. Jika Anda melakukan langkah-langkah ini dengan urutan yang salah, Anda harus menghapus pod add-on setelah konfigurasi selesai untuk memastikan bahwa fitur RRSA berlaku.
Aktifkan fitur RRSA untuk kluster ACS. Untuk informasi lebih lanjut, lihat Aktifkan fitur RRSA.
ACS secara otomatis membuat penyedia OpenID Connect (OIDC) RRSA untuk kluster. Di halaman detail kluster di Konsol ACS, pilih untuk melihat Provider URL dan Provider ARN.

Pemilik kluster menggunakan penyedia OIDC untuk mengonfigurasi peran RAM dan memberikan izin untuk mengasumsikan peran tersebut.
Buat peran RAM menggunakan penyedia OIDC atau hubungkan penyedia OIDC dengan peran RAM yang ada. Ini memungkinkan komponen tanpa kata sandi menggunakan izin peran untuk mengakses OpenAPI.
Buat peran RAM menggunakan penyedia OIDC
Masuk ke Konsol Resource Access Management (RAM) menggunakan Akun Alibaba Cloud.
Di panel navigasi di sebelah kiri, pilih . Pada halaman Roles, klik Create Role.
Di halaman Create Role, klik Switch To Editor. Atur Principal menjadi Identity Provider. Konfigurasikan informasi peran seperti yang dijelaskan dalam tabel berikut dan klik Confirm.
Contoh ini menggunakan konfigurasi berikut.
Parameter
Deskripsi
Identity Provider Type
OIDC.
Select Identity Provider
acs-rrsa-<cluster_id>. <cluster_id> adalah ID kluster Anda.
Condition
oidc:iss: Pertahankan nilai default.
oidc:aud: Pertahankan nilai default.
oidc:sub: Atur operator kondisi menjadi StringEquals. Atur nilainya dalam format system:serviceaccount:<namespace>:<serviceAccountName>.
<namespace>: Namespace tempat aplikasi berada.
<serviceAccountName>: Nama akun layanan.
Sesuai persyaratan add-on tanpa kata sandi, Anda harus memasukkan
system:serviceaccount:kube-system:aliyun-acr-credential-helper.
Di kotak dialog Create Role, atur Role Name menjadi demo-role-for-rrsa. Klik Confirm.
Hubungkan penyedia OIDC dengan peran RAM yang ada
Masuk ke Konsol RAM menggunakan Akun Alibaba Cloud.
Di panel navigasi di sebelah kiri, pilih dan klik nama peran RAM target.
Di tab Trust Policy, klik Edit Trust Policy. Untuk informasi lebih lanjut, lihat Ubah kebijakan kepercayaan peran RAM.
Tambahkan konten berikut ke daftar
Statementdalam kebijakan kepercayaan.{ "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": "sts.aliyuncs.com", "oidc:iss": "<oidc_issuer_url>", "oidc:sub": "system:serviceaccount:kube-system:aliyun-acr-credential-helper" } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } }PentingGanti
<oidc_issuer_url>dan<oidc_provider_arn>dengan Provider URL dan Provider ARN yang Anda peroleh di Langkah 2.
Berikan kebijakan
AliyunSTSAssumeRoleAccesskepada peran RAM. Ini memungkinkan komponen tanpa kata sandi untuk mengasumsikan peran tersebut. Untuk informasi lebih lanjut, lihat Berikan izin kepada peran RAM.Di halaman detail peran, pilih untuk melihat ARN peran RAM.

Konfigurasikan peran RAM untuk pemilik repositori gambar yang mempercayai peran RAM pemilik kluster dan memberikan izin penarikan gambar.
Buat peran RAM. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk akun Alibaba Cloud yang dipercaya.
Percayai peran RAM kluster ACS dan izinkan untuk mengasumsikan peran pemilik repositori. Untuk informasi lebih lanjut, lihat Ubah kebijakan kepercayaan peran RAM. Kode berikut menunjukkan contoh dokumen kebijakan:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<acs_role_arn>" ] } } ], "Version": "1" }PentingGanti
<acs_role_arn>dengan ARN peran RAM kluster ACS yang Anda peroleh di Langkah 3.Berikan izin penarikan gambar kepada peran RAM.
Buat kebijakan kustom dalam mode edit skrip menggunakan dokumen kebijakan berikut. Kami merekomendasikan Anda mengatur Name kebijakan menjadi
AliyunACRBasicAccess. Untuk informasi lebih lanjut, lihat Buat kebijakan kustom.{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] }Berikan izin
AliyunACRBasicAccesskepada peran RAM. Untuk informasi lebih lanjut, lihat Berikan izin kepada peran RAM.
[Opsional] Atur Maximum Session Duration untuk peran RAM. Nilainya berkisar antara 3600 hingga 43200 detik. Jika Anda mengatur Maximum Session Duration, Anda juga harus mengatur parameter expireDuration saat mengonfigurasi AcrInstanceInfo di Langkah 5.
Di halaman detail peran, pilih untuk melihat ARN peran RAM.

Dalam konfigurasi komponen tanpa kata sandi, pilih Aktifkan RRSA dan konfigurasikan AcrInstanceInfo.
Ubah parameter di bagian AcrInstanceInfo seperti yang dijelaskan dalam tabel berikut.
Kunci
Deskripsi
Nilai
Aktifkan RRSA
Pilih kotak centang ini untuk mengaktifkan RRSA. Anda harus menyelesaikan konfigurasi terkait RRSA.
Dipilih
rrsaRoleARN
ARN peran RAM kluster ACS yang Anda peroleh di Langkah 3.
<acs_role_arn>rrsaOIDCProviderRoleARN
Provider ARN penyedia OIDC RRSA untuk kluster ACS yang Anda peroleh di Langkah 2.
oidc_provider_arnassumeRoleARN
ARN peran RAM pemilik repositori gambar yang Anda peroleh di Langkah 4.
<acr_role_arn>expireDuration
Periode validitas kredensial sementara yang dihasilkan oleh komponen tanpa kata sandi.
PentingNilai expireDuration harus kurang dari atau sama dengan Maximum Session Duration peran RAM pemilik repositori gambar yang Anda atur di Langkah 4.
Nilai defaultnya adalah 3600. Nilainya harus dalam rentang [3600, 43200]. Satuan: detik.