Komponen tanpa kata sandi mengotomatiskan otentikasi untuk menarik gambar kontainer, sehingga menghilangkan kebutuhan untuk berulang kali mengonfigurasi imagePullSecrets. Topik ini menjelaskan cara menginstal, mengonfigurasi, dan menggunakan komponen tersebut, serta pertimbangan penting terkaitnya.
Cara kerja
Saat Anda menggunakan Container Registry (ACR) sebagai sumber gambar tanpa mengaktifkan penarikan anonim publik, kluster ACK harus menyediakan nama pengguna dan kata sandi untuk otentikasi setiap kali menarik gambar. Solusi umum adalah menyimpan kredensial tersebut dalam Secret. Namun, pendekatan ini memiliki kelemahan berikut:
Secret merupakan teks biasa yang dikodekan Base64, sehingga menimbulkan ancaman keamanan.
Anda harus menambahkan
imagePullSecretssecara manual ke setiap beban kerja.Secret tidak dapat digunakan lintas namespace.
Komponen tanpa kata sandi bekerja sebagai berikut:
Komponen memperoleh kredensial sementara dari instans ACR.
Komponen menyimpan kredensial tersebut dalam Secret.
Komponen mengaitkan Secret tersebut dengan akun layanan yang ditentukan dalam konfigurasinya.
Beban kerja yang menggunakan akun layanan tersebut secara otomatis menarik gambar menggunakan kredensial sementara yang tersimpan dalam Secret.
Komponen tanpa kata sandi dapat mengelola akun layanan di beberapa namespace sekaligus dan secara berkala memperbarui kredensial sementara sesuai konfigurasi. Hal ini mengurangi risiko kebocoran kredensial serta menghilangkan kebutuhan untuk menambahkan imagePullSecrets secara manual ke beban kerja. Komponen ini disediakan tanpa biaya tambahan.
Perbandingan komponen tanpa kata sandi
ACK menyediakan komponen aliyun-acr-credential-helper, yang tersedia dalam edisi managed dan self-managed. Anda hanya dapat menginstal satu edisi dalam satu waktu. Tabel berikut membandingkan kedua edisi tersebut.
Perbedaan | 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 Kluster khusus ACK yang menjalankan Kubernetes 1.20 atau lebih baru |
Fitur |
|
|
Untuk meningkatkan kluster, lihat Tingkatkan kluster secara manual.
Prasyarat
Versi kluster didukung oleh komponen tanpa kata sandi. Untuk informasi lebih lanjut, lihat tabel di atas.
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?.
Anda telah memberikan izin kepada peran RAM yang digunakan oleh komponen tanpa kata sandi.
Konektivitas jaringan telah dibuat antara instans ACR Edisi Perusahaan dan kluster ACK.
Menggunakan Komponen tanpa kata sandi terkelola
Langkah 1: Instal komponen
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel navigasi kiri, klik Add-ons.
Pada halaman Add-ons, pilih tab Security. Temukan kartu aliyun-acr-credential-helper (Managed) lalu klik Install.
Pada halaman Install aliyun-acr-credential-helper, Anda dapat melihat konfigurasi AcrInstanceInfo dan opsi lainnya. AcrInstanceInfo berisi konfigurasi untuk setiap instans ACR yang dikaitkan dengan komponen. Opsi lainnya merupakan pengaturan umum komponen. Jika Anda tidak perlu mengubah namespace atau akun layanan yang dipantau komponen, pertahankan pengaturan default.
Setelah instalasi, Anda dapat memperbarui konfigurasi komponen. Pada halaman Add-ons, klik Configuration pada kartu aliyun-acr-credential-helper (Managed).

