Komponen bebas rahasia mengotomatiskan proses autentikasi untuk menarik gambar kontainer, sehingga menghilangkan kebutuhan untuk berulang kali mengonfigurasi imagePullSecrets. Topik ini menjelaskan cara menginstal, mengonfigurasi, dan menggunakan komponen bebas rahasia, serta menyoroti pertimbangan penting.
Cara kerja
Saat Anda menggunakan ACR sebagai sumber gambar tanpa mengaktifkan penarikan anonim publik, kluster ACK harus menyediakan nama pengguna dan kata sandi untuk autentikasi setiap kali menarik gambar. Solusi umum adalah menyimpan nama pengguna dan kata sandi dalam Secret. Namun, metode ini memiliki kekurangan berikut:
Secret merupakan teks biasa yang dikodekan Base64 dan menimbulkan risiko keamanan jika bocor.
Anda harus menambahkan
imagePullSecretssecara manual ke setiap beban kerja.Secret tidak dapat digunakan lintas namespace.
Komponen bebas rahasia bekerja sebagai berikut:
Komponen bebas rahasia memperoleh nama pengguna dan kata sandi sementara dari instans ACR.
Komponen menyimpan nama pengguna dan kata sandi sementara tersebut ke dalam Secret.
Komponen mengaitkan Secret tersebut dengan akun layanan yang ditentukan dalam konfigurasi komponen.
Beban kerja yang menggunakan akun layanan ini akan menarik gambar secara default menggunakan nama pengguna dan kata sandi sementara yang disimpan dalam Secret.
Komponen bebas rahasia dapat mengelola akun layanan di beberapa namespace sekaligus dan secara berkala memperbarui nama pengguna serta kata sandi sementara berdasarkan konfigurasi. Hal ini mengurangi risiko kebocoran dan menghilangkan kebutuhan untuk menambahkan imagePullSecrets secara manual ke beban kerja. Komponen bebas rahasia ini tersedia secara gratis.
Perbandingan komponen bebas rahasia
ACK menyediakan komponen aliyun-acr-credential-helper dalam dua edisi: terkelola dan mandiri. Anda hanya dapat menginstal satu edisi dalam satu waktu. Tabel berikut membandingkan kedua edisi tersebut.
Item | aliyun-acr-credential-helper (terkelola) | aliyun-acr-credential-helper (mandiri) |
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 |
|
|
Untuk meningkatkan kluster, lihat Tingkatkan kluster secara manual.
Prasyarat
Versi kluster didukung oleh komponen bebas rahasia. Untuk informasi selengkapnya, lihat tabel di atas.
Instans Container Registry (ACR) adalah instans Edisi Perusahaan.
PentingKomponen bebas rahasia hanya mendukung instans Container Registry Edisi Perusahaan dan instans Container Registry Edisi Personal yang dibuat pada atau sebelum 8 September 2024. Jika Anda tidak dapat menggunakan komponen bebas rahasia, lihat Cara menggunakan imagePullSecrets.
Anda telah memberikan izin kepada peran RAM yang digunakan oleh komponen bebas rahasia.
Konektivitas jaringan telah dibuat antara instans Container Registry Edisi Perusahaan dan kluster ACK.
Gunakan komponen bebas rahasia terkelola
Langkah 1: Instal komponen
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Add-ons, pilih tab Security. Temukan kartu Aliyun-acr-credential-helper (Managed) dan klik Install.
Di halaman Install Aliyun-acr-credential-helper, Anda dapat melihat konfigurasi AcrInstanceInfo dan opsi lainnya. AcrInstanceInfo berisi konfigurasi untuk setiap instans ACR yang terkait dengan komponen. Opsi lainnya adalah konfigurasi komponen. Jika Anda tidak perlu mengubah namespace atau akun layanan yang dipantau komponen, Anda dapat mempertahankan pengaturan default.
Setelah komponen diinstal, Anda dapat mengubah konfigurasinya. Di 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 menarik gambar lintas wilayah.
domains
Nama domain yang digunakan plugin bebas rahasia untuk mengakses instans ACR. Secara default, semua nama domain (publik dan VPC) dari instans ACR yang ditentukan digunakan. Untuk menentukan nama domain tertentu, pisahkan dengan koma (,).
Konfigurasi untuk menarik gambar lintas akun
Ini berlaku untuk skenario menarik gambar lintas akun. Jika Anda tidak memiliki persyaratan ini, biarkan kolom 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 Anda menginstal dan mengonfigurasi komponen bebas rahasia, tentukan akun layanan yang terkait dengan komponen saat membuat beban kerja agar dapat menarik gambar tanpa rahasia.
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 terkait dengan komponen bebas rahasia.
containers:
- name: nginx
image: ******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest # Tentukan alamat gambar ACR.
ports:
- containerPort: 80Gunakan komponen bebas rahasia mandiri
Langkah 1: Instal komponen
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Add-ons, klik tab Security. Temukan aliyun-acr-credential-helper dan klik Install.
Di halaman Parameters, pilih mode izin untuk komponen dari daftar drop-down tokenMode, lalu klik OK. Setelah komponen diinstal, konfigurasikan sebelum menarik gambar. Untuk informasi selengkapnya, 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 selengkapnya, 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.
PentingPilih mode ini untuk menarik gambar lintas akun menggunakan asumsi peran.
Langkah 2: Ubah konfigurasi komponen (tambahkan instans ACR)
Setelah komponen bebas rahasia diinstal, Anda harus mengonfigurasi ConfigMap acr-configuration untuk menambahkan instans ACR sebelum dapat menarik gambar. Anda dapat melakukannya di konsol atau menggunakan kubectl.
Konsol
Di halaman Clusters, klik nama kluster yang ingin Anda ubah. Di panel navigasi sebelah kiri, pilih .
Di halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, klik ConfigMap acr-configuration dan modifikasi konfigurasi seperti dijelaskan dalam tabel berikut.
Kunci
Deskripsi
watch-namespace
Namespace tempat Anda ingin menarik gambar tanpa menggunakan rahasia.
acr-api-version
Pertahankan nilai default.
expiring-threshold
Ambang batas kedaluwarsa untuk kredensial cache lokal.
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 menarik gambar lintas wilayah. Lihat contoh konfigurasi di bawah.
domains: Nama domain yang digunakan plugin bebas rahasia 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 digunakan oleh komponen aliyun-acr-credential-helper untuk menarik gambar.
kubectl
Jalankan perintah berikut untuk mengedit
acr-configurationseperti dijelaskan dalam tabel berikut.kubectl edit cm acr-configuration -n kube-systemKunci
Deskripsi
Nilai
service-account
Akun layanan yang digunakan oleh komponen aliyun-acr-credential-helper untuk menarik gambar.
Nilai default: default.
CatatanPisahkan beberapa akun layanan dengan koma (,). Tanda bintang (
*) menentukan semua akun layanan di semua namespace.acr-registry-info
Informasi tentang instans Container Registry. Setiap instans dapat ditentukan oleh tiga parameter bertipe string dalam file YAML.
CatatanParameter untuk menentukan instans:
instanceId: ID instans Container Registry. Bidang ini wajib diisi untuk instans Container Registry Edisi Perusahaan.
regionId: ID wilayah tempat instans Container Registry berada. Parameter ini opsional. Nilai default adalah wilayah tempat kluster ACK Anda berada.
domains: nama domain instans Container Registry. Parameter ini opsional. Secara default, semua nama domain instans ditentukan. Pisahkan beberapa nama domain dengan koma (,).
Contoh konfigurasi untuk instans Container Registry Edisi Perusahaan:
- instanceId: <cri-instanceId> regionId: "cn-hangzhou" domains: "xxx.com,yyy.com"watch-namespace
Namespace tempat Anda ingin menarik gambar tanpa menggunakan rahasia.
Nilai default: default. Nilai all menentukan semua namespace dalam instans Container Registry. Pisahkan beberapa namespace dengan koma (,).
CatatanKami menyarankan agar Anda menetapkan nilai ke namespace produksi Anda. Jika Anda menetapkan nilai ke all atau namespace komponen sistem kluster, gambar di namespace tersebut mungkin gagal ditarik.
expiring-threshold
Periode waktu setelah kredensial Secret cache kedaluwarsa.
Nilai default: 15m.
CatatanKami merekomendasikan agar Anda menggunakan nilai default. Nilai default menentukan bahwa Secret diperbarui 15 menit sebelum kredensial Secret cache kedaluwarsa.
Langkah 3: Tarik gambar
Setelah Anda menginstal dan mengonfigurasi komponen bebas rahasia, tentukan akun layanan yang terkait dengan komponen saat membuat beban kerja agar dapat menarik gambar tanpa rahasia.
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 terkait dengan komponen bebas rahasia.
containers:
- name: nginx
image: ******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest # Tentukan alamat gambar ACR.
ports:
- containerPort: 80Cara mengaktifkan fitur untuk menggunakan akun layanan segera setelah pembuatan
Untuk mengaktifkan fitur penggunaan akun layanan segera setelah pembuatan, Anda harus meningkatkan komponen bebas rahasia ke versi v23.02.06.1-74e2172-aliyun atau lebih baru.
Setelah Anda mengaktifkan fitur webhook, komponen bebas rahasia memantau perubahan akun layanan di kluster menggunakan webhook. Saat akun layanan baru dibuat, komponen langsung menyuntikkan Secret bebas rahasia ke dalamnya. Fitur ini berguna dalam skenario di mana akun layanan harus digunakan segera setelah dibuat, misalnya saat Anda menggunakan Helm Chart untuk membuat akun layanan dan deployment secara bersamaan. Karena fitur ini memengaruhi kinerja komponen, kami tidak merekomendasikan mengaktifkannya dalam skenario lain.
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 untuk menangani akun layanan saat fitur ini mengalami pengecualian.
Penting Karena keterbatasan API Server kluster, jika |
| Batas waktu untuk satu permintaan pembuatan akun layanan untuk fitur ini. Jika batas waktu terlampaui, sistem merespons berdasarkan konfigurasi |
FAQ
Penarikan gambar tetap gagal setelah komponen bebas rahasia dikonfigurasi
Penarikan gambar mungkin gagal karena konfigurasi komponen bebas rahasia yang salah. Misalnya:
Informasi instans dalam komponen bebas rahasia tidak cocok dengan instans ACR.
Alamat gambar yang digunakan untuk menarik gambar tidak cocok dengan nama domain dalam informasi instans komponen.
Ikuti langkah-langkah dalam topik ini untuk memecahkan masalah.
Jika komponen dikonfigurasi dengan benar tetapi penarikan tetap gagal, kegagalan tersebut mungkin disebabkan oleh konflik antara bidang imagePullSecrets yang dimasukkan secara manual dalam YAML beban kerja dan komponen bebas rahasia. Untuk mengatasi masalah ini, hapus secara manual bidang imagePullSecrets, lalu hapus dan buat ulang pod.
Cara menggunakan imagePullSecrets
Instans Container Registry Edisi Personal yang dibuat pada atau setelah 9 September 2024 tidak mendukung komponen bebas rahasia. Untuk instans Container Registry Edisi Personal baru, kami menyarankan agar Anda menyimpan nama pengguna dan kata sandi logon dalam Secret dan menggunakannya dalam bidang imagePullSecrets.
Komponen bebas rahasia tidak dapat digunakan secara bersamaan dengan bidang
imagePullSecretsyang dimasukkan secara manual.Secret harus berada dalam namespace yang sama dengan beban kerja.
Referensi
Untuk informasi selengkapnya tentang cara menggunakan komponen bebas rahasia untuk menarik gambar lintas akun, lihat Tarik gambar lintas akun.
Untuk riwayat perubahan komponen bebas rahasia, lihat aliyun-acr-credential-helper.