全部产品
Search
文档中心

Container Registry:Tarik gambar dari instans Container Registry Edisi Perusahaan (ACR) dalam akun yang sama menggunakan komponen bebas rahasia

更新时间:Nov 14, 2025

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 imagePullSecrets secara manual ke setiap beban kerja.

  • Secret tidak dapat digunakan lintas namespace.

Komponen bebas rahasia bekerja sebagai berikut:

  1. Komponen bebas rahasia memperoleh nama pengguna dan kata sandi sementara dari instans ACR.

  2. Komponen menyimpan nama pengguna dan kata sandi sementara tersebut ke dalam Secret.

  3. Komponen mengaitkan Secret tersebut dengan akun layanan yang ditentukan dalam konfigurasi komponen.

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

  • Tidak perlu pengelolaan mandiri

  • Mendukung penarikan gambar lintas akun menggunakan RRSA

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.

    Penting
    • Komponen 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.

    Konfigurasikan konektivitas jaringan

    Sebelum menarik gambar, pastikan instans Container Registry Edisi Perusahaan dan kluster ACK dapat saling terhubung serta nama domain terkait dapat diselesaikan. Saat menarik gambar dari instans dalam akun yang sama, Anda dapat menggunakan salah satu metode berikut:

    • Kontrol akses VPC ACR: Jika instans Container Registry Edisi Perusahaan dan kluster ACK berada di wilayah yang sama, kluster ACK dapat mengakses instans ACR melalui VPC. Untuk informasi selengkapnya, lihat 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, sehingga memungkinkan kluster ACK mengakses instans Container Registry Edisi Perusahaan. Fitur koneksi peering VPC gratis jika VPC berada dalam wilayah yang sama, dan berbayar jika berada di wilayah berbeda. Untuk informasi selengkapnya, lihat Penagihan. Untuk menggunakan fitur ini, blok CIDR kedua VPC tidak boleh tumpang tindih. Jika blok CIDR tumpang tindih, Anda harus memodifikasi arsitektur jaringan yang ada.

      Prosedur koneksi peering VPC

      1. Konfigurasikan resolusi DNS internal untuk instans ACR

        Setelah Anda menghubungkan instans Container Registry Edisi Perusahaan ke VPC, Anda dapat mengakses instans Edisi Perusahaan dari VPC menggunakan Titik akhir internal. Setelah konfigurasi selesai, Anda perlu mendapatkan ID VPC dan alamat IP internal instans Container Registry Edisi Perusahaan.
      2. Dapatkan nama domain dan alamat IP terkait instans ACR

        Dapatkan nama domain dan alamat IP layanan autentikasi serta nama domain dan alamat IP Bucket OSS terkait yang digunakan untuk mengakses instans Container Registry Edisi Perusahaan.
      3. Buat koneksi peering VPC dan konfigurasikan tabel rute

        Anda perlu menambahkan entri rute yang mengarah ke VPC peer di masing-masing ujung koneksi peering VPC untuk mengaktifkan konektivitas privat antara VPC kluster ACK dan VPC instans Container Registry Edisi Perusahaan. Di ujung koneksi peering VPC kluster ACK, Anda juga perlu mengonfigurasi rute untuk alamat IP layanan autentikasi dan alamat IP Bucket OSS terkait.
      4. Selesaikan nama domain instans ACR untuk kluster ACK

        Anda dapat menggunakan metode seperti menambahkan catatan resolusi DNS internal atau menggunakan skrip data kustom untuk kelompok node untuk memodifikasi file /etc/hosts secara batch. Hal ini menyelesaikan nama domain instans ACR ke alamat IP internal instans ACR untuk kluster ACK, sehingga lalu lintas dialihkan ke VPC instans ACR melalui rute koneksi peering VPC.
    • Internet: Jika instans Container Registry Edisi Perusahaan dan kluster ACK memiliki akses Internet, Anda juga dapat mentransfer gambar melalui Internet. Untuk informasi selengkapnya, lihat Konfigurasikan kontrol akses publik untuk instans ACR dan Aktifkan akses Internet untuk kluster.

Gunakan komponen bebas rahasia terkelola

