Komponen bebas-rahasia dari Layanan Kontainer untuk Kubernetes (ACK) mengotomatiskan proses autentikasi penarikan gambar dan menghilangkan kebutuhan untuk mengonfigurasi imagePullSecrets. Topik ini menjelaskan cara memasang, mengonfigurasi, dan menggunakan komponen bebas-rahasia untuk penarikan gambar serta tindakan pencegahan yang relevan.
Cara kerja komponen bebas-rahasia
Jika Anda tidak mengaktifkan Penarikan dari Pengguna Anonim untuk instance Container Registry, Anda harus memberikan nama pengguna dan kata sandi untuk autentikasi setiap kali ingin menarik gambar kontainer dari instance Container Registry untuk cluster ACK. Anda dapat menyimpan nama pengguna dan kata sandi dalam rahasia Kubernetes untuk memfasilitasi autentikasi. Namun, metode ini mungkin memiliki masalah berikut:
Rahasia dikodekan dalam Base64 plaintext dan mudah bocor.
Anda harus menentukan parameter
imagePullSecretssetiap kali menarik gambar untuk beban kerja.Secara default, rahasia hanya dapat digunakan dalam namespace rahasia tersebut.
Untuk menyelesaikan masalah di atas, Anda dapat menggunakan komponen bebas-rahasia dari ACK. Prosedur berikut menjelaskan cara kerja komponen tersebut:
aliyun-acr-credential-helper mendapatkan akun sementara dan token dari instance Container Registry.
aliyun-acr-credential-helper menyimpan akun sementara dan token dalam rahasia.
aliyun-acr-credential-helper mengaitkan rahasia dengan akun layanan yang Anda tentukan dalam ConfigMap acr-configuration.
Secara default, beban kerja dalam akun layanan menggunakan akun sementara dan token yang disimpan dalam rahasia untuk menarik gambar.
aliyun-acr-credential-helper dapat mengelola akun layanan di beberapa namespace secara bersamaan dan secara berkala memperbarui akun sementara dan token yang disimpan dalam rahasia berdasarkan konfigurasi Anda dalam ConfigMap. Ini mengurangi risiko kebocoran akun sementara dan token. aliyun-acr-credential-helper menghilangkan kebutuhan untuk menentukan imagePullSecrets untuk beban kerja Anda. Anda tidak dikenakan biaya untuk menggunakan aliyun-acr-credential-helper.
Hanya instance Container Registry Edisi Personal yang dibuat pada atau sebelum 8 September 2024 dan instance Container Registry Edisi Enterprise yang mendukung aliyun-acr-credential-helper.
Instance Container Registry Edisi Personal yang dibuat pada atau setelah 9 September 2024 tidak mendukung aliyun-acr-credential-helper. Jika Anda ingin menarik gambar dari instance Container Registry Edisi Personal yang dibuat setelah 8 September 2024, kami sarankan Anda menyimpan nama pengguna dan token yang digunakan untuk masuk ke instance Edisi Personal dalam rahasia dan kemudian merujuk rahasia tersebut dalam parameter
imagePullSecretsdalam file YAML beban kerja.
Edisi komponen bebas-rahasia
Komponen bebas-rahasia yang disediakan oleh ACK tersedia dalam edisi dikelola (managed-aliyun-acr-credential-helper) dan edisi mandiri (aliyun-acr-credential-helper). Anda hanya dapat memasang satu edisi pada saat yang sama. Tabel berikut membandingkan edisi-edisi tersebut.
Item | managed-aliyun-acr-credential-helper | aliyun-acr-credential-helper (edisi mandiri) |
Versi Cluster yang Didukung |
|
|
Metode Penerapan | Diterapkan di bidang kontrol cluster. | Diterapkan di cluster Kubernetes menggunakan beban kerja. Secara default, pod yang memiliki 0,5 vCPU dan 0,5 GiB memori dibuat untuk aliyun-acr-credential-helper (edisi mandiri) di namespace kube-system cluster. |
Log Permintaan Komponen | Tidak didukung. | Didukung. |
Cara Menarik Gambar dari Instance Container Registry Lintas Akun Alibaba Cloud | Menggunakan fitur RAM Roles for Service Accounts (RRSA). | Menggunakan peran pekerja, RRSA, atau pasangan AccessKey. |
Aktifkan Fitur Webhook untuk Memastikan Penggunaan Instan Akun Layanan | Tidak didukung. | Didukung. |
Kartu di Konsol Container Registry (Anda dapat memeriksa edisi komponen di halaman manajemen komponen di konsol Container Registry.) |
|
|
Prasyarat
Versi cluster Anda didukung oleh edisi komponen bebas-rahasia. Untuk informasi lebih lanjut, lihat tabel di bagian "Edisi Komponen Bebas-Rahasia" sebelumnya dari topik ini.
Instance Container Registry Anda adalah instance Edisi Personal yang dibuat pada atau sebelum 8 September 2024 atau instance Edisi Enterprise.
Peran RAM yang menggunakan komponen bebas-rahasia diberi izin yang diperlukan untuk mengakses instance Container Registry, membaca dan menulis ke repositori gambar, serta mengelola dan memperbarui rahasia. Jika RAM belum diberi izin, kunjungi Berikan Izin ke Peran RAM.
Menggunakan managed-aliyun-acr-credential-helper
Pasang komponen
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan cluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Add-ons, klik tab Security, temukan kartu aliyun-acr-credential-helper (Managed) di bagian Keamanan, lalu klik Install in the lower-right corner of the card. di pojok kanan bawah kartu.
Di halaman Install aliyun-acr-credential-helper, Anda dapat melihat parameter terkait AcrInstanceInfo dan parameter lainnya. Parameter terkait AcrInstanceInfo menentukan informasi tentang instance Container Registry yang ingin Anda kelola dengan komponen bebas-rahasia. Parameter lainnya menentukan informasi tentang komponen bebas-rahasia. Tabel berikut menjelaskan parameter tersebut.
CatatanAnda dapat memodifikasi parameter terkait AcrInstanceInfo dan parameter lainnya setelah komponen bebas-rahasia dipasang.

