Ketika kluster ACK dan instans ACR Enterprise Edition dikelola oleh Akun Alibaba Cloud yang berbeda, Anda harus memastikan konektivitas jaringan dan memberikan izin agar kluster dapat menarik gambar kontainer serta menerapkan workload. Topik ini menjelaskan cara menggunakan komponen tanpa kata sandi aliyun-acr-credential-helper untuk menarik gambar lintas akun.
Strategi pemilihan
Pilih metode koneksi jaringan dan otorisasi akun yang paling sesuai dengan kebutuhan bisnis Anda, lalu pilih komponen tanpa kredensial yang mendukung metode otorisasi tersebut.
Untuk langkah-langkah detail, lihat Konfigurasikan konektivitas jaringan, Konfigurasikan otorisasi akun dan komponen tanpa kredensial, lalu verifikasi penarikan gambar lintas akun.
Dalam topik ini, "cross-account" mengacu pada antar Akun Alibaba Cloud (akun utama) yang berbeda, bukan Pengguna RAM (sub-akun).
Prasyarat
-
Peran RAM untuk komponen tanpa kata sandi memiliki izin yang diperlukan.
-
Tersedia kluster ACK yang mendukung komponen tanpa kata sandi.
-
aliyun-acr-credential-helper (dikelola)
Kluster ACK yang dikelola, kluster ACK serverless, dan kluster ACK Edge yang menjalankan Kubernetes 1.22 atau lebih baru
-
aliyun-acr-credential-helper (dikelola sendiri)
Kluster ACK yang dikelola dan kluster khusus ACK yang menjalankan Kubernetes 1.20 atau lebih baru
-
-
Tersedia instans ACR Enterprise Edition.
Penting-
Komponen tanpa kata sandi hanya mendukung instans ACR Enterprise Edition dan instans Edisi Personal yang dibuat pada atau sebelum 8 September 2024. Jika Anda tidak dapat menggunakan komponen tanpa kata sandi, lihat Bagaimana cara menggunakan imagePullSecrets?.
-
Prosedur
Langkah 1: Konfigurasikan konektivitas jaringan
Saat menarik gambar lintas akun, kluster ACK yang menarik gambar dan instans ACR Enterprise Edition yang menyimpannya berada di VPC yang berbeda di bawah Akun Alibaba Cloud terpisah, dan mungkin juga berada di wilayah yang berbeda. Sebelum menarik gambar, Anda harus membuat konektivitas jaringan dan memastikan nama domain yang diperlukan dapat diselesaikan. Anda dapat menggunakan salah satu metode berikut:
-
Koneksi publik: Konfigurasikan titik akhir publik untuk instans ACR Enterprise Edition dan aktifkan akses jaringan publik untuk kluster ACK. Gambar kemudian ditransfer melalui jaringan publik. Namun, metode ini kurang aman dan menimbulkan biaya untuk Alamat IP Elastis dan lalu lintas jaringan.
-
Koneksi peering VPC: Gunakan koneksi peering VPC untuk menghubungkan kedua VPC sehingga kluster ACK dapat mengakses instans ACR Enterprise Edition. Layanan ini gratis jika VPC berada di wilayah yang sama tetapi dikenai biaya jika berada di wilayah berbeda. Namun, blok CIDR kedua VPC tidak boleh tumpang tindih. Jika blok CIDR VPC memiliki tumpang tindih signifikan, Anda harus memodifikasi arsitektur jaringan yang ada.
-
Koneksi Cloud Enterprise Network: Instans Cloud Enterprise Network dapat berisi satu atau beberapa router transit. Anda dapat menggunakan koneksi antar-wilayah untuk menghubungkan beberapa router transit guna mengaktifkan komunikasi VPC antar-wilayah dan lintas akun.
Untuk perbandingan antara koneksi peering VPC dan Cloud Enterprise Network, lihat Apa perbedaan antara Cloud Enterprise Network dan Koneksi Peering VPC?
|
Item |
Koneksi publik |
Koneksi peering VPC |
Cloud Enterprise Network |
|
Jenis jaringan |
Jaringan publik |
Jaringan pribadi |
Jaringan pribadi |
|
Penagihan |
Biaya dikenakan berdasarkan penagihan Alamat IP Elastis. |
|
Biaya dikenakan berdasarkan aturan penagihan Cloud Enterprise Network. |
|
Fitur utama |
Anda tidak perlu memodifikasi arsitektur jaringan yang ada. Untuk keamanan, Anda harus mengonfigurasi aturan arah masuk dan keluar serta kebijakan kontrol akses. |
|
|
|
Prosedur konfigurasi |
|
|
|
Langkah 2: Konfigurasikan otorisasi dan komponen tanpa kredensial
Tiga metode otorisasi berikut memungkinkan penarikan gambar tanpa kredensial lintas akun. Pilih metode yang paling sesuai dengan kebutuhan Anda.
|
Item |
RRSA |
Peran RAM worker |
AccessKey Pengguna RAM |
|
Jenis kluster yang didukung |
Mendukung kluster managed dasar ACK, kluster managed Pro ACK, kluster ACK Edge, dan kluster ACK Serverless Pro yang menjalankan Kubernetes 1.22 atau lebih baru. |
Mendukung kluster managed dasar ACK, kluster managed Pro ACK, dan kluster khusus ACK yang menjalankan Kubernetes 1.20 atau lebih baru. |
Mendukung kluster managed dasar ACK, kluster managed Pro ACK, dan kluster khusus ACK yang menjalankan Kubernetes 1.20 atau lebih baru. |
|
Komponen yang didukung |
Untuk informasi selengkapnya tentang perbedaan antar komponen ini, lihat Perbandingan komponen tanpa kredensial. |
komponen aliyun-acr-credential-helper |
komponen aliyun-acr-credential-helper |
|
Granularitas izin |
tingkat Pod (detail halus) |
tingkat kluster (detail menengah) |
tingkat akun (detail kasar) |
|
Keamanan |
Tinggi. Menyediakan kontrol dan isolasi izin detail halus. Menggunakan kredensial sementara dari Security Token Service (STS) tanpa pasangan AccessKey ID dan AccessKey Secret yang dikodekan secara keras. |
Menengah. Semua Pod berbagi izin yang sama, yang dapat menimbulkan risiko izin berlebihan. |
Rendah. Risiko tinggi kebocoran AccessKey. |
|
Kasus penggunaan |
Cocok untuk layanan yang sensitif terhadap keamanan dan lingkungan produksi yang memerlukan kontrol izin ketat. |
Cocok untuk skenario yang memerlukan izin terpadu dan untuk lingkungan pengembangan serta pengujian yang memerlukan tingkat kontrol izin moderat. |
Cocok untuk penyebaran cepat atau lingkungan demo. |
RRSA
Di kluster ACK Akun A, konfigurasikan ServiceAccount tertentu untuk mengasumsikan peran RAM milik Akun B yang memiliki izin untuk menarik gambar tanpa kredensial. Hal ini memungkinkan kluster ACK mengakses dan menarik gambar pribadi dari Akun B.
Untuk mengaktifkan fitur RRSA pada komponen tanpa kredensial, Anda harus terlebih dahulu mengaktifkan RRSA untuk kluster, lalu mengonfigurasi RRSA untuk komponen tanpa kredensial. Jika langkah-langkah ini dilakukan dalam urutan yang salah, Anda harus menghapus Pod komponen untuk mengaktifkan fitur RRSA.
-
Di Akun A, aktifkan fitur RRSA untuk kluster ACK Anda dan buat peran RAM yang memiliki izin untuk mengasumsikan peran.
-
Aktifkan fitur RRSA untuk kluster ACK Anda.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
-
Di tab Basic Information, temukan bagian Security and Auditing, lalu di samping RRSA OIDC, klik Enable.

