Dalam arsitektur multi-akun di Alibaba Cloud, kluster ACK dan instans Container Registry (ACR) Edisi Perusahaan mungkin dimiliki oleh Akun Alibaba Cloud yang berbeda. Untuk memungkinkan kluster ACK menarik gambar kontainer dari instans ACR guna menerapkan workload, Anda harus menetapkan konektivitas jaringan dan memberikan izin yang diperlukan. Topik ini menjelaskan cara menggunakan komponen tanpa kata sandi aliyun-acr-credential-helper untuk menarik gambar lintas akun.
Panduan pemilihan
Pertama, pilih metode konektivitas jaringan dan metode otorisasi akun yang sesuai dengan kebutuhan bisnis Anda. Kemudian, pilih komponen tanpa kata sandi yang mendukung metode otorisasi tersebut.
Untuk prosedur spesifiknya, lihat Konfigurasikan konektivitas jaringan, Konfigurasikan otorisasi akun dan komponen tanpa kata sandi, serta Verifikasi penarikan gambar lintas akun.
Dalam topik ini, lintas akun mengacu pada Akun Alibaba Cloud yang berbeda, bukan Pengguna RAM.
Prasyarat
Izin yang diperlukan telah diberikan kepada Peran RAM yang digunakan oleh komponen tanpa kata sandi.
Kluster ACK mendukung komponen tanpa kata sandi.
aliyun-acr-credential-helper (managed)
Kluster ACK yang dikelola, Kluster ACK serverless, dan Kluster ACK Edge yang menjalankan Kubernetes 1.22 atau versi lebih baru
aliyun-acr-credential-helper (self-managed)
Kluster ACK yang dikelola dan Cluster khusus ACK yang menjalankan Kubernetes 1.20 atau versi lebih baru
Instans Container Registry (ACR) adalah instans Edisi Perusahaan.
PentingKomponen tanpa kata sandi hanya mendukung instans ACR Edisi Perusahaan dan instans ACR 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 dan instans ACR Edisi Perusahaan berada di VPC yang berbeda, dimiliki oleh akun yang berbeda, dan mungkin berada di wilayah yang berbeda. Sebelum Anda dapat menarik gambar, pastikan konektivitas jaringan tersedia dan nama domain terkait dapat diurai. Metode berikut tersedia:
Koneksi jaringan publik: Konfigurasikan titik akhir publik untuk instans ACR Edisi Perusahaan dan aktifkan akses jaringan publik untuk kluster ACK. Gambar ditransfer melalui jaringan publik. Namun, mentransfer data melalui jaringan publik kurang aman dan dikenakan biaya untuk Alamat IP Elastis (EIP) serta transfer data.
Koneksi peering VPC: Gunakan koneksi peering VPC untuk menghubungkan kedua VPC tersebut. Hal ini memungkinkan kluster ACK mengakses instans ACR Edisi Perusahaan. Koneksi peering VPC tidak dikenai biaya jika VPC berada di wilayah yang sama, tetapi dikenai biaya jika VPC berada di wilayah yang berbeda. Metode ini mensyaratkan bahwa kedua VPC memiliki Blok CIDR yang tidak tumpang tindih. Persyaratan ini dapat mengurangi jumlah Blok CIDR yang tersedia di VPC. Selain itu, jika Blok CIDR kedua VPC tumpang tindih, Anda harus memodifikasi arsitektur jaringan yang ada.
Koneksi Cloud Enterprise Network: Instans CEN dapat berisi satu atau beberapa router transit. Router transit tersebut dapat dihubungkan menggunakan koneksi antar-wilayah untuk menerapkan koneksi VPC-to-VPC lintas wilayah dan lintas akun.
Untuk perbandingan antara koneksi peering VPC dan koneksi CEN, lihat Apa perbedaan antara CEN dan koneksi peering VPC?
Item perbandingan | Koneksi jaringan publik | Koneksi peering VPC | Koneksi Cloud Enterprise Network |
Jenis jaringan | Jaringan publik | Jaringan pribadi | Jaringan pribadi |
Penagihan | Biaya dikenakan berdasarkan metode 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 mempertimbangkan aturan arah masuk dan arah keluar, kontrol akses, serta faktor lainnya. |
|
|
Prosedur konfigurasi |
|
|
|
Langkah 2: Konfigurasikan otorisasi akun dan komponen tanpa kata sandi
Terdapat tiga metode otorisasi berikut untuk menarik gambar lintas akun tanpa kredensial. Pilih konfigurasi yang paling sesuai dengan skenario Anda.
Item perbandingan | Gunakan RRSA | Gunakan asumsi Peran RAM Worker | Gunakan pasangan AccessKey Pengguna RAM |
Jenis kluster | Didukung di Edisi Dasar Kluster ACK yang dikelola, Edisi Pro Kluster ACK yang dikelola, Kluster ACK Edge, dan Edisi Pro Kluster ACK serverless versi 1.22 atau lebih baru. | Didukung di Edisi Dasar Kluster ACK yang dikelola, Edisi Pro Kluster ACK yang dikelola, dan Cluster khusus ACK versi 1.20 atau lebih baru. | Didukung di Edisi Dasar Kluster ACK yang dikelola, Edisi Pro Kluster ACK yang dikelola, dan Cluster khusus ACK versi 1.20 atau lebih baru. |
Komponen yang didukung |
Untuk informasi selengkapnya tentang perbedaan antar komponen, lihat Perbandingan Komponen Tanpa Kata Sandi. | komponen aliyun-acr-credential-helper | komponen aliyun-acr-credential-helper |
Granularitas izin | Tingkat Pod (detail halus) | Tingkat kluster (granularitas menengah) | Tingkat akun (granularitas kasar) |
Keamanan | Tinggi. Metode ini menyediakan kontrol dan isolasi izin detail halus. Menggunakan kredensial sementara STS tanpa pasangan AccessKey yang dikodekan secara keras. | Sedang. Semua pod berbagi izin, yang dapat menyebabkan risiko izin berlebihan. | Rendah. Risiko kebocoran pasangan AccessKey sangat tinggi. |
Skenario | Metode ini cocok untuk layanan yang sensitif terhadap keamanan dan lingkungan produksi yang memerlukan kontrol izin ketat. | Metode ini cocok untuk skenario yang memerlukan izin terpadu, serta lingkungan pengembangan dan staging yang memerlukan tingkat kontrol izin tertentu. | Metode ini cocok untuk penerapan cepat atau lingkungan demo. |
Gunakan RRSA
Dalam kluster ACK milik 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 kata sandi, pertama-tama aktifkan RRSA di kluster, lalu konfigurasikan RRSA untuk komponen tanpa kata sandi. Jika langkah-langkah ini dilakukan dalam urutan yang salah, hapus pod plug-in tanpa kata sandi untuk mengaktifkan fitur RRSA.
Di Akun A, aktifkan fitur RRSA untuk kluster ACK dan buat Peran RAM yang memiliki izin untuk mengasumsikan peran.
Aktifkan fitur RRSA untuk kluster ACK.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster target dan klik namanya. Di panel navigasi kiri, klik Cluster Information.
Di bagian Security and Auditing pada tab Basic Information, klik Enable di sebelah RRSA OIDC.

