All Products
Search
Document Center

Container Service for Kubernetes:Tarik gambar dari instans Container Registry (ACR) Edisi Perusahaan dalam akun yang sama menggunakan komponen tanpa kata sandi

Last Updated:May 08, 2026

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 imagePullSecrets untuk setiap workload.

  • Secret tidak dapat digunakan lintas namespace.

Komponen tanpa kata sandi bekerja sebagai berikut:

  1. Komponen tanpa kata sandi memperoleh username dan password sementara dari instans ACR.

  2. Komponen menyimpan kredensial sementara tersebut ke dalam Secret.

  3. Komponen mengaitkan Secret tersebut dengan service account yang ditentukan dalam konfigurasi komponen.

  4. 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

  • Tidak memerlukan pengelolaan mandiri

  • Mendukung tarikan gambar lintas akun dengan RRSA

  • Mendukung kueri log komponen

  • Mendukung tarikan gambar lintas akun dengan worker RAM role, RRSA, atau Pasangan Kunci Akses

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.

    Konfigurasikan konektivitas jaringan

    Sebelum menarik gambar, Anda harus memastikan bahwa instans Container Registry (ACR) Edisi Perusahaan dan kluster ACK dapat berkomunikasi serta semua nama domain yang diperlukan dapat diselesaikan. Metode berikut tersedia untuk penarikan gambar dalam akun yang sama:

    • Kontrol akses VPC ACR: Jika instans Container Registry (ACR) Edisi Perusahaan dan kluster ACK berada di wilayah yang sama, kluster ACK dapat mengakses instans ACR melalui virtual private cloud (VPC). Untuk informasi lebih lanjut, lihat Kontrol akses jaringan.

    • Koneksi peering VPC: Jika instans ACR dan kluster ACK berada di VPC yang berbeda, Anda dapat menggunakan koneksi peering VPC untuk menghubungkan kedua VPC tersebut. Hal ini memungkinkan kluster ACK mengakses instans Container Registry (ACR) Edisi Perusahaan. Koneksi peering VPC tidak dikenai biaya jika VPC berada di wilayah yang sama, tetapi dikenai biaya jika VPC berada di wilayah yang berbeda. Untuk informasi lebih lanjut, lihat Penagihan. Metode ini mengharuskan blok CIDR kedua VPC tidak tumpang tindih. Jika sejumlah besar blok CIDR tumpang tindih, Anda mungkin perlu mendesain ulang arsitektur jaringan Anda.

      Prosedur koneksi peering VPC

      1. Internet: Jika instans Container Registry (ACR) Edisi Perusahaan dan kluster ACK memiliki akses internet, Anda dapat mentransfer gambar melalui internet. Untuk informasi lebih lanjut, lihat Konfigurasikan kontrol akses publik untuk instans Container Registry (ACR) Edisi Perusahaan dan Aktifkan akses internet untuk kluster.

    Gunakan komponen tanpa kata sandi versi managed

    Langkah 1: Instal komponen

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

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

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

    4. 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.

      image

      Konfigurasi instans ACR yang terkait:

      AcrInstanceInfo

      Description

      InstanceId

      ID instans ACR. Anda dapat menemukan ID tersebut di Konsol Container Registry.

      Penting

      Biarkan 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.

      Penting

      Bidang 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

      Pengaturan komponen

      Parameter

      Description

      Enable RRSA

      Pilih kotak centang ini untuk mengaktifkan RRSA. Pengaturan ini tidak diperlukan untuk tarikan gambar dalam akun yang sama. Untuk informasi tentang tarikan gambar lintas akun, lihat Tarik gambar lintas akun.

      watchNamespace

      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 all atau namespace yang berisi komponen sistem agar tidak mengganggu penarikan gambar komponen sistem.

      serviceAccount

      Terapkan komponen tanpa kata sandi versi managed ke service account tertentu. Nilai default adalah Default. Jika parameter ini diatur ke Default, komponen diterapkan ke service account default di setiap namespace yang ditentukan. Jika Anda mengatur parameter ini ke tanda bintang (*), komponen diterapkan ke semua service account di namespace yang ditentukan. Untuk menentukan beberapa service account, pisahkan dengan koma (,).

      expiringThreshold

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

      notifyEmail

      Tidak perlu dikonfigurasi.

    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

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

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

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

    4. 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.

      Penting

      Versi 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.

      Izin untuk mode workerRole

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

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

      Untuk 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

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

    2. 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 all atau 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.

        Penting

        Biarkan 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.

        Penting

        Bidang 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 oleh instanceId digunakan. Untuk menentukan beberapa nama domain, pisahkan dengan koma (,).

      Contoh konfigurasi untuk tarikan lintas wilayah

      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

      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

    1. Jalankan perintah berikut untuk mengedit acr-configuration. Untuk informasi tentang pengaturan, lihat tabel berikut.

      kubectl edit cm acr-configuration -n kube-system

      Key

      Description

      Value

      service-account

      Service account tempat komponen tanpa kata sandi diterapkan.

      Nilai default adalah default.

      Catatan

      Untuk 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.

      Catatan

      Triplet 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 (,).

      Catatan

      Kami 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

    Penting

    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:

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

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

    enable

    Menentukan apakah akan mengaktifkan fitur webhook.

    • true: Mengaktifkan fitur webhook.

    • false: Menonaktifkan fitur webhook.

    failure-policy

    Kebijakan yang menentukan cara melanjutkan jika webhook mengalami pengecualian selama pembuatan service account.

    • Ignore: Mengabaikan pengecualian dan memungkinkan service account dibuat secara normal. Namun, Secret untuk menarik gambar mungkin tidak dilampirkan.

    • Fail: Menghentikan pembuatan service account saat terjadi pengecualian. Ini tidak direkomendasikan karena dapat menyebabkan kegagalan deployment bisnis.

    Penting

    Karena keterbatasan API Server kluster, jika timeout-seconds diatur ke 15, failure-policy diatur ke Fail, dan service account dibuat dengan laju 10 per detik, pembuatan service account mungkin gagal.

    timeout-seconds

    Periode timeout untuk memproses permintaan pembuatan service account tunggal untuk fitur ini. Jika melebihi timeout, komponen bertindak sesuai pengaturan failure-policy. Nilai default adalah 10, dalam satuan detik (s).

    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.

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

    • Secret harus berada di namespace yang sama dengan workload.

    Contoh penggunaan imagePullSecrets

    Jalankan perintah berikut, ganti parameter placeholder, untuk membuat Secret dari 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>

    Referensikan Secret tersebut 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 tautan ACR.

    Dokumen terkait