Dalam lingkungan multi-akun Alibaba Cloud, kluster ACK dan instans Container Registry (ACR) Edisi Perusahaan mungkin dikelola oleh akun berbeda dari unit bisnis yang berbeda. Untuk memungkinkan kluster ACK menarik gambar kontainer dari instans ACR Edisi Perusahaan dan menerapkan workload, Anda harus memastikan konektivitas jaringan serta memberikan izin lintas akun yang diperlukan. Topik ini menjelaskan cara menggunakan komponen tanpa kata sandi aliyun-acr-credential-helper untuk menarik gambar lintas akun.
Panduan pengambilan keputusan
Pertama, pilih metode koneksi jaringan dan metode otorisasi akun. Kemudian, pilih komponen tanpa kredensial yang mendukung metode tersebut.
Untuk langkah-langkah terperinci, ikuti prosedur dalam Konfigurasi koneksi jaringan, Konfigurasi otorisasi akun dan komponen tanpa kredensial, lalu Verifikasi penarikan gambar lintas akun.
Dalam topik ini, akses lintas akun mengacu pada akses antara Akun Alibaba Cloud (akun root) yang berbeda, bukan antara Pengguna RAM (sub-akun).
Prasyarat
-
Peran RAM yang digunakan oleh komponen tanpa kata sandi telah diberikan izin yang diperlukan.
-
Kluster ACK Anda harus mendukung komponen tanpa kata sandi.
-
aliyun-acr-credential-helper (dikelola)
Versi 1.22 atau lebih baru dari Kluster ACK yang dikelola, Kluster ACK Serverless, atau Kluster ACK Edge
-
aliyun-acr-credential-helper (dikelola sendiri)
Versi 1.20 atau lebih baru dari Kluster ACK yang dikelola atau Cluster khusus ACK
-
-
Instans Container Registry (ACR) harus merupakan 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: Konfigurasi koneksi jaringan
Saat menarik gambar lintas akun, kluster ACK yang menarik gambar dan instans ACR Edisi Perusahaan yang menyimpan gambar berada di VPC berbeda yang dimiliki oleh akun berbeda dan mungkin juga berada di wilayah berbeda. Sebelum menarik gambar, Anda harus membuat konektivitas jaringan dan memastikan bahwa nama domain terkait dapat diselesaikan. Anda dapat menggunakan salah satu metode berikut:
-
Koneksi publik: Konfigurasikan titik akhir publik untuk instans ACR Edisi Perusahaan dan aktifkan akses jaringan publik untuk kluster ACK. Gambar ditransfer melalui Internet publik. Metode ini kurang aman dan menimbulkan biaya baik untuk alamat IP elastis maupun lalu lintas keluar.
-
Koneksi peering VPC: Gunakan koneksi peering VPC untuk menghubungkan kedua VPC, sehingga memungkinkan kluster ACK mengakses instans ACR Edisi Perusahaan. Fitur ini gratis jika VPC berada di wilayah yang sama, tetapi dikenai biaya jika berada di wilayah berbeda. Metode ini mensyaratkan kedua VPC memiliki blok CIDR yang tidak tumpang tindih. Jika sudah terdapat tumpang tindih signifikan pada blok CIDR yang digunakan, Anda mungkin perlu merancang ulang arsitektur jaringan yang ada.
-
Koneksi Cloud Enterprise Network (CEN): Instans CEN dapat berisi satu atau beberapa router transit. Beberapa router transit dapat saling terhubung melalui koneksi cross-region untuk mengaktifkan komunikasi VPC lintas wilayah dan akun berbeda.
Untuk perbandingan antara koneksi peering VPC dan CEN, lihat Apa perbedaan antara Cloud Enterprise Network dan Koneksi Peering VPC?
|
Item perbandingan |
Koneksi publik |
Koneksi peering VPC |
Cloud Enterprise Network (CEN) |
|
Jenis jaringan |
Publik |
Pribadi |
Pribadi |
|
Penagihan |
Biaya dikenakan berdasarkan metode penagihan alamat IP elastis. |
|
Biaya dikenakan berdasarkan aturan penagihan CEN. |
|
Fitur utama |
Tidak memerlukan perubahan pada arsitektur jaringan yang ada. Untuk keamanan, Anda harus mengonfigurasi aturan arah masuk dan keluar serta kebijakan kontrol akses. |
|
|
|
Prosedur konfigurasi |
|
|
|
Langkah 2: Konfigurasi otorisasi dan komponen tanpa kata sandi
Tiga metode otorisasi berikut memungkinkan Anda menarik gambar lintas akun tanpa menggunakan kredensial statis. Pilih metode yang paling sesuai dengan kebutuhan Anda.
|
Item perbandingan |
RRSA |
Peran RAM Worker |
AccessKey Pengguna RAM |
|
Jenis kluster |
Mendukung Kluster ACK Dasar, Kluster ACK Pro, Kluster ACK Edge, dan Kluster ACK Serverless Pro versi 1.22 ke atas. |
Mendukung Kluster ACK Dasar, Kluster ACK Pro, dan Cluster khusus ACK versi 1.20 ke atas. |
Mendukung Kluster ACK Dasar, Kluster ACK Pro, dan Cluster khusus ACK versi 1.20 ke atas. |
|
Komponen yang didukung |
Untuk informasi lebih lanjut tentang perbedaan antar komponen ini, lihat Perbandingan komponen tanpa kata sandi. |
komponen aliyun-acr-credential-helper |
komponen aliyun-acr-credential-helper |
|
Granularitas izin |
Tingkat Pod (detail halus) |
Tingkat kluster (detail sedang) |
Tingkat akun (detail kasar) |
|
Keamanan |
Tinggi. Metode ini menyediakan kontrol dan isolasi izin detail halus. Menggunakan kredensial sementara dari STS (Security Token Service) dan menghindari hard-coding pasangan AccessKey. |
Sedang. Semua Pod berbagi izin yang sama, yang dapat menyebabkan hak istimewa berlebihan. |
Rendah. Risiko tinggi kebocoran pasangan AccessKey. |
|
Skenario yang berlaku |
Cocok untuk layanan yang sensitif terhadap keamanan dan lingkungan produksi yang memerlukan kontrol izin ketat. |
Cocok untuk skenario dengan persyaratan izin seragam, seperti lingkungan pengembangan dan pengujian yang memerlukan kontrol izin moderat. |
Cocok untuk penerapan cepat atau lingkungan demo. |
RRSA
Dalam kluster ACK di bawah Akun A, Anda mengonfigurasi ServiceAccount tertentu untuk mengasumsikan peran RAM dari Akun B. Peran RAM ini diberikan izin yang diperlukan, sehingga memungkinkan kluster ACK menarik gambar pribadi dari instans ACR di Akun B tanpa menggunakan kredensial statis.
Untuk mengaktifkan fitur RRSA (RAM Roles for Service Accounts) untuk komponen tanpa kata sandi, Anda harus terlebih dahulu mengaktifkan RRSA untuk kluster, lalu mengonfigurasi RRSA untuk komponen tersebut. Jika langkah-langkah ini dilakukan dalam urutan yang salah, Anda harus menghapus Pod komponen tanpa kata sandi agar fitur RRSA dapat diaktifkan.
-
Di bawah Akun A, aktifkan fitur RRSA untuk kluster ACK dan buat peran RAM dengan izin asumsi peran.
-
Aktifkan fitur RRSA untuk kluster ACK.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
-
Pada tab Basic Information, di bagian Security and Auditing, klik Enable di sebelah RRSA OIDC.
-
Pada kotak dialog Enable RRSA, klik Confirm. Tunggu hingga status kluster berubah dari Updating menjadi Running. RRSA kini telah diaktifkan.
-
Setelah RRSA diaktifkan, arahkan kursor ke label Enabled di sebelah RRSA OIDC di bagian Security and Auditing. URL dan Nama Sumber Daya Alibaba Cloud (ARN) penyedia OIDC akan ditampilkan.
-
-
Buat peran RAM untuk penyedia identitas OIDC dan perbarui kebijakan kepercayaannya dengan konten berikut.
-
Ganti
<oidc_issuer_url>dengan URL penyedia OIDC yang Anda peroleh pada langkah sebelumnya. -
Ganti
<oidc_provider_arn>dengan ARN penyedia OIDC 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" } -
-
Lampirkan kebijakan izin
AliyunSTSAssumeRoleAccesske peran tersebut untuk memberikan izin asumsi peran, lalu catat ARN-nya. Untuk informasi lebih lanjut, lihat Mengelola izin untuk peran RAM.-
Pada halaman detail peran, pada tab Authorization, klik Authorize.
-
Pada panel Authorize, di bawah Policies, temukan dan pilih kebijakan AliyunSTSAssumeRoleAccess, lalu klik OK.
-
Pada halaman detail peran, di bagian Basic Information, lihat dan catat ARN peran RAM tersebut. Untuk petunjuk terperinci, lihat Bagaimana cara melihat ARN peran RAM?
-
-
-
Di bawah Akun B, buat peran RAM dengan izin untuk menarik gambar pribadi, dan konfigurasikan agar dapat diasumsikan oleh peran RAM dari Akun A.
-
Buat peran RAM untuk akun Alibaba Cloud tepercaya. Edit kebijakan kepercayaan dengan skrip berikut untuk mengizinkan asumsi peran oleh peran dari Akun A.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<ARN of the role created in Account A>" ] } } ], "Version": "1" } -
Buat kebijakan izin kustom dengan konten berikut dan lampirkan ke peran RAM untuk memberikan izin mendapatkan 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.
Pastikan nilai ini sesuai dengan parameter
expireDurationdalam konfigurasi komponen yang dijelaskan nanti. NilaiexpireDurationtidak boleh melebihi durasi sesi maksimum. -
Pada halaman detail peran, di bagian Basic Information, lihat dan catat ARN peran RAM tersebut.
-
-
Di bawah Akun A, instal komponen tanpa kata sandi untuk kluster ACK dan modifikasi konfigurasinya.
Untuk informasi lebih lanjut tentang perbedaan antar komponen berikut, lihat Perbandingan komponen tanpa kata sandi.
Komponen Terkelola
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons .
-
Pada halaman Add-ons, klik tab Security, temukan kartu aliyun-acr-credential-helper (managed), lalu klik Install.
-
Pada kotak dialog aliyun-acr-credential-helper Parameter Configuration, pilih Enable RRSA. Lalu, klik Add, masukkan parameter berikut, dan klik Confirm.
Konfigurasi instans ACR Edisi Perusahaan:
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 untuk mengakses instans ACR. Masukkan semua nama domain akses (publik dan VPC) untuk instans ACR. Untuk menentukan nama domain tertentu, pisahkan dengan koma (,).
XXXXX-registry.cn-hangzhou.cr.aliyuncs.com
assumeRoleARN
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 bawah Akun B.
3600
rrsaRoleARN
ARN peran RAM yang Anda buat di Akun A.
acs:ram::128XXXXXXXXXX09011:role/XXXX
rrsaOIDCProviderRoleARN
ARN penyedia kluster ACK. Masukkan ARN penyedia penyedia identitas OIDC RRSA untuk kluster ACK di bawah Akun A.
acs:ram::128XXXXXXXXXX09011:oidc-provider/ack-rrsa-c8864XXXXXXXXXXXXXXXXXX99356a636
Untuk informasi tentang parameter lainnya, lihat Konfigurasi komponen.
aliyun-acr-credential-helper
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons .
-
Pada halaman Add-ons, klik tab Security, temukan komponen aliyun-acr-credential-helper, dan klik Install. Pada kotak dialog yang muncul, atur opsi tokenMode ke auto, lalu klik OK.
-
Modifikasi ConfigMap komponen tanpa kata sandi.
-
Di panel navigasi kiri, pilih .
-
Pada halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, temukan acr-configuration dan klik Edit YAML di kolom **Actions**. Perbarui 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. regionId: "cn-hangzhou" # ID wilayah instans ACR. domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com" # Nama domain akses instans ACR. rrsaRoleARN: "<ARN of the role created under Account A>" rrsaOIDCProviderRoleARN: "<OIDC Provider ARN from the cluster's Basic Information page in the ACK console under Account A>" assumeRoleARN: "<ARN of the role created under Account B>" expireDuration: 3600 # Durasi sesi maksimum untuk peran RAM di bawah Akun B. Default: 3600. rrsa: | enable: true # Aktifkan fitur RRSA untuk komponen tanpa kata sandi.
-
-
Peran RAM Worker
Dalam kluster ACK di bawah Akun A, konfigurasikan peran RAM Worker default kluster untuk mengasumsikan peran RAM dari Akun B yang memiliki izin untuk menarik gambar. Hal ini memungkinkan kluster ACK mengakses dan menarik gambar pribadi dari Akun B.
-
Di Akun A, lihat Peran RAM Worker Kluster dan berikan izin pengambilan peran tersebut.
-
Masuk ke Konsol ACK atau . Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
-
Pada halaman Cluster Information, klik tab Basic Information. Di bagian Cluster Resources, klik tautan di sebelah kanan Worker RAM Role.
-
Lampirkan kebijakan izin
AliyunSTSAssumeRoleAccesske peran tersebut untuk memberikan izin asumsi peran, lalu catat ARN-nya. Untuk informasi lebih lanjut, lihat Mengelola izin untuk peran RAM.-
Pada halaman detail peran, pada tab Authorization, klik Authorize.
-
Pada panel Authorize, di bawah Policies, temukan dan pilih kebijakan AliyunSTSAssumeRoleAccess, lalu klik OK.
-
Pada halaman detail peran, di bagian Basic Information, lihat dan catat ARN peran RAM tersebut. Untuk petunjuk terperinci, lihat Bagaimana cara melihat ARN peran RAM?
-
-
-
Di bawah Akun B, buat peran RAM dengan izin untuk menarik gambar pribadi, dan konfigurasikan agar dapat diasumsikan oleh peran RAM Worker kluster ACK di Akun A.
-
Buat kebijakan izin kustom dengan konten berikut dan lampirkan ke peran RAM untuk memberikan izin mendapatkan informasi instans dan menarik gambar.
{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] } -
Pada 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 under Account A>" ] } } ], "Version": "1" } -
Pada halaman detail peran, di bagian Basic Information, lihat dan catat ARN peran RAM tersebut. Untuk petunjuk terperinci, lihat Bagaimana cara melihat ARN peran RAM?
-
Di bawah Akun A, instal komponen tanpa kata sandi untuk kluster ACK dan modifikasi konfigurasinya.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons .
-
Pada halaman Add-ons, klik tab Security, temukan komponen aliyun-acr-credential-helper, dan klik Install. Pada kotak dialog yang muncul, atur opsi tokenMode ke workerRole, lalu klik Confirm.
-
Modifikasi ConfigMap komponen tanpa kata sandi.
-
Di panel navigasi kiri, pilih .
-
Pada halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, temukan acr-configuration dan klik Edit YAML di kolom **Actions**. Perbarui 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 Edisi Perusahaan. regionId: "cn-hangzhou" # ID wilayah ACR Edisi Perusahaan. domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com" # Nama domain akses ACR Edisi Perusahaan. assumeRoleARN: "<ARN of the role created under Account B>" expireDuration: 3600 # Durasi sesi maksimum untuk peran RAM di bawah Akun B. Default: 3600.
-
-
AccessKey Pengguna RAM
Dalam kluster ACK di bawah Akun A, komponen tanpa kata sandi menyimpan ID AccessKey (AK) dan Secret AccessKey (SK) 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.
-
Di bawah Akun B, buat pengguna RAM dan pastikan memiliki izin cr.* yang diperlukan.
-
Buat kebijakan izin kustom dengan konten berikut dan lampirkan ke pengguna RAM untuk memberikan izin mendapatkan 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 bawah Akun A, instal komponen tanpa kata sandi untuk kluster ACK dan modifikasi konfigurasinya.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons .
-
Pada halaman Add-ons, klik tab Security, temukan komponen aliyun-acr-credential-helper, dan klik Install. Pada kotak dialog yang muncul, atur opsi tokenMode ke auto, lalu klik OK.
-
Modifikasi ConfigMap komponen tanpa kata sandi.
-
Di panel navigasi kiri, pilih .
-
Pada halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, temukan acr-configuration dan klik Edit YAML di kolom **Actions**. Perbarui 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 Edisi Perusahaan. regionId: "cn-hangzhou" # ID wilayah ACR Edisi Perusahaan. customAccessKey: "xxxxx" # ID AccessKey pengguna RAM di bawah Akun B. customAccessKeySecret: "xxxxxx" # Secret AccessKey pengguna RAM di bawah Akun B. -
-
Langkah 3: Verifikasi penarikan gambar lintas akun
Proses verifikasi ini hanya untuk demonstrasi. Untuk petunjuk terperinci, lihat Bangun gambar dan Buat workload.
-
Dalam instans ACR Edisi Perusahaan di bawah Akun B, peroleh Public endpoint atau alamat VPC gambar kontainer sesuai kebutuhan.
Buka halaman Basic Information repositori gambar target. Alamat titik akhir tersedia di sisi kanan halaman.
-
Dalam kluster ACK di bawah Akun A, buka dan buat workload menggunakan 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 # Tentukan alamat gambar ACR dari Akun B ports: - containerPort: 80 -
Event Pod dengan pesan
Successfully pulled image "XXX" in XXXs (XXXs including waiting). Image size: XXX bytes.menunjukkan bahwa komponen tanpa kata sandi berhasil menarik gambar lintas akun.Pada halaman detail workload, pada tab Pods, pastikan status Pod adalah **Running** dan kolom **Image** menampilkan alamat repositori gambar lintas akun, seperti
test332-registry.cn-hangzhou.cr.aliyuncs.com/instance/test:v1.
FAQ
Selesaikan konflik IP pada blok CIDR 100.0.0.0/8
IP domain autentikasi dan OSS diselesaikan ke blok CIDR 100.0.0.0/8. Jika jaringan internal Anda menggunakan rentang ini, akan terjadi konflik IP.
Konflik nama domain autentikasi
Selesaikan konflik ini dengan mengaktifkan instans untuk mengambil alih domain autentikasi. Hal ini memungkinkan Anda mengakses layanan hanya menggunakan nama domain instans.
Masuk ke Konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Pada halaman Instances, klik instans Edisi Perusahaan yang ingin Anda kelola.
Di panel navigasi kiri halaman pengelolaan instans, pilih . Pada halaman Domain, aktifkan sakelar Instance Taking over Authentication Domain Name.
PentingUntuk mengaktifkan pengambilalihan domain autentikasi, Anda harus mengajukan tiket untuk menambahkan instans Edisi Perusahaan Anda ke daftar izin.
Pada kotak dialog Confirm to Enable Instance Taking over Authentication Domain Name, klik Confirm.
Konflik nama domain OSS
Untuk menyelesaikan konflik ini, akses sumber daya OSS melalui jaringan pribadi menggunakan PrivateLink, lalu arahkan nama domain OSS ke nama domain PrivateLink dengan rekaman CNAME.