Di kotak dialog Enable RRSA, klik Confirm.
Di bagian Basic Information, jika status kluster berubah dari Updating menjadi Running, berarti fitur RRSA telah diaktifkan untuk kluster tersebut.
Setelah fitur RRSA diaktifkan untuk kluster, navigasikan ke bagian Security and Auditing di bawah tab Basic Information. Jika Anda mengarahkan kursor mouse ke label Enabled di sebelah RRSA OIDC, URL dan Nama Sumber Daya Alibaba Cloud (ARN) penyedia OIDC akan ditampilkan.

Gunakan editor skrip untuk mengedit kebijakan kepercayaan dan buat Peran RAM untuk Penyedia Identitas OIDC.
Ganti
<oidc_issuer_url>dalam contoh dengan URL penyedia OIDC kluster saat ini yang Anda peroleh pada langkah sebelumnya.Ganti
<oidc_provider_arn>dalam contoh dengan ARN penyedia OIDC kluster saat ini yang Anda peroleh 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 tersebut untuk memberikan izin mengasumsikan peran, lalu catat ARN-nya. Untuk informasi selengkapnya, lihat Mengelola izin untuk Peran RAM.Di halaman detail peran, klik tab Permissions, lalu klik Grant Permission.
Di panel Grant Permission, pada bagian Access Policy, pilih kebijakan akses AliyunSTSAssumeRoleAccess, lalu klik OK.
Di halaman detail peran, pada bagian Basic Information, lihat dan catat ARN Peran RAM tersebut. Untuk informasi selengkapnya, lihat Bagaimana cara melihat ARN Peran RAM?
Di Akun B, buat Peran RAM, berikan izin untuk menarik gambar pribadi, dan izinkan Peran RAM milik Akun A untuk mengasumsikan peran ini.
Gunakan editor skrip untuk mengedit kebijakan kepercayaan dan buat Peran RAM untuk akun Alibaba Cloud tepercaya agar Akun A dapat mengasumsikan peran tersebut.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<ARN of the role created in Account A>" ] } } ], "Version": "1" }Buat kebijakan kustom dengan konten berikut dan berikan kebijakan tersebut ke Peran RAM. Hal ini memberikan izin kepada peran untuk 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 detik hingga 43.200 detik. Nilai default-nya adalah 3.600 detik.
Pastikan nilai ini sama dengan nilai parameter
expireDurationyang akan Anda konfigurasi nanti. NilaiexpireDurationtidak boleh melebihi durasi sesi maksimum.Di halaman detail peran, catat ARN Peran RAM dari bagian Basic Information.
Di Akun A, instal komponen tanpa kata sandi untuk kluster ACK dan modifikasi item konfigurasinya.
Untuk informasi selengkapnya tentang perbedaan antar komponen, lihat Perbandingan komponen tanpa kata sandi.
komponen aliyun-acr-credential-helper managed
Masuk ke ACK console atau . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Di halaman Add-ons, pilih tab Security. Temukan kartu aliyun-acr-credential-helper (Managed) dan klik Install.
Di kotak dialog Aliyun-acr-credential-helper Parameter Settings, centang kotak Is RRSA Enabled dan klik Add. Masukkan parameter berikut dan klik OK.