Parameter tentang instance Container Registry terkait
AcrInstanceInfo
Deskripsi
InstanceId
ID instance Container Registry. Anda dapat memperoleh ID di konsol Container Registry.
PentingBiarkan parameter ini kosong jika Anda menggunakan instance Container Registry Edisi Personal. Anda harus menentukan parameter ini jika Anda menggunakan instance Container Registry Edisi Enterprise.
regionId
ID wilayah instance Container Registry. Anda dapat memperoleh ID wilayah di konsol Container Registry.
PentingAnda harus menentukan parameter ini jika ingin menarik gambar lintas wilayah.
domains
Nama domain yang digunakan komponen bebas-rahasia untuk mengakses instance Container Registry. Secara default, semua nama domain publik dan nama domain VPC instance Container Registry diisi. Anda dapat menentukan nama domain tertentu. Pisahkan beberapa nama domain dengan koma (,).
Tentukan parameter ini hanya jika Anda ingin menarik gambar lintas akun
assumeRoleARN
Nama sumber daya cloud Alibaba (ARN) dari peran RAM yang diasumsikan oleh pemilik instance Container Registry.
expireDuration
Periode validitas rahasia yang digunakan untuk menarik gambar lintas akun Alibaba Cloud. Nilai valid: 3600 hingga 43200. Nilai default: 3600. Unit: detik. Set MaxSessionDuration dari peran RAM Akun B menjadi 43200.
rrsaRoleARN
ARN dari peran RAM yang diasumsikan oleh pemilik cluster ACK.
rrsaOIDCProviderRoleARN
ARN dari OIDC (OpenID Connect) IdP (penyedia identitas) cluster ACK.
Parameter tentang komponen bebas-rahasia
Parameter
Deskripsi
Specifies whether to enable RRSA
Pilih opsi ini untuk mengaktifkan fitur RRSA jika Anda ingin menarik gambar lintas akun.
watchNamespace
Tentukan namespace dari mana Anda ingin menarik gambar tanpa menggunakan rahasia. Nilai default:
default. Nilaiallmenentukan semua namespace dalam instance Container Registry. Anda dapat menentukan beberapa namespace. Pisahkan beberapa namespace dengan koma (,). Kami sarankan Anda mengonfigurasi namespace bisnis Anda untuk parameter ini. Jika Anda mengatur parameter ini keallatau namespace tempat komponen sistem cluster disimpan, gambar komponen sistem mungkin gagal ditarik.serviceAccount
Tentukan akun layanan yang terkait dengan managed-aliyun-acr-credential-helper. Nilai default:
Default. NilaiDefaultmenentukan akun layanan default dari semua namespace yang ditentukan. Nilai asterisk (*) menentukan semua akun layanan dalam namespace yang ditentukan. Anda dapat menentukan beberapa akun layanan. Pisahkan akun layanan dengan koma (,).expiringThreshold
Tentukan periode waktu setelah rahasia kedaluwarsa. Nilai default:
15m. Kami sarankan Anda menggunakan nilai default. Nilai default menentukan bahwa rahasia diperbarui otomatis 15 menit sebelum rahasia kedaluwarsa.notifyEmail
Anda tidak perlu menentukan parameter ini.
Perbarui konfigurasi komponen bebas-rahasia
Untuk memperbarui konfigurasi komponen bebas-rahasia, Anda dapat mengklik Configuration di pojok kanan bawah kartu aliyun-acr-credential-helper (Managed) di halaman Add-ons. Untuk informasi tentang parameter yang digunakan untuk memperbarui konfigurasi, lihat tabel sebelumnya "Parameter tentang instance Container Registry terkait" dan "Parameter tentang komponen bebas-rahasia".

