All Products
Search
Document Center

Container Registry:Gunakan komponen tanpa kata sandi untuk menarik gambar dari instans Container Registry (ACR) Edisi Perusahaan dalam akun yang sama

Last Updated:Jun 22, 2026

Komponen tanpa kata sandi mengotomatiskan otentikasi untuk menarik gambar, sehingga menghilangkan kebutuhan untuk berulang kali mengonfigurasi imagePullSecrets. Topik ini menjelaskan cara menginstal, mengonfigurasi, dan menggunakan komponen tersebut, serta menyediakan catatan penting.

Cara kerja

Saat Anda menggunakan Container Registry (ACR) sebagai sumber gambar tanpa mengaktifkan penarikan anonim, kluster ACK harus menyediakan username dan password untuk mengotentikasi setiap penarikan gambar. Solusi umum adalah menyimpan kredensial tersebut dalam Secret, tetapi pendekatan ini memiliki beberapa kelemahan:

  • Secret merupakan teks biasa yang dikodekan Base64, yang menimbulkan risiko keamanan jika terpapar.

  • Anda harus menentukan secara manual imagePullSecrets untuk setiap beban kerja.

  • Secret tidak dapat dibagikan lintas namespace.

Komponen tanpa kata sandi bekerja sebagai berikut:

  1. Komponen memperoleh kredensial sementara dari instans ACR.

  2. Komponen menyimpan kredensial sementara tersebut ke dalam Secret.

  3. Komponen mengaitkan Secret tersebut dengan ServiceAccount yang ditentukan dalam konfigurasinya.

  4. Workload yang menggunakan ServiceAccount tersebut kemudian dapat secara otomatis menarik gambar menggunakan kredensial sementara yang tersimpan di Secret.

Komponen tanpa kata sandi dapat mengelola ServiceAccount di beberapa namespace dan secara otomatis memperbarui kredensial sementara sesuai jadwal. Hal ini mengurangi risiko keamanan dan menghilangkan kebutuhan untuk menambahkan imagePullSecrets secara manual ke workload Anda. Komponen ini tidak dikenai biaya.

Perbandingan komponen

ACK menyediakan komponen aliyun-acr-credential-helper 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

Versi 1.22 atau lebih baru dari kluster ACK yang dikelola, kluster ACK serverless, atau kluster ACK Edge

Versi 1.20 atau lebih baru dari kluster ACK yang dikelola atau kluster khusus ACK

Fitur

  • Tidak perlu pengelolaan mandiri

  • Mendukung penarikan gambar cross-account menggunakan RRSA

  • Mendukung kueri log komponen

  • Mendukung penarikan gambar cross-account menggunakan role RAM worker, RRSA, atau pasangan Kunci Akses

Untuk melakukan upgrade kluster, lihat Upgrade kluster secara manual.

