全部产品
Search
文档中心

:Penarikan gambar kontainer tanpa kredensial dengan komponen

更新时间:Jul 06, 2025

Anda dapat menggunakan komponen aliyun-acr-credential-helper untuk menarik gambar privat tanpa menggunakan kata sandi dari instance Container Registry Personal Edition dan Enterprise Edition ke cluster Kubernetes mandiri. Topik ini menjelaskan cara menggunakan aliyun-acr-credential-helper untuk menarik gambar privat tanpa menggunakan kata sandi dalam dua skenario.

Prasyarat

Cluster terdaftar telah dibuat dan cluster Kubernetes eksternal terhubung ke cluster terdaftar. Untuk informasi lebih lanjut, lihat Buat cluster terdaftar di konsol ACK.

Catatan penggunaan

Komponen aliyun-acr-credential-helper membaca konfigurasi dari acr-configuration ConfigMap di namespace kube-system dari cluster ACK dan kemudian menarik gambar privat. Setelah Anda mengonfigurasi komponen aliyun-acr-credential-helper, komponen tersebut menghasilkan Secret di cluster Anda dan mengaitkan Secret dengan akun layanan yang Anda tentukan di ConfigMap acr-configuration. Secara default, semua pod yang menggunakan akun layanan ini menggunakan Secret yang dihasilkan untuk menarik gambar tanpa menggunakan kata sandi.

Penting

Jika Anda membuat akun layanan untuk menerapkan aplikasi, seperti Helm chart, akun layanan memerlukan waktu untuk dikaitkan dengan secret yang dihasilkan oleh aliyun-acr-credential-helper. Kami merekomendasikan agar Anda menggunakan fitur webhook untuk menyuntikkan secret ke akun layanan sebelum Anda menarik gambar.

Tabel berikut menjelaskan batasan penggunaan komponen aliyun-acr-credential-helper untuk menarik gambar privat tanpa menggunakan kata sandi.

Parameter

Deskripsi

Pencermatan

  • Anda dapat menarik gambar privat dari instance Container Registry yang dimiliki oleh pengguna RAM saat ini.

  • Anda juga dapat menarik gambar privat lintas akun melalui otorisasi atau dengan menggunakan pasangan AccessKey dari pengguna RAM lainnya.

  • Anda dapat menarik gambar privat dalam skenario di mana Anda perlu menarik gambar dari instance Container Registry Enterprise Edition dan Container Registry Personal Edition.

Cluster dan versi Kubernetes

  • Versi Kubernetes cluster harus 1.11.2 atau lebih baru.

  • Anda dapat menarik gambar tanpa menggunakan kata sandi dari beberapa namespace cluster.

Peringatan

Item

Peringatan

imagePullSecrets

  • Jika Anda menentukan imagePullSecret dalam template sumber daya Kubernetes, seperti Deployment, komponen aliyun-acr-credential-helper menjadi tidak valid. Untuk menggunakan komponen, jangan tentukan imagePullSecret.

  • Komponen aliyun-acr-credential-helper memperbarui bidang imagePullSecrets dari akun layanan default di semua namespace dalam cluster ACK dengan menambahkan secret baru ke file konfigurasi yang ada. Akun layanan ini dimodifikasi secara otomatis berdasarkan perubahan pada bidang service-account di acr-configuration ConfigMap dalam namespace kube-system yang sesuai.

ServiceAccount

  • Jika sumber daya Kubernetes, seperti Deployment, menggunakan akun layanan kustom, Anda harus memodifikasi parameter service-account dalam file konfigurasi komponen aliyun-acr-credential-helper. Dengan cara ini, komponen diberi otorisasi untuk menarik gambar menggunakan akun layanan kustom.

  • Setelah Anda membuat akun layanan di cluster, periksa apakah nilai parameter imagePullSecrets berisi secret yang dimulai dengan acr-credential. Jika ya, akun layanan dikaitkan dengan secret, dan aplikasi yang menggunakan akun layanan dapat menarik gambar menggunakan secret. Aplikasi yang menggunakan akun layanan mungkin gagal menarik gambar segera setelah akun layanan dibuat karena kegagalan autentikasi.

Wilayah

Periksa apakah gambar privat yang ingin Anda tarik berada di wilayah cluster ACK Anda.

Secara default, Anda hanya dapat menarik gambar privat dari instance Container Registry yang berada di wilayah cluster ACK Anda. Jika Anda ingin menarik gambar lintas wilayah, lihat bagian "Skenario 2: Menarik gambar lintas wilayah" dari topik ini.

Format YAML

Saat Anda memodifikasi acr-configuration ConfigMap di namespace kube-system, pastikan Anda menggunakan indentasi yang sama seperti contoh dalam topik ini. Kami merekomendasikan agar Anda menempelkan konten YAML yang disediakan dalam topik ini ke editor, mengganti nilai yang sesuai, lalu menerapkan konfigurasi. Ini memastikan bahwa format ConfigMap valid.

Konfigurasikan komponen aliyun-acr-credential-helper di cluster mandiri

Step 1: Grant RAM permissions to aliyun-acr-credential-helper

