Komponen tanpa kata sandi mengotomatiskan proses otentikasi untuk menarik gambar, sehingga menghilangkan kebutuhan konfigurasi berulang imagePullSecrets. Topik ini menjelaskan cara menginstal, mengonfigurasi, dan menggunakan komponen tanpa kata sandi, serta menyajikan pertimbangan penting.
Cara kerja
Saat Anda menggunakan Container Registry (ACR) sebagai sumber gambar tanpa mengaktifkan tarikan anonim publik, kluster ACK harus menyediakan username dan password untuk mengotentikasi setiap penarikan gambar. Solusi umum adalah menyimpan kredensial tersebut dalam Kubernetes Secret, tetapi pendekatan ini memiliki beberapa kekurangan:
-
Secret merupakan teks biasa yang dikodekan Base64, yang menimbulkan risiko keamanan jika terpapar.
-
Anda harus secara manual menentukan
imagePullSecretsuntuk setiap workload. -
Secret tidak dapat digunakan lintas namespace.
Komponen tanpa kata sandi bekerja sebagai berikut:
-
Komponen tanpa kata sandi memperoleh username dan password sementara dari instans ACR.
-
Komponen menyimpan kredensial sementara tersebut ke dalam Secret.
-
Komponen mengaitkan Secret tersebut dengan service account yang ditentukan dalam konfigurasi komponen.
-
Workload yang menggunakan service account tersebut kemudian dapat menarik gambar secara default.
Komponen tanpa kata sandi mendukung pengelolaan service account di beberapa namespace dan secara berkala memperbarui username serta password sementara berdasarkan konfigurasi untuk mengurangi risiko kebocoran. Anda tidak perlu menambahkan imagePullSecrets secara manual ke workload. Komponen tanpa kata sandi tidak dikenai biaya.
Perbandingan komponen tanpa kata sandi
ACK menyediakan komponen aliyun-acr-credential-helper, yang tersedia dalam dua edisi: managed dan self-managed. Anda hanya dapat menginstal satu edisi dalam satu waktu. Tabel berikut membandingkan kedua edisi tersebut.
|
Item |
aliyun-acr-credential-helper (Managed) |
aliyun-acr-credential-helper (Self-managed) |
|
Versi kluster yang didukung |
Kluster ACK yang dikelola, Kluster ACK Serverless, dan Kluster ACK Edge yang menjalankan Kubernetes 1.22 atau lebih baru |
Kluster ACK yang dikelola dan Cluster khusus ACK yang menjalankan Kubernetes 1.20 atau lebih baru |
|
Fitur utama |
|
|
Untuk melakukan upgrade kluster, lihat Upgrade kluster secara manual.
Prasyarat
-
Kluster Anda menjalankan versi yang didukung oleh komponen tanpa kata sandi. Untuk informasi lebih lanjut, lihat tabel sebelumnya.
-
Anda memiliki instans Container Registry (ACR) Edisi Perusahaan.
Penting-
Komponen tanpa kata sandi hanya mendukung instans Container Registry (ACR) Edisi Perusahaan 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?.
-
-
Anda telah memberikan izin kepada peran RAM yang digunakan oleh komponen tanpa kata sandi.
-
Harus terdapat konektivitas jaringan antara instans Container Registry (ACR) Edisi Perusahaan dan kluster ACK.
Gunakan komponen tanpa kata sandi versi managed
Langkah 1: Instal komponen
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 halaman Install Component aliyun-acr-credential-helper, tinjau konfigurasi AcrInstanceInfo dan opsi lainnya. AcrInstanceInfo menentukan konfigurasi untuk setiap instans ACR yang terkait dengan komponen. Opsi lainnya adalah pengaturan komponen. Anda dapat mempertahankan pengaturan default jika sesuai dengan namespace dan service account Anda.
Setelah komponen diinstal, Anda dapat membuka halaman Add-ons dan klik Configurations pada kartu aliyun-acr-credential-helper (Managed) untuk mengubah pengaturan komponen.