-
Di kotak dialog Enable RRSA, klik OK.
Di bagian Basic Information, tunggu hingga status kluster berubah dari Updating menjadi Running. Saat status berubah menjadi Running, RRSA telah diaktifkan.
-
Setelah RRSA diaktifkan untuk kluster, buka tab Basic Information. Di bagian Security and Auditing, arahkan kursor ke Enabled di sebelah kanan RRSA OIDC untuk melihat URL dan ARN penyedia OIDC.

-
Gunakan JSON berikut untuk mengedit kebijakan kepercayaan dan buat peran RAM untuk penyedia OIDC.
-
Ganti
<oidc_issuer_url>dengan URL penyedia OIDC kluster Anda yang diperoleh pada langkah sebelumnya. -
Ganti
<oidc_provider_arn>dengan ARN penyedia OIDC kluster Anda yang diperoleh pada langkah sebelumnya.
{ "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" } -
-
Sambungkan kebijakan
AliyunSTSAssumeRoleAccesske peran RAM untuk memberikan izin mengasumsikan peran lain, lalu catat ARN peran RAM tersebut. Untuk informasi selengkapnya, lihat Memberikan izin ke peran RAM.-
Di halaman detail peran RAM, klik tab Authorization lalu klik Authorize.
-
Di panel Authorize, di bagian Policies, temukan dan pilih kebijakan AliyunSTSAssumeRoleAccess, lalu klik OK.
-
Di halaman detail peran RAM, buka bagian Basic Information untuk melihat dan mencatat ARN peran RAM. Untuk informasi selengkapnya, lihat Melihat ARN peran RAM.
-
-
-
Di Akun B, buat peran RAM, berikan izin untuk menarik gambar pribadi, dan konfigurasikan kebijakan kepercayaannya agar memungkinkan peran RAM dari Akun A mengasumsikannya.
-
Buat peran RAM untuk akun Alibaba Cloud tepercaya dan gunakan JSON berikut untuk mengedit kebijakan kepercayaan. Hal ini memungkinkan peran RAM di Akun A mengasumsikan peran ini.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<ARN of the RAM role created in Account A>" ] } } ], "Version": "1" } -
Buat kebijakan kustom dengan konten berikut dan sambungkan kebijakan tersebut ke peran RAM untuk memberikan izin memperoleh informasi instans dan menarik gambar.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] } -
Atur durasi sesi maksimum untuk peran RAM ke nilai antara 3.600 hingga 43.200 detik. Nilai default adalah 3.600 detik.
Kami menyarankan Anda mengatur nilai ini sama dengan parameter
expireDurationdalam konfigurasi komponen yang dijelaskan nanti. NilaiexpireDurationtidak boleh melebihi durasi sesi maksimum. -
Di halaman detail peran RAM, buka bagian Basic Information untuk melihat dan mencatat ARN peran RAM.
-
-
Di Akun A, instal komponen tanpa kredensial untuk kluster ACK dan modifikasi konfigurasinya.
Untuk informasi selengkapnya tentang perbedaan antar komponen berikut, lihat Perbandingan komponen tanpa kredensial.
Add-on managed
-
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.
-
Di halaman Add-ons, klik tab Security, temukan kartu aliyun-acr-credential-helper (Managed), lalu klik Install.
-
Di kotak dialog Parameters, pilih Enable RRSA, klik Add, masukkan parameter berikut, lalu klik Confirm.