Langkah 1: Instal komponen

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

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih Operations > Add-ons.

  3. Di halaman Add-ons, pilih tab Security. Temukan kartu Aliyun-acr-credential-helper (Managed) dan klik Install.

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

    image

    Konfigurasi instans ACR terkait:

    AcrInstanceInfo

    Deskripsi

    InstanceId

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

    Penting

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

    Penting

    Parameter 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

    Konfigurasi komponen

    Item konfigurasi

    Deskripsi

    Enable RRSA

    Pilih ini untuk mengaktifkan RRSA. Ini tidak diperlukan untuk menarik gambar dalam akun yang sama. Untuk menarik gambar lintas akun, lihat Tarik gambar lintas akun.

    watchNamespace

    Namespace tempat Anda ingin menarik gambar tanpa rahasia. Nilai default adalah default. Nilai all berarti semua namespace. Untuk menentukan beberapa namespace, pisahkan dengan koma (,). Kami menyarankan agar Anda mengonfigurasi namespace bisnis Anda. Hindari mengonfigurasi all atau namespace yang terkait dengan komponen sistem untuk mencegah masalah saat menarik gambar komponen sistem.

    serviceAccount

    Akun layanan yang diterapkan oleh komponen bebas rahasia terkelola. Nilai default adalah Default. Nilai Default berlaku untuk akun layanan default di semua namespace yang ditentukan. Tanda bintang (*) berlaku untuk semua akun layanan di namespace yang ditentukan. Untuk mengonfigurasi beberapa akun layanan, pisahkan dengan koma (,).

    expiringThreshold

    Ambang batas kedaluwarsa untuk kredensial komponen. Nilai default adalah 15m. Kami menyarankan menggunakan 15 menit. Komponen secara otomatis memperpanjang kredensial 15 menit sebelum kedaluwarsa.

    notifyEmail

    Tidak perlu dikonfigurasi.

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: 80

Gunakan komponen bebas rahasia mandiri

Langkah 1: Instal komponen

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

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih Operations > Add-ons.

  3. Di halaman Add-ons, klik tab Security. Temukan aliyun-acr-credential-helper dan klik Install.

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

    Penting

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

    Pilih workerRole sebagai mode komponen

    Saat Anda memilih workerRole sebagai mode izin, peran RAM worker kluster harus memiliki izin berikut. Untuk informasi selengkapnya tentang cara memberikan izin, lihat Berikan izin kepada peran RAM.

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

    Pilih 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

  1. Di halaman Clusters, klik nama kluster yang ingin Anda ubah. Di panel navigasi sebelah kiri, pilih Configurations > ConfigMaps.

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

      Penting

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

      Penting

      Parameter 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 di instanceId dimasukkan. Untuk menentukan nama domain tertentu, pisahkan dengan koma (,).

    Contoh konfigurasi untuk penarikan lintas wilayah

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

    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

    Akun layanan yang digunakan oleh komponen aliyun-acr-credential-helper untuk menarik gambar.

kubectl

  1. Jalankan perintah berikut untuk mengedit acr-configuration seperti dijelaskan dalam tabel berikut.

    kubectl edit cm acr-configuration -n kube-system

    Kunci

    Deskripsi

    Nilai

    service-account

    Akun layanan yang digunakan oleh komponen aliyun-acr-credential-helper untuk menarik gambar.

    Nilai default: default.

    Catatan

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

    Catatan

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

    Catatan

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

    Catatan

    Kami 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: 80

Cara mengaktifkan fitur untuk menggunakan akun layanan segera setelah pembuatan

Penting

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: 10

Item konfigurasi

Deskripsi

enable

Menentukan apakah akan mengaktifkan fitur webhook.

  • true: Aktifkan.

  • false: Jangan aktifkan.

failure-policy

Kebijakan untuk menangani akun layanan saat fitur ini mengalami pengecualian.

  • Ignore: Mengabaikan pengecualian. Akun layanan dibuat secara normal, tetapi Secret untuk menarik gambar mungkin tidak dilampirkan.

  • Fail: Menghentikan pembuatan akun layanan jika terjadi pengecualian. Hal ini tidak direkomendasikan karena dapat menyebabkan deployment bisnis gagal.

Penting

Karena keterbatasan API Server kluster, jika timeout-seconds diatur ke 15, failure-policy diatur ke Fail, dan 10 akun layanan dibuat secara berkelanjutan per detik, pembuatan akun layanan mungkin gagal.

timeout-seconds

Batas waktu untuk satu permintaan pembuatan akun layanan untuk fitur ini. Jika batas waktu terlampaui, sistem merespons berdasarkan konfigurasi failure-policy. Nilai default adalah 10. Satuan adalah detik (s).

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.

Penting
  • Komponen bebas rahasia tidak dapat digunakan secara bersamaan dengan bidang imagePullSecrets yang dimasukkan secara manual.

  • Secret harus berada dalam namespace yang sama dengan beban kerja.

Contoh penggunaan imagePullSecrets

Jalankan perintah berikut dan ganti parameter dengan milik Anda sendiri untuk membuat Secret dari nama pengguna dan kata sandi.

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

Gunakan Secret dalam beban kerja:

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

Referensi