Tarik gambar
Setelah Anda memasang dan mengonfigurasi komponen bebas-rahasia, Anda dapat menentukan akun layanan yang terkait dengan komponen bebas-rahasia saat membuat beban kerja untuk menarik gambar tanpa menggunakan rahasia.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
serviceAccountName: my-service-account # Tentukan akun layanan yang terkait dengan komponen bebas-rahasia.
containers:
- name: nginx
image: ******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest # Tentukan alamat gambar Container Registry.
ports:
- containerPort: 80Operasi lainnya
Tarik gambar lintas akun
managed-aliyun-acr-credential-helper memungkinkan Anda menarik gambar lintas akun Alibaba Cloud menggunakan RAM Roles for Service Accounts (RRSA).
Hanya di Cluster ACK Basic, Cluster ACK Pro, dan Cluster ACK Serverless Pro yang menjalankan Kubernetes 1.22 atau lebih baru, Anda dapat mengonfigurasi RRSA untuk menarik gambar dari instance Container Registry Edisi Enterprise.
Setelah Anda mengaktifkan fitur RRSA, rahasia yang dihasilkan oleh managed-aliyun-acr-credential-helper tidak dapat digunakan untuk menarik gambar pribadi instance Container Registry Edisi Personal. Setelah Anda mengaktifkan fitur RRSA, Anda tidak dapat menggunakan metode autentikasi lain yang dijelaskan dalam topik ini, seperti metode pasangan AccessKey.
Untuk mengaktifkan fitur RRSA untuk managed-aliyun-acr-credential-helper, Anda harus mengaktifkan RRSA untuk cluster di tab Informasi Dasar halaman Informasi Cluster di konsol ACK dan kemudian mengonfigurasi RRSA untuk managed-aliyun-acr-credential-helper. Jika Anda mengonfigurasi RRSA untuk managed-aliyun-acr-credential-helper dan kemudian mengaktifkan RRSA untuk cluster, Anda harus menghapus pod yang sesuai dengan managed-aliyun-acr-credential-helper setelah Anda mengaktifkan RRSA untuk cluster. Ini memungkinkan RRSA berfungsi.
Aktifkan fitur RRSA untuk cluster. Untuk informasi lebih lanjut, lihat bagian "Aktifkan RRSA" dari topik Gunakan RRSA untuk Mengotorisasi Pod yang Berbeda untuk Mengakses Layanan Cloud yang Berbeda.
Setelah fitur RRSA diaktifkan untuk cluster, navigasikan ke bagian Security and Auditing di bawah tab Basic Information. Jika Anda mengarahkan mouse ke label Enabled di sebelah RRSA OIDC, URL dan Nama Sumber Daya Alibaba Cloud (ARN) dari penyedia OpenID Connect (OIDC) ditampilkan.