Konfigurasi instans ACR Enterprise Edition terkait:
Parameter
Deskripsi
Contoh
instanceId
ID instans ACR Enterprise Edition. Untuk menentukan beberapa ID, pisahkan dengan koma (,).
cri-XXXXX
regionId
ID wilayah instans ACR Enterprise Edition.
cn-hangzhou
domains
Nama domain akses (publik dan VPC) untuk instans ACR. Pisahkan beberapa nama domain dengan koma (,).
XXXXX-registry.cn-hangzhou.cr.aliyuncs.com
assumeRoleARN
ARN peran RAM milik pemilik instans ACR. Masukkan ARN peran RAM yang Anda buat di Akun B.
acs:ram::100XXXXXXXX9630:role/XXXX
expireDuration
Periode validitas kredensial sementara untuk akses lintas akun. Masukkan durasi sesi maksimum peran RAM yang Anda buat di Akun B.
3600
rrsaRoleARN
ARN peran RAM milik pemilik kluster ACK. Masukkan ARN peran RAM yang Anda buat di Akun A.
acs:ram::128XXXXXXXXXX09011:role/XXXX
rrsaOIDCProviderRoleARN
ARN penyedia OIDC untuk kluster ACK. Masukkan ARN penyedia OIDC fitur RRSA untuk kluster ACK di Akun A.
acs:ram::128XXXXXXXXXX09011:oidc-provider/ack-rrsa-c8864XXXXXXXXXXXXXXXXXX99356a636
Untuk informasi tentang parameter lainnya, lihat Konfigurasi komponen.
Komponen
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.
-
Di halaman Add-ons, klik tab Security, temukan komponen aliyun-acr-credential-helper, lalu klik Install. Di kotak dialog yang muncul, atur tokenMode ke auto dan klik OK.