Konfigurasi instans ACR Edisi Perusahaan terkait:
Parameter
Deskripsi
Contoh
instanceId
ID instans ACR. Untuk menentukan beberapa ID, pisahkan dengan koma (,).
cri-XXXXX
regionId
ID wilayah instans ACR.
cn-hangzhou
domains
Nama domain yang digunakan oleh instans ACR. Masukkan semua titik akhir (publik dan VPC) instans ACR. Untuk menentukan nama domain individual, pisahkan dengan koma (,).
XXXXX-registry.cn-hangzhou.cr.aliyuncs.com
assumeRoleARN
ARN Peran RAM pemilik instans ACR. Masukkan ARN Peran RAM yang Anda buat di Akun B.
acs:ram::100XXXXXXXX9630:role/XXXX
expireDuration
Periode validitas kredensial sementara dalam skenario lintas akun. Masukkan durasi sesi maksimum Peran RAM yang Anda buat di Akun B.
3600
rrsaRoleARN
ARN Peran RAM pemilik kluster ACK. Masukkan ARN Peran RAM yang Anda buat di Akun A.
acs:ram::128XXXXXXXXXX09011:role/XXXX
rrsaOIDCProviderRoleARN
ARN Penyedia Identitas OIDC kluster ACK. Masukkan ARN Penyedia Identitas OIDC RRSA kluster ACK di Akun A.
acs:ram::128XXXXXXXXXX09011:oidc-provider/ack-rrsa-c8864XXXXXXXXXXXXXXXXXX99356a636
Untuk informasi selengkapnya tentang parameter lainnya, lihat Konfigurasi komponen.
komponen aliyun-acr-credential-helper
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Di halaman Applications, klik tab Security. Temukan komponen aliyun-acr-credential-helper dan klik Install. Di kotak dialog yang muncul, atur opsi tokenMode ke auto dan klik OK.