Gunakan onectl

  1. Instal onectl di mesin lokal Anda. Untuk informasi lebih lanjut, lihat Gunakan onectl untuk mengelola cluster terdaftar.

  2. Jalankan perintah berikut untuk memberikan izin RAM kepada aliyun-acr-credential-helper:

    onectl ram-user grant --addon aliyun-acr-credential-helper

    Keluaran yang diharapkan:

    Ram policy ack-one-registered-cluster-policy-aliyun-acr-credential-helper granted to ram user ack-one-user-ce313528c3 successfully.

Gunakan konsol

Sebelum Anda dapat menginstal komponen di cluster eksternal, Anda harus menyetel pasangan AccessKey untuk memberikan cluster eksternal izin mengakses sumber daya Alibaba Cloud. Sebelum menyetel pasangan AccessKey, buat pengguna RAM dan berikan pengguna RAM izin untuk mengakses sumber daya Alibaba Cloud.

  1. Buat pengguna RAM.

  2. Buat kebijakan kustom. Contoh:

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "cr:GetAuthorizationToken",
                    "cr:ListInstanceEndpoint",
                    "cr:PullRepository"
                ],
                "Resource": [
                    "*"
                ],
                "Effect": "Allow"
            }
        ]
    }
  3. Lampirkan kebijakan kustom ke pengguna RAM.

  4. Buat pasangan AccessKey untuk pengguna RAM.

    Peringatan

    Kami merekomendasikan agar Anda konfigurasikan kebijakan berbasis pasangan AccessKey untuk kontrol akses jaringan, membatasi sumber panggilan AccessKey ke lingkungan jaringan tepercaya untuk meningkatkan keamanan AccessKey.

  5. Gunakan pasangan AccessKey untuk membuat Secret bernama alibaba-addon-secret di cluster terdaftar.

    Sistem secara otomatis menggunakan pasangan AccessKey untuk mengakses sumber daya cloud saat Anda menginstal komponen aliyun-acr-credential-helper.

    kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'
    Catatan

    Ganti <your access key id> dan <your access key secret> dengan pasangan AccessKey yang Anda peroleh di langkah sebelumnya.

Step 2: Update and configure aliyun-acr-credential-helper

Anda harus menginstal dan mengonfigurasi aliyun-acr-credential-helper sebelum dapat menggunakannya untuk menarik gambar tanpa menggunakan kata sandi.

Gunakan onectl

Jalankan perintah berikut untuk menginstal aliyun-acr-credential-helper:

onectl addon install aliyun-acr-credential-helper

Keluaran yang diharapkan:

Addon aliyun-acr-credential-helper, version **** installed.

Jika aliyun-acr-credential-helper sudah diinstal, pastikan aliyun-acr-credential-helper adalah versi terbaru. Anda dapat menjalankan perintah berikut untuk memperbarui aliyun-acr-credential-helper ke versi terbaru:

onectl addon upgrade aliyun-acr-credential-helper

Keluaran yang diharapkan:

Addon aliyun-acr-credential-helper upgraded to version ****.

Gunakan konsol

Jika Anda telah menginstal komponen aliyun-acr-credential-helper, pastikan komponen tersebut adalah versi terbaru. Jika tidak, perbarui komponen. Memperbarui komponen tidak memengaruhi bisnis Anda. Untuk informasi lebih lanjut, lihat Kelola komponen. Untuk informasi lebih lanjut tentang komponen aliyun-acr-credential-helper, lihat aliyun-acr-credential-helper.

Penting

Setelah komponen aliyun-acr-credential-helper diperbarui ke versi terbaru, Peran RAM yang digunakan komponen tersebut berubah. Komponen menyediakan parameter tokenMode untuk memungkinkan Anda menentukan Peran RAM yang digunakan komponen. Untuk informasi lebih lanjut tentang dampak perubahan Peran RAM yang digunakan komponen, lihat [Perubahan Produk] Cabut izin yang digunakan aliyun-acr-credential-helper.

Setelah komponen aliyun-acr-credential-helper diperbarui ke versi terbaru, Peran RAM yang digunakan komponen tersebut berubah. Komponen menyediakan parameter tokenMode untuk memungkinkan Anda menentukan Peran RAM yang digunakan komponen. Untuk informasi lebih lanjut tentang dampak perubahan Peran RAM yang digunakan komponen, lihat [Perubahan Produk] Cabut izin yang digunakan aliyun-acr-credential-helper.

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

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

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

  4. Di halaman Parameters, gunakan nilai default auto untuk parameter tokenMode dan klik OK.

    Setelah Anda memperbarui cluster ACK yang dikelola ke versi terbaru, komponen aliyun-acr-credential-helper menyediakan parameter tokenMode. Anda dapat memodifikasi parameter setelah komponen diinstal. Setelah komponen dimodifikasi, sistem membuat ulang pod untuk komponen tersebut. Cluster lama yang dijelaskan dalam tabel mengacu pada cluster yang dibuat sebelum 3 April 2023, dan cluster baru mengacu pada cluster yang dibuat pada atau setelah 3 April 2023. Tabel berikut menjelaskan nilai valid dari parameter tokenMode.

    tokenMode

    Deskripsi

    auto

    Menentukan secara otomatis apakah akan menggunakan mode managedRole, yang merupakan nilai default. Sistem menggunakan mode managedRole untuk cluster baru dan mode workerRole untuk cluster lama.

    managedRole

    Menggunakan mode managedRole.

    workerRole

    Menggunakan mode workerRole.