Berikan izin kepada pengguna RAM pemilik cluster yang diperlukan untuk mengakses sumber daya Container Registry lintas akun.
Setelah Anda mengaktifkan fitur RRSA untuk cluster, Anda harus melakukan operasi berikut untuk memberikan izin kepada pengguna RAM pemilik cluster. Misalnya, cluster saat ini berada di Akun A dan instance Container Registry berada di Akun B. Jika Anda ingin menarik gambar dari instance Container Registry, Anda harus memberikan cluster di Akun A izin untuk mengakses sumber daya Container Registry Akun B.
Konfigurasikan peran RAM Akun A.
Buat peran RAM di Akun A dan lampirkan kebijakan AliyunSTSAssumeRoleAccess ke peran RAM. Kebijakan ini memberikan izin kepada peran RAM untuk mengasumsikan peran RAM lainnya. Modifikasi kebijakan kepercayaan peran RAM, seperti yang ditunjukkan dalam kode berikut.
Ganti
<oidc_issuer_url>dalam contoh dengan URL OIDC IdP cluster yang Anda catat di Langkah 1.Ganti
<oidc_provider_arn>dalam contoh dengan ARN OIDC IdP cluster yang Anda catat di Langkah 1.
{ "Statement": [ { "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>" ] } } ], "Version": "1" }Konfigurasikan peran RAM Akun B.
Buat peran RAM yang memiliki izin cr.* di Akun B. Klik nama peran RAM. Di tab Trust Policy, masukkan ARN dari peran RAM Akun A di bidang Principal kebijakan kepercayaan. Lampirkan kebijakan berikut ke peran RAM Akun B. Kebijakan ini memberikan izin kepada peran RAM Akun B untuk mendapatkan informasi tentang instance Container Registry dan menarik gambar dari instance tersebut.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] }Anda dapat menentukan parameter MaxSessionDuration untuk peran RAM. Nilai valid untuk parameter ini berkisar antara 3600 hingga 43200 detik. Anda harus menentukan parameter expireDuration di langkah 7 berikutnya saat mengonfigurasi managed-aliyun-acr-credential-helper. Untuk informasi lebih lanjut, lihat Tentukan Durasi Sesi Maksimum untuk Peran RAM. Kami sarankan Anda menentukan nilai yang sama untuk MaxSessionDuration dan expireDuration. Nilai expireDuration bisa lebih kecil atau sama dengan nilai MaxSessionDuration.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan cluster yang Anda inginkan dan klik namanya. Di panel kiri, klik Cluster Information.
Di panel navigasi kiri, pilih .
Di halaman Add-ons, klik tab Security, temukan kartu aliyun-acr-credential-helper (Managed) di bagian Security, lalu klik Configuration di pojok kanan bawah kartu. Di kotak dialog aliyun-acr-credential-helper Parameters, klik Add lalu gunakan informasi instance Container Registry Akun B untuk mengonfigurasi parameter di bagian AcrInstanceInfo. Klik OK. Kemudian, pengguna dapat menarik gambar dari instance Container Registry Akun B.
Menggunakan aliyun-acr-credential-helper
Pasang komponen
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan cluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Add-ons, klik tab Security, temukan kartu aliyun-acr-credential-helper di bagian Keamanan, lalu klik Install di pojok kanan bawah kartu.
Di kotak dialog Install aliyun-acr-credential-helper, pilih mode izin yang digunakan komponen dari daftar drop-down tokenMode lalu klik OK. Tabel berikut menjelaskan mode izin yang dapat digunakan oleh komponen. Setelah Anda memasang komponen, Anda harus mengonfigurasi komponen sebelum dapat menggunakan komponen untuk menarik gambar tanpa menggunakan rahasia. Untuk informasi tentang cara mengonfigurasi komponen, lihat Perbarui Konfigurasi Komponen Bebas-Rahasia.
tokenMode
Deskripsi
auto
(Direkomendasikan) Komponen mendeteksi kapan cluster dibuat dan secara otomatis menentukan mode izin yang digunakan komponen. Jika cluster dibuat sebelum 03 April 2023, komponen menggunakan mode izin workerRole. Jika cluster dibuat pada atau setelah 03 April 2023, komponen menggunakan mode izin managedRole.
PentingVersi aliyun-acr-credential-helper yang dirilis setelah 03 April 2023 menyediakan item konfigurasi untuk memungkinkan Anda menentukan peran RAM yang bergantung pada komponen. Untuk informasi lebih lanjut, lihat [Perubahan Produk] Cabut izin yang bergantung pada aliyun-acr-credential-helper.
managedRole
Komponen menggunakan peran AliyunCSManagedAcrRole yang diberikan izin tertentu dalam Prasyarat untuk mendapatkan izin.
workerRole
Komponen menggunakan peran pekerja cluster untuk mendapatkan izin. Untuk menggunakan mode ini, Anda harus memberikan izin tertentu kepada peran pekerja cluster. Untuk informasi lebih lanjut, lihat aliyun-acr-credential-helper menggunakan mode izin workerRole.
PentingPilih mode ini jika Anda ingin menarik gambar lintas akun dengan asumsi peran.
Perbarui konfigurasi komponen bebas-rahasia
Setelah komponen aliyun-acr-credential-helper dipasang, Anda harus mengonfigurasi ConfigMap acr-configuration menggunakan konsol ACK atau kubectl sebelum dapat menarik gambar.
Konsol ACK
Di halaman Clusters, klik nama cluster yang ingin Anda ubah. Di panel navigasi kiri, pilih .
Di bagian atas halaman ConfigMap, pilih kube-system dari daftar drop-down Namespace. Lalu, temukan acr-configuration ConfigMap dan konfigurasikan parameter. Tabel berikut menjelaskan parameter tersebut.
Key
Deskripsi
watch-namespace
Namespace dari mana Anda ingin menarik gambar tanpa menggunakan rahasia. Nilai default: default. Nilai all menentukan semua namespace dalam instance Container Registry. Pisahkan beberapa namespace dengan koma (,). Kami sarankan Anda mengonfigurasi namespace bisnis Anda untuk parameter ini. Jika Anda mengatur parameter ini ke
allatau namespace tempat komponen sistem cluster disimpan, gambar komponen sistem mungkin gagal ditarik.acr-api-version
Gunakan nilai default.
batas-kedaluwarsa
Periode waktu setelah Secret yang di-cache kedaluwarsa.
acr-registry-info
Informasi tentang instance Container Registry. Setiap instance dapat ditentukan oleh tiga parameter tipe string dalam file YAML.
instanceId: ID instance Container Registry. Anda dapat memperoleh ID di konsol Container Registry.PentingBiarkan parameter ini kosong jika Anda menggunakan instance Container Registry Edisi Personal. Anda harus menentukan parameter ini jika Anda menggunakan instance Container Registry Edisi Enterprise.
regionId: ID wilayah instance Container Registry. Anda dapat memperoleh ID wilayah di konsol Container Registry.PentingAnda harus menentukan parameter ini jika ingin menarik gambar lintas wilayah. Lihat contoh konfigurasi berikut.
domains: Nama domain yang digunakan komponen bebas-rahasia untuk mengakses instance Container Registry. Secara default, semua nama domain instance ACR dalaminstanceIddimasukkan. Anda dapat menentukan nama domain tertentu. Pisahkan beberapa nama domain dengan koma (,).
Akun-Layanan
Akun layanan yang terkait dengan aliyun-acr-credential-helper. Pisahkan beberapa akun layanan dengan koma (,). Nilai default menentukan akun layanan default dari semua namespace yang ditentukan di watch-namespace. Nilai asterisk (
*) menentukan semua akun layanan dalam namespace yang ditentukan.
kubectl
Jalankan perintah berikut untuk memodifikasi ConfigMap
acr-configurationberdasarkan informasi berikut.kubectl edit cm acr-configuration -n kube-systemKunci
Deskripsi
Nilai
service-account
Akun layanan yang digunakan komponen aliyun-acr-credential-helper untuk menarik gambar.
Nilai default: default.
CatatanPisahkan beberapa akun layanan dengan koma (,). Asterisk (
*) menentukan semua akun layanan di semua namespace.acr-registry-info
Informasi tentang instance Container Registry. Setiap instance dapat ditentukan oleh tiga parameter tipe string dalam file YAML.
CatatanParameter untuk menentukan instance:
instanceId: ID instance Container Registry. Bidang ini diperlukan untuk instance Container Registry Edisi Enterprise.
regionId: ID wilayah tempat instance Container Registry berada. Parameter ini opsional. Nilai default adalah wilayah tempat cluster ACK Anda berada.
domains: nama domain instance Container Registry. Parameter ini opsional. Secara default, semua nama domain instance ditentukan. Pisahkan beberapa nama domain dengan koma (,).
Contoh konfigurasi untuk instance Container Registry Edisi Enterprise:
- instanceId: <cri-instanceId> regionId: "cn-hangzhou" domains: "xxx.com,yyy.com"watch-namespace
Namespace dari mana Anda ingin menarik gambar tanpa menggunakan rahasia.
Nilai default: default. Nilai all menentukan semua namespace dalam instance Container Registry. Pisahkan beberapa namespace dengan koma (,).
CatatanKami sarankan Anda mengatur nilai ke namespace produksi Anda. Jika Anda mengatur nilai ke all atau namespace komponen sistem cluster, gambar dalam namespace mungkin gagal ditarik.
expiring-threshold
Periode waktu setelah Secret yang di-cache kedaluwarsa.
Nilai default: 15m.
CatatanKami sarankan Anda menggunakan nilai default. Nilai default menentukan bahwa Secret diperbarui 15 menit sebelum Secret yang di-cache kedaluwarsa.
Tarik gambar
Setelah Anda memasang dan mengonfigurasi komponen bebas-rahasia, Anda dapat menentukan akun layanan yang terkait dengan komponen bebas-rahasia saat membuat beban kerja untuk menarik gambar tanpa menggunakan rahasia.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
serviceAccountName: my-service-account # Tentukan akun layanan yang terkait dengan komponen bebas-rahasia.
containers:
- name: nginx
image: ******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest # Tentukan alamat gambar Container Registry.
ports:
- containerPort: 80Tindakan pencegahan
Gunakan instance Container Registry Edisi Personal
Jika Anda ingin menarik gambar dari instance Container Registry Edisi Personal, biarkan instanceId kosong.
data:
service-account: default
watch-namespace: all
expiring-threshold: 15m
notify-email: c*@example.com
acr-registry-info: |
- instanceId: "" # Biarkan parameter ini kosong jika ingin menarik gambar dari instance Container Registry Edisi Personal.
regionId: cn-xxxxaliyun-acr-credential-helper menggunakan mode izin workerRole
Jika Anda memilih workerRole sebagai mode izin yang digunakan oleh aliyun-acr-credential-helper, peran pekerja cluster harus memiliki izin berikut:
{
"Version": "1",
"Statement": [
{
"Action": [
"cr:GetAuthorizationToken",
"cr:ListInstanceEndpoint",
"cr:PullRepository"
],
"Resource": "*",
"Effect": "Allow"
}
]
}Operasi lainnya
Tarik gambar lintas akun
aliyun-acr-credential-helper memungkinkan Anda menggunakan metode berikut untuk menarik gambar dari instance Container Registry lintas akun.
Gunakan RRSA: Akun layanan dalam cluster Akun A mengasumsikan peran Akun B. Pod yang menggunakan akun layanan dapat menarik gambar pribadi Akun B.
Gunakan Peran Pekerja: Peran pekerja Akun A mengasumsikan peran RAM Akun B yang memiliki izin cr.*. Lalu, aliyun-acr-credential-helper menggunakan peran pekerja untuk menarik gambar pribadi Akun B. Untuk menggunakan metode ini, Anda harus memilih mode izin workerRole untuk aliyun-acr-credential-helper.
Gunakan Pasangan AccessKey Pengguna RAM Pemilik Instance Container Registry: aliyun-acr-credential-helper Akun A menggunakan pasangan AccessKey pengguna RAM Akun B untuk menarik gambar pribadi Akun B. Metode ini mudah digunakan, tetapi pasangan AccessKey pengguna RAM Akun B disimpan dalam plaintext dan mungkin bocor.
Gunakan RRSA
Hanya di Cluster ACK Basic, Cluster ACK Pro, dan Cluster ACK Serverless Pro yang menjalankan Kubernetes 1.22 atau lebih baru, Anda dapat mengonfigurasi RRSA untuk menarik gambar dari instance Container Registry Edisi Enterprise.
Untuk mengaktifkan fitur RRSA, Anda harus memperbarui aliyun-acr-credential-helper ke v23.02.06.1-74e2172-aliyun atau lebih baru.
Untuk mengaktifkan fitur RRSA untuk managed-aliyun-acr-credential-helper, Anda harus mengaktifkan RRSA untuk cluster di tab Informasi Dasar halaman Informasi Cluster di konsol ACK lalu mengonfigurasi RRSA untuk managed-aliyun-acr-credential-helper. Jika Anda mengonfigurasi RRSA untuk aliyun-acr-credential-helper lalu mengaktifkan RRSA untuk cluster, Anda harus menghapus pod yang sesuai dengan aliyun-acr-credential-helper setelah Anda mengaktifkan RRSA untuk cluster. Ini memungkinkan RRSA berfungsi.
Aktifkan fitur RRSA untuk cluster. Untuk informasi lebih lanjut, lihat Aktifkan RRSA.
Setelah Anda mengaktifkan fitur RRSA untuk kluster, di bagian Security and Auditing pada tab Basic Information di halaman Informasi Kluster, arahkan kursor ke Enabled di samping RRSA OIDC untuk melihat dan mencatat URL dan ARN dari OIDC IdP.