Prasyarat

  • Versi kluster Anda didukung oleh komponen tanpa kata sandi. Untuk informasi lebih lanjut, lihat tabel sebelumnya.

  • Anda memiliki instans ACR Edisi Perusahaan.

    Penting
    • Komponen 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 ini, lihat Bagaimana cara menggunakan imagePullSecrets?.

  • Izin telah diberikan kepada role RAM yang digunakan oleh komponen tanpa kata sandi. Untuk informasi lebih lanjut, lihat Berikan izin.

  • Konektivitas jaringan telah dibuat antara instans ACR Edisi Perusahaan dan kluster ACK.

    Konfigurasikan konektivitas jaringan

    Sebelum menarik gambar, pastikan instans ACR Edisi Perusahaan dan kluster ACK dapat saling berkomunikasi serta nama domain yang diperlukan dapat diselesaikan. Anda dapat menggunakan salah satu metode berikut untuk menarik gambar dalam akun yang sama:

    • Kontrol akses VPC ACR: Jika instans ACR Edisi Perusahaan dan kluster ACK berada di wilayah yang sama, kluster ACK dapat mengakses instans ACR melalui VPC. Untuk informasi lebih lanjut, lihat Konfigurasikan kontrol akses jaringan.

    • Koneksi peering VPC: Jika instans ACR dan kluster ACK tidak berada dalam VPC yang sama, Anda dapat menggunakan koneksi peering VPC untuk menghubungkan kedua VPC tersebut. Hal ini memungkinkan kluster ACK mengakses instans ACR Edisi Perusahaan. Peering VPC tidak dikenai biaya untuk VPC dalam wilayah yang sama, tetapi dikenai biaya untuk VPC di wilayah berbeda. Untuk informasi lebih lanjut, lihat Penagihan. Blok CIDR dari kedua VPC tidak boleh tumpang tindih. Jika blok CIDR yang sedang digunakan sangat tumpang tindih, Anda harus memodifikasi arsitektur jaringan yang ada.

      Prosedur koneksi peering VPC

      1. Aktifkan resolusi nama domain pribadi untuk instans ACR

        Setelah Anda menghubungkan instans ACR Edisi Perusahaan ke VPC, Anda dapat mengakses instans tersebut dalam VPC menggunakan nama domain pribadinya. Setelah konfigurasi, peroleh ID VPC dan alamat IP pribadi instans ACR Edisi Perusahaan.
      2. Peroleh nama domain dan alamat IP instans ACR

        Peroleh nama domain dan alamat IP layanan otentikasi yang digunakan untuk mengakses instans ACR Edisi Perusahaan, serta nama domain dan alamat IP bucket OSS yang terkait.
      3. Buat koneksi peering VPC dan konfigurasikan tabel rute

        Anda harus menambahkan entri rute yang mengarah ke VPC peer di kedua ujung koneksi peering VPC untuk mengaktifkan komunikasi pribadi antar-VPC bagi kluster ACK dan instans ACR Edisi Perusahaan. Di ujung kluster ACK pada koneksi peering VPC, Anda juga harus mengonfigurasi entri rute untuk alamat IP layanan otentikasi dan alamat IP bucket OSS yang terkait.
      4. Selesaikan nama domain instans ACR untuk kluster ACK

        Gunakan metode seperti menambahkan rekaman DNS pribadi atau menggunakan skrip data kustom kelompok node untuk memodifikasi file /etc/hosts secara batch. Hal ini menyelesaikan nama domain instans ACR ke alamat IP pribadinya, sehingga memungkinkan kluster ACK meneruskan traffic ke VPC instans ACR melalui entri rute yang telah dikonfigurasi.
    • Internet: Jika instans ACR Edisi Perusahaan dan kluster ACK keduanya dapat mengakses internet, gambar dapat ditransfer melalui internet. Untuk informasi lebih lanjut, lihat Konfigurasikan kontrol akses publik untuk instans ACR dan Aktifkan akses internet untuk kluster.

Gunakan komponen terkelola tanpa sandi