-
Modifikasi ConfigMap komponen tanpa kredensial.
-
Di panel navigasi kiri, pilih .
-
Di halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace di bagian atas. Lalu, temukan acr-configuration dan klik Edit YAML di kolom Actions. Modifikasi konfigurasi berdasarkan contoh berikut.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "c*@example.com" acr-registry-info: | - instanceId: "cri-xxx" # ID instans ACR Enterprise Edition. regionId: "cn-hangzhou" # ID wilayah instans ACR Enterprise Edition. domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com" # Nama domain akses instans ACR Enterprise Edition. rrsaRoleARN: "<ARN of the RAM role created in Account A>" rrsaOIDCProviderRoleARN: "<OIDC provider ARN from the Basic Information page of the cluster in the ACK console for Account A>" assumeRoleARN: "<ARN of the RAM role created in Account B>" expireDuration: 3600 # Durasi sesi maksimum untuk peran RAM di Akun B. Nilai default adalah 3600. rrsa: | enable: true # Aktifkan fitur RRSA untuk komponen tanpa kredensial.
-
-
Peran RAM worker
Di kluster ACK Akun A, konfigurasikan peran RAM worker default kluster untuk mengasumsikan peran RAM milik Akun B yang memiliki izin untuk menarik gambar tanpa kredensial. Hal ini memungkinkan kluster ACK mengakses dan menarik gambar pribadi dari Akun B.
-
Di Akun A, lihat peran RAM worker kluster dan berikan izin untuk mengasumsikan peran lain.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
-
Di halaman Cluster Information, klik tab Basic Information. Di bagian Cluster Resources, klik tautan di sebelah kanan Worker RAM Role.
-
Sambungkan kebijakan
AliyunSTSAssumeRoleAccesske peran RAM untuk memberikan izin mengasumsikan peran lain, lalu catat ARN peran RAM tersebut. Untuk informasi selengkapnya, lihat Memberikan izin ke peran RAM.-
Di halaman detail peran RAM, klik tab Authorization lalu klik Authorize.
-
Di panel Authorize, di bagian Policies, temukan dan pilih kebijakan AliyunSTSAssumeRoleAccess, lalu klik OK.
-
Di halaman detail peran RAM, buka bagian Basic Information untuk melihat dan mencatat ARN peran RAM. Untuk informasi selengkapnya, lihat Melihat ARN peran RAM.
-
-
Di Akun B, buat peran RAM, berikan izin untuk menarik gambar pribadi, dan konfigurasikan kebijakan kepercayaannya agar memungkinkan peran RAM worker kluster ACK di Akun A mengasumsikannya.
-
Buat kebijakan kustom dengan konten berikut dan sambungkan kebijakan tersebut ke peran RAM untuk memberikan izin memperoleh informasi instans dan menarik gambar.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] } -
Di halaman detail peran RAM, klik tab Trust Policy dan Edit Trust Policy dengan konten berikut. Hal ini memungkinkan peran RAM worker kluster ACK di Akun A mengasumsikan peran RAM di Akun B.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<ARN of the role created in Account A>" ] } } ], "Version": "1" } -
Di halaman detail peran RAM, buka bagian Basic Information untuk melihat dan mencatat ARN peran RAM. Untuk informasi selengkapnya, lihat Melihat ARN peran RAM.
-
Di Akun A, instal komponen tanpa kredensial untuk kluster ACK dan modifikasi konfigurasinya.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.
-
Di halaman Add-ons, klik tab Security, temukan komponen aliyun-acr-credential-helper, lalu klik Install. Di kotak dialog yang muncul, atur tokenMode ke workerRole dan klik Confirm.