Berikan izin kepada pengguna RAM pemilik cluster yang diperlukan untuk mengakses sumber daya Container Registry lintas akun.
Setelah Anda mengaktifkan fitur RRSA untuk cluster, Anda harus melakukan operasi berikut untuk memberikan izin kepada pengguna RAM pemilik cluster. Misalnya, cluster saat ini berada di Akun A dan instance Container Registry berada di Akun B. Jika Anda ingin menarik gambar dari instance Container Registry, Anda harus memberikan cluster di Akun A izin untuk mengakses sumber daya Container Registry Akun B.
Buat peran RAM di Akun A dan lampirkan kebijakan AliyunSTSAssumeRoleAccess ke peran RAM. Kebijakan ini memberikan izin kepada peran RAM untuk mengasumsikan peran RAM lainnya. Modifikasi kebijakan kepercayaan peran RAM, seperti yang ditunjukkan dalam kode berikut.
Ganti
<oidc_issuer_url>dalam contoh dengan URL OIDC IdP cluster yang Anda catat di Langkah 1.Ganti
<oidc_provider_arn>dalam contoh dengan ARN OIDC IdP cluster yang Anda catat di Langkah 1.
{ "Statement": [ { "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>" ] } } ], "Version": "1" }Buat peran RAM yang memiliki izin cr.* di Akun B. Di tab Trust Policy, masukkan ARN dari peran RAM Akun A di bidang Principal kebijakan kepercayaan.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ <ARN dari peran RAM yang Anda buat untuk Akun A> ] } } ], "Version": "1" }Lampirkan kebijakan berikut ke peran RAM Akun B. Kebijakan tersebut memberikan izin kepada peran RAM Akun B untuk mendapatkan informasi tentang instance Container Registry dan menarik gambar dari instance tersebut.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] }Anda dapat menentukan parameter MaxSessionDuration untuk peran RAM. Nilai valid untuk parameter ini berkisar antara 3600 hingga 43200 detik. Anda harus menentukan parameter
expireDurationdi langkah 3 berikutnya saat mengonfigurasi ConfigMap acr-configuration. Kami sarankan Anda menentukan nilai yang sama untuk MaxSessionDuration danexpireDuration. NilaiexpireDurationbisa lebih kecil atau sama dengan nilai MaxSessionDuration.
Konfigurasikan ConfigMap acr-configuration
Modifikasi ConfigMap acr-configuration berdasarkan informasi berikut.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "c*@example.com" acr-registry-info: | - instanceId: "cri-xxx" regionId: "cn-hangzhou" domains: "instance.default.domain.com,instance.custom.domain.com" rrsaRoleARN: aUserRoleARN rrsaOIDCProviderRoleARN: aUserClusterOIDCProviderRoleARN assumeRoleARN: bUserRoleARN expireDuration: 3600 rrsa: | enable: trueParameter
Deskripsi
Contoh
rrsaRoleARNARN dari peran RAM yang Anda buat untuk Akun A.
acs:ram::aaa
rrsaOIDCProviderRoleARNARN dari OIDC IdP yang Anda peroleh di tab Informasi Dasar halaman Informasi Cluster di konsol ACK.
acs:ram::bbb
assumeRoleARNARN dari peran RAM yang Anda buat untuk Akun B.
acs:ram::ccc
expireDurationPeriode sesi peran RAM yang Anda buat untuk Akun B. Periode sesi sama dengan periode validitas rahasia yang dihasilkan oleh aliyun-acr-credential-helper.
PentingNilai expireDuration tidak boleh lebih besar dari nilai MaxSessionDuration peran RAM Akun B.
Nilai default: 3600. Nilai valid: 3600 hingga 43200. Unit: detik.
Gunakan peran pekerja
Anda harus memilih mode izin workerRole untuk aliyun-acr-credential-helper.
Peran RAM Akun B harus memiliki izin cr.* untuk menarik gambar pribadi dari repositori pribadi tertentu instance Container Registry.
Akun B mengizinkan peran pekerja cluster ACK Akun A untuk mengasumsikan peran RAM Akun B. Aturan ini memerlukan Anda untuk memodifikasi kebijakan kepercayaan peran RAM Akun B.
Peran pekerja cluster ACK Akun A harus memiliki izin untuk mengasumsikan peran RAM Akun B. Aturan ini memerlukan Anda untuk melampirkan kebijakan AliyunAssumeRoleAccess ke peran pekerja Akun A.
Buat peran RAM untuk Akun B. Tentukan Cloud Account sebagai entitas tepercaya peran RAM. Pastikan peran RAM diberi izin yang diperlukan untuk menarik gambar pribadi dari instance Container Registry Akun B. Untuk informasi lebih lanjut, lihat Buat Peran RAM untuk Akun Alibaba Cloud Tepercaya.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] }Modifikasi kebijakan kepercayaan peran RAM Akun B untuk mengizinkan peran pekerja cluster ACK Akun A mengasumsikan peran RAM Akun B.
Peroleh ARN dari peran pekerja cluster ACK.
Untuk informasi tentang cara memperoleh ARN peran RAM, lihat Bagaimana Cara Melihat ARN Peran RAM?
Modifikasi kebijakan kepercayaan peran RAM Akun B.
Masuk ke Konsol RAM. Di panel navigasi kiri, klik Roles. Di halaman Peran, temukan peran RAM Akun B dan klik nama peran tersebut.
Di halaman detail peran RAM, klik tab Trust Policy dan masukkan ARN dari peran pekerja Akun A di bidang Principal kebijakan kepercayaan.