Langkah 1: Instal komponen

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.

  3. Di halaman Add-ons, klik tab Security, temukan kartu aliyun-acr-credential-helper (managed), lalu klik Install.

  4. Di halaman Install component aliyun-acr-credential-helper, tinjau pengaturan AcrInstanceInfo dan opsi lainnya. AcrInstanceInfo berisi pengaturan untuk setiap instans ACR yang dikaitkan dengan komponen. Opsi lainnya adalah pengaturan komponen. Jika Anda tidak perlu mengubah namespace atau ServiceAccount yang dipantau komponen, Anda dapat mempertahankan pengaturan default.

    Setelah komponen diinstal, Anda dapat mengubah pengaturannya dengan mengklik Configurations pada kartu aliyun-acr-credential-helper (managed) di halaman Add-ons.

    Pengaturan asosiasi instans ACR:

    AcrInstanceInfo

    Deskripsi

    InstanceId

    ID instans ACR. Anda dapat memperoleh ID tersebut dari Konsol Container Registry.

    Penting

    Biarkan bidang ini kosong untuk instans ACR Edisi Personal. Bidang ini wajib diisi untuk instans ACR Edisi Perusahaan.

    regionId

    ID wilayah tempat instans ACR dideploy. Anda dapat memperoleh ID tersebut dari Konsol Container Registry.

    Penting

    Parameter ini wajib diisi untuk penarikan gambar cross-region.

    domains

    Nama domain yang digunakan oleh komponen tanpa kata sandi untuk mengakses instans ACR. Secara default, ini mencakup semua nama domain (internet dan VPC) dari instans ACR yang ditentukan. Untuk menentukan beberapa nama domain, pisahkan dengan koma (,).

    Pengaturan untuk penarikan gambar cross-account

    Pengaturan ini berlaku untuk penarikan gambar cross-account. Jika Anda tidak memerlukan fitur ini, biarkan bidang kosong.

    assumeRoleARN

    Tidak diperlukan konfigurasi untuk penarikan dalam akun yang sama. Untuk penarikan cross-account, lihat Tarik gambar lintas akun.

    expireDuration

    rrsaRoleARN

    rrsaOIDCProviderRoleARN

    Pengaturan komponen

    Parameter

    Deskripsi

    Enable RRSA

    Pilih kotak centang ini untuk mengaktifkan RRSA. Tidak diperlukan konfigurasi untuk penarikan dalam akun yang sama. Untuk penarikan cross-account, lihat Tarik gambar lintas akun.

    watchNamespace

    Namespace tempat Anda ingin mengaktifkan penarikan gambar tanpa kata sandi. Nilai default adalah default. Atur nilainya menjadi all untuk mengaktifkan fitur ini untuk semua namespace. Untuk menentukan beberapa namespace, pisahkan dengan koma (,). Kami menyarankan agar Anda hanya menentukan namespace bisnis Anda dan menghindari penggunaan all atau namespace untuk komponen sistem kluster guna mencegah gangguan pada penarikan gambar sistem.

    serviceAccount

    Menentukan ServiceAccount tempat komponen tanpa kata sandi versi managed diterapkan. Nilai default adalah Default. Nilai Default menerapkan komponen ke ServiceAccount default di namespace yang ditentukan. Jika Anda mengatur nilainya menjadi *, komponen akan diterapkan ke semua ServiceAccount di namespace yang ditentukan. Untuk menentukan beberapa ServiceAccount, pisahkan dengan koma (,).

    expiringThreshold

    Ambang batas kedaluwarsa untuk kredensial dalam komponen. Nilai default adalah 15m.

    notifyEmail

    Tidak diperlukan konfigurasi.

Langkah 2: Tarik gambar

Setelah Anda menginstal dan mengonfigurasi komponen tanpa kata sandi, tentukan ServiceAccount yang dikaitkan dengan komponen saat membuat workload. Hal ini memungkinkan penarikan 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 ServiceAccount 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: 80

Gunakan komponen tanpa kata sandi versi self-managed

Langkah 1: Instal komponen

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.

  3. Di halaman Add-ons, klik tab Security, temukan kartu aliyun-acr-credential-helper, lalu klik Install.

  4. Di halaman Parameters, pilih mode izin dari daftar drop-down tokenMode dan klik OK. Setelah komponen diinstal, Anda perlu mengonfigurasinya sebelum dapat menarik gambar. Untuk informasi lebih lanjut, lihat Langkah 2: Perbarui konfigurasi komponen (tambahkan instans ACR).

    tokenMode

    Deskripsi

    auto

    (Direkomendasikan) Komponen mendeteksi 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.

    Penting

    Versi aliyun-acr-credential-helper yang dirilis pada atau setelah 3 April 2023 menyediakan parameter yang memungkinkan Anda menyesuaikan role RAM yang digunakan komponen. Untuk informasi lebih lanjut, lihat [Perubahan Produk] Pengumuman tentang perubahan izin yang diperlukan oleh komponen aliyun-acr-credential-helper.

    managedRole

    Komponen menggunakan role AliyunCSManagedAcrRole yang diotorisasi dalam Prasyarat untuk memperoleh izin.

    workerRole

    Komponen menggunakan role RAM worker kluster untuk memperoleh izin. Anda perlu memberikan izin tertentu kepada role RAM worker tersebut.

    Pilih workerRole sebagai mode komponen

    Jika Anda memilih workerRole sebagai mode izin komponen, role RAM worker kluster harus memiliki izin berikut. Untuk informasi tentang cara memberikan izin, lihat Kelola izin role RAM.

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "cr:GetAuthorizationToken",
                    "cr:ListInstanceEndpoint",
                    "cr:PullRepository"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
    Penting

    Pilih mode ini jika Anda perlu menarik gambar lintas akun dengan mengasumsikan role.

Langkah 2: Perbarui konfigurasi komponen

Setelah komponen tanpa kata sandi diinstal, Anda perlu mengonfigurasi ConfigMap acr-configuration untuk menambahkan instans ACR sebelum dapat menarik gambar. Anda dapat melakukannya melalui konsol atau kubectl.