Modifikasi ConfigMap komponen tanpa kata sandi.
Di panel navigasi kiri, pilih .
Di bagian atas halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, klik Edit YAML di kolom Actions untuk acr-configuration dan modifikasi konfigurasi seperti pada contoh berikut.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "c*@example.com" acr-registry-info: | - instanceId: "cri-xxx" # The ID of the ACR instance. regionId: "cn-hangzhou" # The region ID of the ACR instance. domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com" # The endpoint of the ACR instance. rrsaRoleARN: "<ARN of the role created in Account A>" rrsaOIDCProviderRoleARN: "<The ARN of the OIDC IdP from the basic information page of the ACK cluster in the console for Account A.>" assumeRoleARN: "<ARN of the role created in Account B>" expireDuration: 3600 # The maximum session duration of the RAM role in Account B. The default value is 3600. rrsa: | enable: true # Enable the RRSA feature for the passwordless component.
Gunakan asumsi Peran RAM Worker
Dalam kluster ACK milik 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.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster target dan klik namanya. Di panel navigasi kiri, klik Cluster Information.
Di halaman Cluster Information, klik tab Basic Information. Di area Cluster Resources, klik tautan di sebelah kanan Worker RAM Role.
Sambungkan kebijakan
AliyunSTSAssumeRoleAccesske peran tersebut untuk memberikan izin mengasumsikan peran, lalu catat ARN-nya. Untuk informasi selengkapnya, lihat Mengelola izin untuk Peran RAM.Di halaman detail peran, klik tab Permissions, lalu klik Grant Permission.
Di panel Grant Permission, pada bagian Access Policy, pilih kebijakan akses AliyunSTSAssumeRoleAccess, lalu klik OK.
Di halaman detail peran, pada bagian Basic Information, lihat dan catat ARN Peran RAM tersebut. Untuk informasi selengkapnya, lihat Bagaimana cara melihat ARN Peran RAM?
Di Akun B, buat Peran RAM, berikan izin untuk menarik gambar pribadi, dan izinkan Peran RAM Worker kluster ACK di Akun A untuk mengasumsikan peran ini.
Buat kebijakan kustom dengan konten berikut, dan berikan kebijakan tersebut ke Peran RAM. Hal ini memberikan izin kepada peran untuk memperoleh informasi instans dan menarik gambar.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] }Di halaman informasi dasar Peran RAM, klik tab Trust Policy dan klik Edit Trust Policy. Perbarui kebijakan dengan konten berikut untuk mengizinkan Peran RAM Worker kluster ACK di Akun A mengasumsikan Peran RAM milik Akun B.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<ARN of the role created in Account A>" ] } } ], "Version": "1" }Di halaman detail peran, pada bagian Basic Information, lihat dan catat ARN Peran RAM tersebut. Untuk informasi selengkapnya, lihat Bagaimana cara melihat ARN Peran RAM?
Di Akun A, instal komponen tanpa kata sandi untuk kluster ACK dan modifikasi item konfigurasinya.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Di halaman Applications, klik tab Security. Temukan komponen aliyun-acr-credential-helper dan klik Install. Di kotak dialog yang muncul, atur tokenMode ke workerRole dan klik OK.