Skenario 1: Tarik gambar privat dari instance Container Registry Enterprise Edition dan Personal Edition

ACK memungkinkan Anda menarik gambar privat dari Container Registry Enterprise Edition dan Personal Edition secara bersamaan, dari Container Registry Enterprise Edition secara terpisah, atau dari Container Registry Personal Edition secara terpisah. Modifikasi acr-configuration ConfigMap berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan komponen. Contoh:

  • Enterprise Edition

    apiVersion:v1
    kind:ConfigMap
    metadata:
      name:acr-configuration
      namespace:kube-system
      selfLink:/api/v1/namespaces/kube-system/configmaps/acr-configuration
    data:
      acr-api-version:"2018-12-01"
      acr-registry-info:|-
        -instanceId:"cri-xxx" # Parameter default di konsol adalah #-instanceId. Anda harus menghapus tanda pagar (#) dan mengonfigurasi parameter ini.
        regionId:"cn-hangzhou"
      expiring-threshold:15m
      service-account:default
      watch-namespace:all
  • Personal Edition

    apiVersion:v1
    kind:ConfigMap
    metadata:
      name:acr-configuration
      namespace:kube-system
      selfLink:/api/v1/namespaces/kube-system/configmaps/acr-configuration
    data:
      acr-api-version:"2018-12-01"
      acr-registry-info:|-
        -instanceId:"" # Parameter default di konsol adalah #-instanceId. Anda harus menghapus tanda pagar (#) dan mempertahankan nilai default.
         regionId:"cn-hangzhou"
      expiring-threshold:15m
      service-account:default
      watch-namespace:all

Anda dapat mengonfigurasi ConfigMap acr-configuration dengan salah satu metode berikut:

Gunakan konsol

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

  2. Di halaman Clusters, klik nama cluster yang ingin Anda kelola dan pilih Configurations > ConfigMaps di panel navigasi kiri.

  3. Di bagian atas halaman ConfigMap, pilih kube-system dari daftar drop-down Namespace. Kemudian, temukan ConfigMap acr-configuration dan konfigurasikan parameternya.

    Jika ConfigMap acr-configuration tidak ada, buat ConfigMap. Untuk informasi lebih lanjut, lihat Buat ConfigMap. Untuk informasi tentang cara memperbarui ConfigMaps, lihat Kelola ConfigMaps.

    • Klik Edit di kolom Actions untuk mengonfigurasi kunci dan nilai untuk ConfigMap.

    • Klik Edit YAML di kolom Actions untuk mengonfigurasi kunci dan nilai untuk ConfigMap.

Gunakan kubectl

  1. Jalankan perintah berikut untuk masuk ke halaman pengeditan ConfigMap acr-configuration:

    kubectl edit cm acr-configuration -n kube-system
  2. Konfigurasikan parameter ConfigMap acr-configuration berdasarkan kebutuhan Anda.

Skenario 2: Tarik gambar lintas wilayah

Jika Anda ingin menarik gambar dari instance Container Registry ke cluster terdaftar dan instance Container Registry serta cluster terdaftar diterapkan di wilayah yang berbeda, Anda harus memodifikasi acr-configuration ConfigMap.

Sebagai contoh, jika Anda ingin menarik gambar dari instance Container Registry yang diterapkan di wilayah China (Beijing) dan China (Hangzhou) pada saat yang sama, modifikasi ConfigMap acr-configuration berdasarkan blok kode berikut. Untuk informasi lebih lanjut, lihat Konfigurasikan komponen.

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

Anda dapat mengonfigurasi ConfigMap acr-configuration dengan salah satu metode berikut:

Gunakan konsol

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

  2. Di halaman Clusters, klik nama cluster yang ingin Anda kelola dan pilih Configurations > ConfigMaps di panel navigasi kiri.

  3. Di bagian atas halaman ConfigMap, pilih kube-system dari daftar drop-down Namespace. Kemudian, temukan ConfigMap acr-configuration dan konfigurasikan parameternya.

    Jika ConfigMap acr-configuration tidak ada, buat ConfigMap. Untuk informasi lebih lanjut, lihat Buat ConfigMap. Untuk informasi tentang cara memperbarui ConfigMaps, lihat Kelola ConfigMaps.

    • Klik Edit di kolom Actions untuk mengonfigurasi kunci dan nilai untuk ConfigMap.

    • Klik Edit YAML di kolom Actions untuk mengonfigurasi kunci dan nilai untuk ConfigMap.

Gunakan kubectl

  1. Jalankan perintah berikut untuk masuk ke halaman pengeditan ConfigMap acr-configuration:

    kubectl edit cm acr-configuration -n kube-system
  2. Konfigurasikan parameter ConfigMap acr-configuration berdasarkan kebutuhan Anda.