Konsol

  1. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Configurations > ConfigMaps.

  2. Di halaman ConfigMaps, pilih kube-system dari daftar drop-down Namespace. Lalu, klik ConfigMap acr-configuration dan modifikasi pengaturan sesuai tabel berikut.

    Parameter

    Deskripsi

    watch-namespace

    Namespace tempat Anda ingin mengaktifkan penarikan gambar tanpa kata sandi. Nilai default adalah default. Atur nilainya menjadi all untuk mengaktifkan fitur ini untuk semua namespace. Untuk menentukan beberapa namespace, pisahkan dengan koma (,). Kami menyarankan agar Anda hanya menentukan namespace bisnis Anda dan menghindari penggunaan all atau namespace untuk komponen sistem kluster guna mencegah gangguan pada penarikan gambar 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 informasi instans ACR dalam format string YAML multi-baris. Setiap instans dikonfigurasi dengan tiga parameter.

    • instanceId: ID instans ACR. Anda dapat memperoleh ID tersebut dari Konsol Container Registry.

      Penting

      Biarkan bidang ini kosong untuk instans ACR Edisi Personal. Bidang ini wajib diisi untuk instans ACR Edisi Perusahaan.

    • regionId: ID wilayah tempat instans ACR dideploy. Anda dapat memperoleh ID tersebut dari Konsol Container Registry.

      Penting

      Parameter ini wajib diisi untuk penarikan gambar cross-region. Untuk contoh konfigurasi, lihat bagian di bawah.

    • domains: Nama domain yang digunakan oleh komponen tanpa kata sandi untuk mengakses instans ACR. Secara default, ini mencakup semua nama domain dari instans ACR yang ditentukan oleh instanceId. Untuk menentukan beberapa nama domain, pisahkan dengan koma (,).

    Contoh konfigurasi untuk penarikan cross-region

    Saat menggunakan beberapa instans ACR di wilayah berbeda, Anda harus menentukan ID dan wilayah untuk setiap instans.

    data:
        service-account: "default"
        watch-namespace: "all"
        expiring-threshold: "15m"
        notify-email: "c*@aliyuncs.com"
        acr-registry-info: |
          - instanceId: "cri-instanceId"
            regionId: "cn-beijing"
          - instanceId: "cri-instanceId"
            regionId: "cn-hangzhou"      

    service-account

    ServiceAccount yang dikaitkan dengan komponen tanpa kata sandi. Untuk menentukan beberapa ServiceAccount, pisahkan dengan koma (,). Jika Anda mengatur nilainya menjadi default, komponen akan dikaitkan dengan ServiceAccount default di setiap namespace yang ditentukan. Jika Anda mengatur nilainya menjadi "*", komponen akan dikaitkan dengan semua ServiceAccount di namespace yang ditentukan.

kubectl

  1. Jalankan perintah berikut untuk mengedit ConfigMap acr-configuration. Rujuk tabel berikut untuk detail konfigurasi.

    kubectl edit cm acr-configuration -n kube-system

    Kunci parameter

    Deskripsi

    Nilai

    service-account

    ServiceAccount yang menjadi target komponen tanpa kata sandi.

    Nilai default adalah default.

    Catatan

    Untuk menentukan beberapa ServiceAccount, pisahkan dengan koma (,). Jika Anda mengatur nilainya menjadi "*", berlaku untuk semua ServiceAccount di namespace yang ditentukan.

    acr-registry-info

    Array informasi instans ACR dalam format string YAML multi-baris. Setiap instans dikonfigurasi dengan tiga parameter.

    Catatan

    Parameter informasi instans:

    • instanceId: ID instans. Wajib diisi untuk instans Edisi Perusahaan.

    • regionId: Opsional. Default ke wilayah lokal.

    • domains: Opsional. Default ke semua nama domain instans terkait. Untuk menentukan beberapa nama domain, 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 mengaktifkan penarikan gambar tanpa kata sandi.

    Nilai default adalah default. Atur nilainya menjadi all untuk mengaktifkan fitur ini untuk semua namespace. Untuk menentukan beberapa namespace, pisahkan dengan koma (,).

    Catatan

    Kami menyarankan agar Anda hanya menentukan namespace bisnis Anda dan menghindari penggunaan all atau namespace untuk komponen sistem kluster guna mencegah gangguan pada penarikan gambar 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, tentukan ServiceAccount yang dikaitkan dengan komponen saat membuat workload. Hal ini memungkinkan penarikan 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 ServiceAccount 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: 80