Konfigurasi instans ACR terkait:
AcrInstanceInfo
Deskripsi
InstanceId
ID instans ACR. Anda dapat memperoleh ID tersebut di Konsol Container Registry.
PentingBiarkan parameter ini kosong untuk instans ACR Edisi Personal. Parameter ini wajib diisi untuk instans ACR Edisi Perusahaan.
regionId
ID wilayah instans ACR. Anda dapat memperoleh ID wilayah tersebut di Konsol Container Registry.
PentingParameter ini wajib diisi saat Anda menarik gambar lintas wilayah.
domains
Nama domain yang digunakan plug-in tanpa kata sandi untuk mengakses instans ACR. Secara default, semua nama domain (publik dan VPC) dari instans ACR yang ditentukan akan digunakan. Untuk menentukan nama domain tertentu, pisahkan dengan koma (,).
Konfigurasi untuk menarik gambar lintas akun
Berlaku untuk skenario penarikan gambar lintas akun. Jika Anda tidak memiliki kebutuhan ini, biarkan bidang kosong.
assumeRoleARN
Tidak diperlukan untuk menarik gambar dalam akun yang sama. Untuk menarik gambar lintas akun, lihat Tarik gambar lintas akun.
expireDuration
rrsaRoleARN
rrsaOIDCProviderRoleARN
Langkah 2: Tarik gambar
Setelah menginstal dan mengonfigurasi komponen tanpa kata sandi, tentukan akun layanan yang dikaitkan dengan komponen tersebut saat membuat beban kerja untuk menarik 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 akun layanan yang dikaitkan dengan komponen tanpa kata sandi.
containers:
- name: nginx
image: "******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest" # Tentukan alamat gambar ACR.
ports:
- containerPort: 80Gunakan komponen tanpa kata sandi versi self-managed
Langkah 1: Instal komponen
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel navigasi kiri, klik Add-ons.
Pada halaman Add-ons, klik tab Security. Temukan aliyun-acr-credential-helper lalu klik Install.
Pada halaman Parameter Settings, pilih mode izin untuk komponen dari daftar drop-down tokenMode, lalu klik OK. Setelah instalasi, konfigurasikan komponen sebelum menarik gambar. Untuk informasi lebih lanjut, lihat Langkah 2: Ubah konfigurasi komponen (tambahkan instans ACR).
tokenMode
Deskripsi
auto
(Direkomendasikan) Komponen mendeteksi waktu pembuatan kluster dan secara otomatis menentukan mode izin. Untuk kluster yang dibuat sebelum 3 April 2023, digunakan mode workerRole. Untuk kluster yang dibuat pada atau setelah 3 April 2023, digunakan mode managedRole.
PentingVersi aliyun-acr-credential-helper yang dirilis setelah 3 April 2023 menyediakan item konfigurasi untuk menyesuaikan peran RAM yang digunakan komponen. Untuk informasi lebih lanjut, lihat [Perubahan Produk] Pengumuman tentang perubahan izin yang digunakan aliyun-acr-credential-helper.
managedRole
Komponen menggunakan peran AliyunCSManagedAcrRole, yang diberikan izin di bagian Prasyarat, untuk memperoleh izin.
workerRole
Komponen menggunakan peran RAM worker kluster untuk memperoleh izin. Anda harus memberikan izin tertentu kepada peran RAM worker tersebut.
PentingPilih mode ini untuk menarik gambar lintas akun menggunakan asumsi peran.
Langkah 2: Ubah konfigurasi komponen (tambahkan instans ACR)
Setelah menginstal komponen tanpa kata sandi, Anda harus mengonfigurasi ConfigMap acr-configuration untuk menambahkan instans ACR sebelum menarik gambar. Anda dapat melakukannya melalui konsol atau menggunakan kubectl.
Konsol
Pada halaman Clusters, klik nama kluster yang ingin diubah. Di panel navigasi kiri, pilih .
Pada halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, klik ConfigMap acr-configuration dan modifikasi konfigurasi sesuai tabel berikut.
Konfigurasi komponen
Deskripsi
watch-namespace
Namespace tempat Anda ingin menarik gambar tanpa secret. Nilai default adalah default. Nilai all memungkinkan Anda menarik gambar dari semua namespace tanpa secret. Untuk mengonfigurasi beberapa namespace, pisahkan dengan koma (,). Kami menyarankan Anda menentukan namespace bisnis Anda. Hindari menentukan
allatau namespace yang terkait dengan komponen sistem kluster untuk mencegah masalah saat menarik gambar komponen sistem kluster.acr-api-version
Pertahankan nilai default.
expiring-threshold
Ambang batas kedaluwarsa kredensial komponen. Nilai default adalah
15m(15 menit).acr-registry-info
Array informasi instans untuk gambar kontainer, dalam format string YAML multi-baris. Setiap instans dikonfigurasi sebagai tripel.
instanceId: ID instans ACR. Anda dapat memperoleh ID tersebut di Konsol Container Registry.PentingBiarkan parameter ini kosong untuk instans ACR Edisi Personal. Parameter ini wajib diisi untuk instans ACR Edisi Perusahaan.
regionId: ID wilayah instans ACR. Anda dapat memperoleh ID wilayah tersebut di Konsol Container Registry.PentingParameter ini wajib diisi saat Anda menarik gambar lintas wilayah. Lihat contoh konfigurasi di bawah.
domains: Nama domain yang digunakan plug-in tanpa kata sandi untuk mengakses instans ACR. Secara default, semua nama domain instans ACR diinstanceIddimasukkan. Untuk menentukan nama domain tertentu, pisahkan dengan koma (,).
service-account
Akun layanan yang dikaitkan dengan komponen tanpa kata sandi. Pisahkan beberapa akun layanan dengan koma (,). Nilai default mengaitkan komponen dengan akun layanan default di setiap namespace yang ditentukan. Nilai
"*"mengaitkan komponen dengan semua akun layanan di namespace yang ditentukan.
kubectl
Jalankan perintah berikut untuk mengedit
acr-configurationberdasarkan deskripsi konfigurasi di bawah.kubectl edit cm acr-configuration -n kube-systemKunci konfigurasi
Kunci item konfigurasi
Nilai konfigurasi
service-account
Menerapkan komponen tanpa kata sandi ke akun layanan yang ditentukan.
Nilai default adalah default.
CatatanUntuk menentukan beberapa akun layanan, pisahkan dengan koma (,). Tanda bintang (
"*") berlaku untuk semua akun layanan di namespace yang ditentukan.acr-registry-info
Array informasi instans untuk gambar kontainer, diformat sebagai string YAML multi-baris. Setiap instans dikonfigurasi sebagai tripel.
CatatanInformasi instans tripel mencakup:
instanceId: ID instans. Wajib diisi untuk instans Edisi Perusahaan.
regionId: Opsional. Nilai default adalah wilayah lokal.
domains: Opsional. Secara default, semua nama domain instans digunakan. Untuk menentukan nama domain tertentu, pisahkan dengan koma (,).
Contoh konfigurasi untuk instans ACR Edisi Perusahaan:
- instanceId: <cri-instanceId> regionId: "cn-hangzhou" domains: "xxx.com,yyy.com"watch-namespace
Namespace tempat Anda ingin menarik gambar tanpa kata sandi.
Nilai default adalah default. Nilai all berarti semua namespace. Untuk menentukan beberapa namespace, pisahkan dengan koma (,).
CatatanKami menyarankan Anda hanya mengonfigurasi namespace bisnis Anda. Hindari mengonfigurasi all atau namespace yang terkait dengan komponen sistem untuk mencegah masalah saat menarik gambar komponen sistem.
expiring-threshold
Ambang batas kedaluwarsa kredensial yang di-cache secara lokal.
Nilai default adalah
15m(15 menit).
Langkah 3: Tarik gambar
Setelah menginstal dan mengonfigurasi komponen tanpa kata sandi, tentukan akun layanan yang dikaitkan dengan komponen tersebut saat membuat beban kerja untuk menarik 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 akun layanan yang dikaitkan dengan komponen tanpa kata sandi.
containers:
- name: nginx
image: "******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest" # Tentukan alamat gambar ACR.
ports:
- containerPort: 80FAQ
Bagaimana cara mengaktifkan fitur untuk menggunakan akun layanan segera setelah pembuatan?
Untuk mengaktifkan penggunaan akun layanan segera setelah pembuatan, Anda harus meningkatkan komponen tanpa kata sandi ke v23.02.06.1-74e2172-aliyun atau lebih baru.
Saat diaktifkan, komponen tanpa kata sandi memantau perubahan akun layanan di kluster menggunakan webhook. Saat akun layanan baru dibuat, komponen segera menyuntikkan Secret tanpa kata sandi ke dalamnya. Fitur ini berguna dalam skenario di mana akun layanan harus digunakan segera setelah pembuatan, seperti saat menerapkan Helm Chart yang membuat akun layanan dan deployment secara bersamaan. Karena fitur ini memengaruhi kinerja komponen, kami tidak merekomendasikan mengaktifkannya dalam skenario lain.
Komponen managed
Anda harus menginstal komponen acr-credential-helper-webhook di kluster:
Pada halaman Clusters ACK, klik nama kluster target. Di panel navigasi kiri, klik Add-ons.
Pada halaman Add-ons, pilih tab Security. Temukan kartu acr-credential-helper-webhook (Managed) lalu klik Install.
Komponen self-managed
Untuk mengaktifkan fitur ini, tambahkan bidang berikut ke acr-configuration:
data:
webhook-configuration: |
enable: true
failure-policy: Ignore
timeout-seconds: 10Item konfigurasi | Deskripsi |
| Menentukan apakah akan mengaktifkan fitur webhook.
|
| Kebijakan penanganan akun layanan saat fitur ini mengalami pengecualian.
Penting Karena keterbatasan API Server kluster, jika |
| Periode timeout untuk permintaan pembuatan akun layanan tunggal untuk fitur ini. Jika periode timeout terlampaui, sistem merespons berdasarkan konfigurasi |
Mengapa penarikan gambar masih gagal setelah komponen tanpa kata sandi dikonfigurasi?
Kemungkinan penyebabnya adalah konfigurasi komponen tanpa kata sandi yang salah, seperti:
Informasi instans dalam komponen tanpa kata sandi tidak sesuai dengan instans ACR.
Alamat gambar yang digunakan untuk menarik tidak sesuai dengan nama domain dalam informasi instans komponen.
Ikuti langkah-langkah dalam topik ini untuk memecahkan masalah tersebut.
Jika komponen telah dikonfigurasi dengan benar tetapi penarikan tetap gagal, masalahnya mungkin berasal dari konflik antara bidang imagePullSecrets yang ditentukan secara manual dalam YAML beban kerja dan komponen tanpa kata sandi. Untuk mengatasinya, hapus bidang imagePullSecrets secara manual, lalu hapus dan buat ulang pod tersebut.
Bagaimana cara menggunakan imagePullSecrets?
Instans ACR Edisi Personal yang dibuat pada atau setelah 9 September 2024 tidak mendukung komponen tanpa kata sandi. Untuk instans ACR Edisi Personal baru, kami menyarankan menyimpan nama pengguna dan kata sandi logon dalam Secret dan mereferensikannya di bidang imagePullSecrets.
Komponen tanpa kata sandi tidak dapat digunakan secara bersamaan dengan bidang
imagePullSecretsyang ditentukan secara manual.Secret harus berada di namespace yang sama dengan beban kerja.
Referensi
Untuk informasi lebih lanjut tentang penggunaan komponen tanpa kata sandi untuk menarik gambar lintas akun, lihat Tarik gambar lintas akun.
Untuk riwayat perubahan komponen tanpa kata sandi, lihat aliyun-acr-credential-helper.