Modifikasi ConfigMap komponen tanpa kata sandi.
Di panel navigasi kiri, pilih .
Di bagian atas halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, klik Edit YAML di kolom Actions untuk acr-configuration dan modifikasi konfigurasi seperti pada contoh berikut.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "c*@example.com" acr-registry-info: | - instanceId: "cri-xxx" # The ID of the ACR Enterprise Edition instance. regionId: "cn-hangzhou" # The region ID of the ACR Enterprise Edition instance. domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com" # The endpoint of the ACR Enterprise Edition instance. assumeRoleARN: "<ARN of the role created in Account B>" expireDuration: 3600 # The maximum session duration of the RAM role in Account B. The default value is 3600.
Gunakan pasangan AccessKey Pengguna RAM
Dalam kluster ACK milik Akun A, komponen tanpa kata sandi menggunakan ID AccessKey dan Rahasia AccessKey Pengguna RAM dari Akun B untuk menarik gambar pribadi dari Akun B. Meskipun metode ini mudah dikonfigurasi, ID AccessKey dan Rahasia AccessKey disimpan dalam teks biasa, yang menimbulkan risiko keamanan.
Di Akun B, buat Pengguna RAM dan berikan izin cr.* kepada Pengguna RAM tersebut.
Buat kebijakan kustom dengan konten berikut dan berikan kebijakan tersebut ke Pengguna RAM. Hal ini memberikan izin kepada Pengguna RAM untuk 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 tanpa kata sandi untuk kluster ACK dan modifikasi item konfigurasinya.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, klik Cluster Information.
Di halaman ACK Clusters, klik nama kluster target. Di panel navigasi kiri, klik Add-ons.
Di halaman Applications, klik tab Security. Temukan komponen aliyun-acr-credential-helper dan klik Install. Di kotak dialog yang muncul, atur opsi tokenMode ke auto dan klik OK.

Modifikasi ConfigMap komponen tanpa kata sandi.
Di panel navigasi kiri, pilih .
Di bagian atas halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, klik Edit YAML di kolom Actions untuk acr-configuration dan modifikasi konfigurasi seperti pada contoh berikut.
data: service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "c*@example.com" acr-registry-info: | - instanceId: "" # The ID of the ACR Enterprise Edition instance. regionId: "cn-hangzhou" # The region ID of the ACR Enterprise Edition instance. customAccessKey: "xxxxx" # The AccessKey ID of the RAM user in Account B. customAccessKeySecret: "xxxxxx" # The AccessKey secret of the RAM user in Account B.
Langkah 3: Verifikasi penarikan gambar lintas akun
Prosedur verifikasi ini hanya untuk tujuan demonstrasi. Untuk informasi selengkapnya, lihat Bangun gambar dan Buat workload.
Di instans ACR Enterprise milik Akun B, peroleh Public Endpoint atau alamat VPC gambar kontainer yang diperlukan.

Di kluster ACK milik Akun A, pilih dan buat workload dari gambar kontainer tersebut.
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 # Specify the address of the ACR image in Account B. ports: - containerPort: 80Jika pesan
Successfully pulled image "XXX" in XXXs (XXXs including waiting). Image size: XXX bytes.muncul di event pod untuk workload tersebut, berarti gambar berhasil ditarik dari akun yang berbeda menggunakan komponen tanpa kata sandi.
FAQ
Bagaimana cara mengatasi konflik alamat IP di Blok CIDR 100.0.0.0/8?
Saat Anda mengonfigurasi aturan routing, alamat IP yang diurai dari nama domain otentikasi dan nama domain OSS berada di Blok CIDR 100.0.0.0/8. Jika jaringan internal Anda juga menggunakan alamat IP dari Blok CIDR ini, konflik dapat terjadi saat Anda mengakses instans ACR Edisi Perusahaan. Untuk menghindari konflik tersebut, ikuti langkah-langkah berikut.
Konflik Blok CIDR nama domain otentikasi
Anda dapat mengaktifkan fitur takeover nama domain otentikasi oleh instans. Dengan cara ini, Anda hanya perlu mengakses nama domain instans. Hal ini mengatasi konflik dengan Blok CIDR nama domain otentikasi.
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 halaman pengelolaan instans, pilih . Di halaman Domain Names, aktifkan sakelar Instance Takeover of Authentication Domain Name.
PentingUntuk menggunakan fitur takeover nama domain otentikasi oleh instans, Anda harus mengajukan tiket untuk menambahkan instans Edisi Perusahaan ke daftar putih.
Di prompt Confirm Enable Instance Takeover Authentication Domain Name, klik OK.
Konflik Blok CIDR nama domain OSS
Anda dapat mengakses sumber daya OSS melalui jaringan pribadi menggunakan PrivateLink. Lalu, arahkan rekaman CNAME dari nama domain OSS target asli ke titik akhir PrivateLink.