FAQ

Aktifkan penggunaan langsung ServiceAccount

Penting

Fitur ini memerlukan aliyun-acr-credential-helper v23.02.06.1-74e2172-aliyun atau lebih baru.

Saat diaktifkan, komponen tanpa kata sandi menggunakan Webhook untuk memantau perubahan ServiceAccount di kluster. Saat ServiceAccount baru dibuat, komponen segera menyuntikkan Secret tanpa kata sandi. Fitur ini berguna untuk skenario di mana ServiceAccount digunakan segera setelah dibuat, seperti saat Helm Chart membuat ServiceAccount dan Deployment secara bersamaan. Fitur ini dapat memengaruhi kinerja komponen dan tidak direkomendasikan untuk penggunaan umum.

Komponen managed

Untuk mengaktifkan fitur ini, instal komponen acr-credential-helper-webhook di kluster Anda:

  1. Di halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.

  2. Di 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

Deskripsi

enable

Menentukan apakah akan mengaktifkan fitur Webhook.

  • true: Mengaktifkan fitur.

  • false: Menonaktifkan fitur.

failure-policy

Kebijakan untuk menangani pengecualian selama pembuatan ServiceAccount.

  • Ignore: Mengabaikan pengecualian dan memungkinkan ServiceAccount dibuat secara normal. Secret penarikan gambar mungkin tidak dilampirkan.

  • Fail: Menghentikan pembuatan ServiceAccount jika terjadi pengecualian. Hal ini tidak direkomendasikan karena dapat menyebabkan kegagalan deployment.

Penting

Karena keterbatasan API Server kluster, jika timeout-seconds diatur ke 15, failure-policy diatur ke Fail, dan Anda terus-menerus membuat 10 ServiceAccount per detik, pembuatan ServiceAccount akan gagal.

timeout-seconds

Periode timeout untuk permintaan pembuatan ServiceAccount tunggal. Jika melebihi timeout, sistem merespons sesuai pengaturan failure-policy. Nilai default adalah 10 detik (s).

Pemecahan masalah kegagalan penarikan gambar

Salah satu kemungkinan penyebabnya adalah konfigurasi komponen tanpa kata sandi yang salah, misalnya:

  • Informasi instans yang dikonfigurasi dalam komponen tidak sesuai dengan instans ACR.

  • Alamat gambar yang digunakan untuk menarik tidak sesuai dengan nama domain yang ditentukan dalam informasi instans komponen.

Ikuti langkah-langkah dalam topik ini untuk memecahkan masalah tersebut.

Jika komponen telah dikonfigurasi dengan benar tetapi penarikan gambar tetap gagal, hal ini mungkin disebabkan oleh konflik antara bidang imagePullSecrets yang ditentukan secara manual dalam YAML workload dan komponen tanpa kata sandi. Untuk mengatasinya, hapus secara manual bidang imagePullSecrets dan buat ulang Pod.

Bagaimana cara menggunakan imagePullSecrets?

Instans 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 dalam Secret dan mereferensikannya di bidang imagePullSecrets.

Penting
  • Komponen tanpa kata sandi tidak kompatibel dengan bidang imagePullSecrets yang ditentukan secara manual.

  • Secret harus berada dalam namespace yang sama dengan workload.

Contoh penggunaan imagePullSecrets

Jalankan perintah berikut dan ganti parameter untuk membuat Secret dengan username dan password Anda.

kubectl create secret docker-registry image-secret-1 \
  --docker-server=<registry-server> \
  --docker-username=<name> \
  --docker-password=<password> \
  --docker-email=<email>

Gunakan Secret dalam workload Anda:

apiVersion: apps/v1
kind: Deployment 
metadata:
  name: nginx-test
  namespace: default 
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx 
    spec:
      imagePullSecrets:
      - name: image-secret-1  # Gunakan Secret yang dibuat pada langkah sebelumnya.
      containers:
      - name: nginx 
        image: <acrID>.cr.aliyuncs.com/<repo>/nginx:latest  # Ganti dengan alamat gambar ACR.

Topik terkait