Periksa apakah peran pekerja cluster ACK di Akun A diberi izin AssumeRole. Untuk informasi lebih lanjut, lihat Lihat Informasi tentang Kebijakan.

Tambahkan parameter assumeRoleARN ke ConfigMap acr-configuration.
Atur nilai parameter assumeRoleARN ke ARN dari peran RAM Akun B. Untuk informasi tentang cara memperoleh ARN peran RAM, lihat Bagaimana Cara Melihat ARN Peran RAM? File JSON berikut menunjukkan konfigurasi sampel acr-configuration.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email:"c*@example.com" acr-registry-info: | - instanceId: "" regionId: "cn-beijing" domains: "registry.cn-beijing.aliyuncs.com" assumeRoleARN: "acs:ram::.*:role/kubernetesworkerrole-test" expireDuration: 3600
Gunakan pasangan AccessKey pengguna RAM pemilik instance Container Registry
Aktifkan fitur webhook untuk memastikan penggunaan instan akun layanan
Untuk mengaktifkan fitur webhook, Anda harus memperbarui aliyun-acr-credential-helper ke v23.02.06.1-74e2172-aliyun atau lebih baru.
Setelah Anda mengaktifkan fitur webhook, komponen bebas-rahasia menggunakan fitur webhook untuk memantau perubahan akun layanan dalam cluster. Setelah akun layanan dibuat, komponen bebas-rahasia segera menyuntikkan rahasia ke akun layanan. Jika Anda ingin menggunakan akun layanan segera setelah dibuat, misalnya, jika Anda menggunakan Helm chart untuk membuat akun layanan dan Deployment, Anda dapat mengaktifkan fitur webhook. Fitur webhook dapat memengaruhi kinerja komponen bebas-rahasia. Kami tidak menyarankan Anda mengaktifkan fitur webhook dalam skenario lain.
Untuk menggunakan fitur webhook, Anda harus menambahkan parameter berikut ke ConfigMap acr-configuration:
data:
webhook-configuration: |
enable: true
failure-policy: Ignore
timeout-seconds: 10Parameter | Deskripsi |
| Menentukan apakah akan mengaktifkan fitur webhook.
|
| Menentukan cara menangani akun layanan ketika fitur webhook tidak berfungsi seperti yang diharapkan.
Penting Karena batasan API Server cluster, jika Anda mengatur |
| Periode timeout permintaan untuk membuat akun layanan. Saat permintaan untuk membuat akun layanan habis waktu, sistem merespons berdasarkan nilai |
Referensi
Untuk informasi tentang catatan rilis aliyun-acr-credential-helper, lihat aliyun-acr-credential-helper.