Konfigurasi instans ACR yang terkait:
AcrInstanceInfo
Description
InstanceId
ID instans ACR. Anda dapat menemukan ID tersebut di Konsol Container Registry.
PentingBiarkan bidang ini kosong untuk instans Edisi Personal. Bidang ini wajib diisi untuk instans Container Registry (ACR) Edisi Perusahaan.
regionId
ID wilayah tempat instans ACR berada. Anda dapat menemukan ID tersebut di Konsol Container Registry.
PentingBidang ini wajib diisi untuk tarikan gambar lintas wilayah.
domains
Nama domain yang digunakan komponen tanpa kata sandi untuk mengakses instans ACR. Secara default, komponen menggunakan semua nama domain (internet dan VPC) dari instans ACR yang ditentukan. Untuk menentukan beberapa nama domain, pisahkan dengan koma (,).
Pengaturan untuk tarikan gambar lintas akun
Pengaturan ini berlaku untuk tarikan gambar lintas akun. Jika Anda tidak memerlukan fitur ini, biarkan bidang-bidang ini kosong.
assumeRoleARN
Pengaturan ini tidak diperlukan untuk tarikan gambar dalam akun yang sama. Untuk informasi tentang tarikan gambar lintas akun, lihat Tarik gambar lintas akun.
expireDuration
rrsaRoleARN
rrsaOIDCProviderRoleARN
Langkah 2: Tarik gambar
Setelah Anda menginstal dan mengonfigurasi komponen tanpa kata sandi, Anda dapat menentukan service account terkait saat membuat workload untuk mengaktifkan tarikan gambar tanpa kata sandi.
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 service account yang terkait dengan komponen tanpa kata sandi.
containers:
- name: nginx
image: "******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest" # Tentukan alamat gambar ACR.
ports:
- containerPort: 80
Gunakan komponen tanpa kata sandi versi self-managed
Langkah 1: Instal komponen
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, lalu klik Install.
-
Pada halaman Parameters, pilih mode izin dari daftar drop-down tokenMode dan klik OK. Setelah komponen diinstal, Anda harus mengonfigurasinya sebelum dapat menarik gambar. Untuk informasi lebih lanjut, lihat Langkah 2: Ubah pengaturan komponen (tambahkan instans ACR).
tokenMode
Description
auto
(Direkomendasikan) Komponen memeriksa waktu pembuatan kluster dan secara otomatis memilih mode izin. Kluster yang dibuat sebelum 3 April 2023 menggunakan mode workerRole. Kluster yang dibuat pada atau setelah 3 April 2023 menggunakan mode managedRole.
PentingVersi aliyun-acr-credential-helper yang dirilis setelah 3 April 2023 menyediakan item konfigurasi yang memungkinkan Anda menyesuaikan peran RAM tempat komponen bergantung. Untuk informasi lebih lanjut, lihat [Perubahan Produk] Pengumuman tentang perubahan izin yang diperlukan oleh komponen aliyun-acr-credential-helper.
managedRole
Komponen menggunakan peran AliyunCSManagedAcrRole yang telah Anda otorisasi di bagian Prasyarat untuk memperoleh izin.
workerRole
Komponen menggunakan worker RAM role kluster untuk memperoleh izin. Anda harus memberikan izin tertentu kepada worker RAM role tersebut.
PentingUntuk menarik gambar lintas akun dengan mengasumsikan peran, pilih mode ini.
Langkah 2: Konfigurasikan pengaturan komponen
Setelah Anda menginstal komponen tanpa kata sandi, Anda harus mengonfigurasi ConfigMap acr-configuration untuk menambahkan instans ACR sebelum dapat menarik gambar. Anda dapat melakukannya melalui konsol atau kubectl.
Konsol
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, klik ConfigMap acr-configuration dan ubah pengaturannya seperti yang dijelaskan dalam tabel berikut.
Parameter
Description
watch-namespace
Namespace tempat Anda ingin mengaktifkan tarikan gambar tanpa kata sandi. Nilai default adalah default. Untuk mengaktifkan tarikan gambar tanpa kata sandi di semua namespace, atur nilainya menjadi all. Untuk menentukan beberapa namespace, pisahkan dengan koma (,). Kami menyarankan agar Anda hanya menentukan namespace bisnis. Hindari menentukan
allatau namespace yang berisi komponen sistem agar tidak mengganggu penarikan gambar komponen sistem.acr-api-version
Pertahankan nilai default.
expiring-threshold
Ambang batas kedaluwarsa untuk kredensial dalam komponen. Nilai default adalah
15m(15 menit).acr-registry-info
Array YAML dari konfigurasi instans ACR. Setiap instans didefinisikan oleh serangkaian parameter.
-
instanceId: ID instans ACR. Anda dapat menemukan ID tersebut di Konsol Container Registry.PentingBiarkan bidang ini kosong untuk instans Edisi Personal. Bidang ini wajib diisi untuk instans Container Registry (ACR) Edisi Perusahaan.
-
regionId: ID wilayah tempat instans ACR berada. Anda dapat menemukan ID tersebut di Konsol Container Registry.PentingBidang ini wajib diisi untuk tarikan gambar lintas wilayah. Untuk informasi lebih lanjut, lihat contoh konfigurasi di bawah.
-
domains: Nama domain yang digunakan komponen tanpa kata sandi untuk mengakses instans ACR. Secara default, semua nama domain dari instans ACR yang ditentukan olehinstanceIddigunakan. Untuk menentukan beberapa nama domain, pisahkan dengan koma (,).
service-account
Service account yang terkait dengan komponen tanpa kata sandi. Untuk menentukan beberapa service account, pisahkan dengan koma (,). Jika Anda mengatur ini ke default, komponen dikaitkan dengan service account default di setiap namespace yang ditentukan dalam watch-namespace. Jika Anda mengatur ini ke
"*", komponen dikaitkan dengan semua service account di namespace yang ditentukan. -
kubectl
-
Jalankan perintah berikut untuk mengedit
acr-configuration. Untuk informasi tentang pengaturan, lihat tabel berikut.kubectl edit cm acr-configuration -n kube-systemKey
Description
Value
service-account
Service account tempat komponen tanpa kata sandi diterapkan.
Nilai default adalah default.
CatatanUntuk menentukan beberapa service account, pisahkan dengan koma (,). Jika Anda mengatur ini ke
"*", komponen diterapkan ke semua service account di namespace yang ditentukan.acr-registry-info
Array YAML dari konfigurasi instans ACR. Setiap instans didefinisikan oleh serangkaian parameter.
CatatanTriplet informasi instans:
-
instanceId: ID instans. Ini wajib diisi untuk instans Container Registry (ACR) Edisi Perusahaan.
-
regionId: Opsional. Default ke wilayah kluster.
-
domains: Opsional. Default ke semua nama domain instans. Untuk menentukan nama domain tertentu, pisahkan dengan koma (,).
Contoh konfigurasi untuk instans Container Registry (ACR) Edisi Perusahaan:
- instanceId: <cri-instanceId> regionId: "cn-hangzhou" domains: "xxx.com,yyy.com"watch-namespace
Namespace tempat Anda ingin mengaktifkan tarikan gambar tanpa kata sandi.
Nilai default adalah default. Untuk mengaktifkan tarikan gambar tanpa kata sandi di semua namespace, atur nilainya menjadi all. Untuk menentukan beberapa namespace, pisahkan dengan koma (,).
CatatanKami menyarankan agar Anda menentukan namespace bisnis Anda. Hindari mengatur ini ke all atau menentukan namespace yang berisi komponen sistem agar tidak mengganggu penarikan gambar komponen sistem.
expiring-threshold
Ambang batas kedaluwarsa untuk kredensial yang di-cache secara lokal.
Nilai default adalah
15m(15 menit). -
Langkah 3: Tarik gambar
Setelah Anda menginstal dan mengonfigurasi komponen tanpa kata sandi, Anda dapat menentukan service account terkait saat membuat workload untuk mengaktifkan tarikan gambar tanpa kata sandi.
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 service account yang terkait dengan komponen tanpa kata sandi.
containers:
- name: nginx
image: "******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest" # Tentukan alamat gambar ACR.
ports:
- containerPort: 80
FAQ
Aktifkan penggunaan langsung untuk service account
Fitur ini memerlukan komponen tanpa kata sandi versi v23.02.06.1-74e2172-aliyun atau lebih baru.
Setelah Anda mengaktifkan fitur ini, komponen tanpa kata sandi menggunakan webhook untuk memantau perubahan service account di kluster. Saat service account baru dibuat, komponen segera menyuntikkan Secret tanpa kata sandi ke dalamnya. Fitur ini berguna dalam skenario di mana service account perlu digunakan segera setelah dibuat, seperti saat membuat service account dan Deployment secara bersamaan menggunakan Helm chart. Fitur ini dapat memengaruhi kinerja komponen dan tidak direkomendasikan untuk skenario lain.
Komponen managed
Anda perlu menginstal komponen acr-credential-helper-webhook:
Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.
-
Pada halaman Add-ons, klik tab Security, temukan kartu acr-credential-helper-webhook (Managed), lalu klik Install.
Komponen self-managed
Untuk mengaktifkan fitur ini, tambahkan bidang berikut ke ConfigMap acr-configuration:
data:
webhook-configuration: |
enable: true
failure-policy: Ignore
timeout-seconds: 10
|
Parameter |
Description |
|
|
Menentukan apakah akan mengaktifkan fitur webhook.
|
|
|
Kebijakan yang menentukan cara melanjutkan jika webhook mengalami pengecualian selama pembuatan service account.
Penting
Karena keterbatasan API Server kluster, jika |
|
|
Periode timeout untuk memproses permintaan pembuatan service account tunggal untuk fitur ini. Jika melebihi timeout, komponen bertindak sesuai pengaturan |
Mengapa penarikan gambar gagal?
Salah satu kemungkinan penyebabnya adalah konfigurasi komponen tanpa kata sandi salah. Misalnya:
-
Informasi instans dalam komponen tanpa kata sandi tidak sesuai dengan instans ACR.
-
Alamat gambar yang digunakan untuk penarikan tidak sesuai dengan nama domain dalam informasi instans komponen tanpa kata sandi.
Ikuti langkah-langkah dalam topik ini untuk memecahkan masalah tersebut.
Jika penarikan gambar gagal meskipun komponen telah dikonfigurasi dengan benar, kegagalan tersebut mungkin disebabkan oleh konflik antara bidang imagePullSecrets yang dimasukkan secara manual dalam YAML workload dan komponen tanpa kata sandi. Untuk mengatasi masalah ini, hapus secara manual bidang imagePullSecrets, lalu hapus Pod lama untuk membuat ulang.
Bagaimana cara menggunakan imagePullSecrets?
Instans Container Registry (ACR) Edisi Personal yang dibuat pada atau setelah 9 September 2024 tidak mendukung komponen tanpa kata sandi. Untuk instans tersebut, kami menyarankan agar Anda menyimpan username dan password login Anda dalam Secret untuk digunakan di bidang imagePullSecrets.
-
Komponen tanpa kata sandi tidak kompatibel dengan bidang
imagePullSecretsyang ditentukan secara manual. -
Secret harus berada di namespace yang sama dengan workload.
Dokumen terkait
-
Untuk informasi tentang penggunaan komponen tanpa kata sandi untuk menarik gambar lintas akun, lihat Tarik gambar lintas akun.
-
Untuk riwayat perubahan komponen, lihat aliyun-acr-credential-helper.