-
Modifikasi ConfigMap komponen tanpa kredensial.
-
Di panel navigasi kiri, pilih .
-
Di halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace di bagian atas. Lalu, temukan acr-configuration dan klik Edit YAML di kolom Actions. Modifikasi konfigurasi berdasarkan contoh berikut.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "c*@example.com" acr-registry-info: | - instanceId: "cri-xxx" # ID instans ACR Enterprise Edition. regionId: "cn-hangzhou" # ID wilayah instans ACR Enterprise Edition. domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com" # Nama domain akses instans ACR Enterprise Edition. assumeRoleARN: "<ARN of the RAM role created in Account B>" expireDuration: 3600 # Durasi sesi maksimum untuk peran RAM di Akun B. Nilai default adalah 3600.
-
-
AccessKey Pengguna RAM
Di kluster ACK Akun A, komponen tanpa kredensial menyimpan AccessKey ID dan AccessKey Secret Pengguna RAM dari Akun B untuk menarik gambar pribadi dari Akun B. Meskipun metode ini mudah dikonfigurasi, metode ini menimbulkan risiko keamanan karena pasangan AccessKey disimpan dalam teks biasa, yang dapat menyebabkan kebocoran kredensial.
-
Di Akun B, buat Pengguna RAM dan pastikan pengguna tersebut memiliki izin cr.* yang diperlukan.
-
Buat kebijakan kustom dengan konten berikut dan sambungkan kebijakan tersebut ke Pengguna RAM untuk memberikan izin memperoleh informasi instans dan menarik gambar.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] } -
Buat pasangan AccessKey dan catat AccessKey ID dan AccessKey Secret.
-
Di Akun A, instal komponen bebas kredensial untuk kluster ACK dan sesuaikan konfigurasinya.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.
-
Di halaman Add-ons, klik tab Security, temukan komponen aliyun-acr-credential-helper, lalu klik Install. Di kotak dialog yang muncul, atur tokenMode ke auto dan klik OK.

-
Modifikasi ConfigMap komponen tanpa kredensial.
-
Di panel navigasi kiri, pilih .
-
Di halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace di bagian atas. Lalu, temukan acr-configuration dan klik Edit YAML di kolom Actions. Modifikasi konfigurasi berdasarkan contoh berikut.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "c*@example.com" acr-registry-info: | - instanceId: "" # ID instans ACR Enterprise Edition. regionId: "cn-hangzhou" # ID wilayah instans ACR Enterprise Edition. customAccessKey: "xxxxx" # AccessKey ID Pengguna RAM di Akun B. customAccessKeySecret: "xxxxxx" # AccessKey Secret Pengguna RAM di Akun B. -
-
Langkah 3: Verifikasi penarikan gambar lintas akun
Prosedur verifikasi ini hanya untuk tujuan demonstrasi. Untuk instruksi detail, lihat Membuat gambar dan Membuat workload.
-
Di instans ACR Enterprise Edition milik Akun B, peroleh Public endpoint atau alamat VPC gambar kontainer sesuai kebutuhan.

-
Di kluster ACK milik Akun A, pilih dan gunakan gambar kontainer untuk membuat workload.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: ******.cn-hangzhou.cr.aliyuncs.com/instance/instancetest:v1 # Tentukan alamat gambar ACR di Akun B. ports: - containerPort: 80 -
Jika event Pod untuk workload berisi pesan serupa
Successfully pulled image "XXX" in XXXs (XXXs including waiting). Image size: XXX bytes., berarti komponen tanpa kredensial berhasil menarik gambar lintas akun.
FAQ
Konflik IP di blok CIDR 100.0.0.0/8
Alamat IP untuk domain otentikasi dan OSS diselesaikan ke blok CIDR 100.0.0.0/8. Jika jaringan internal Anda juga menggunakan rentang ini, akan terjadi konflik alamat IP.
Konflik nama domain otentikasi
Anda dapat mengatasi konflik domain otentikasi dengan mengaktifkan instans untuk mengambil alih domain otentikasi. Hal ini memungkinkan Anda mengakses layanan hanya dengan menggunakan nama domain instans.
Masuk ke Konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Di halaman Instances, klik instans Edisi Perusahaan yang ingin Anda kelola.
-
Di panel navigasi kiri halaman pengelolaan instans, pilih . Di halaman Domain, aktifkan sakelar Instance Taking over Authentication Domain Name.
PentingUntuk menggunakan fitur pengambilalihan instans untuk domain otentikasi, Anda harus mengajukan tiket untuk menambahkan instans Edisi Perusahaan Anda ke daftar izin.
-
Di kotak dialog Confirm to Enable Instance Taking over Authentication Domain Name, klik Confirm.
Konflik nama domain OSS
Anda dapat mengakses sumber daya OSS melalui jaringan pribadi menggunakan PrivateLink, lalu mengarahkan nama domain OSS ke nama domain PrivateLink menggunakan rekaman CNAME.