Mengonfigurasi node untuk mengautentikasi ke registry pribadi

Anda dapat mengonfigurasi cluster Google Distributed Cloud sehingga node worker-nya dapat menggunakan registry pribadi. Registry pribadi tingkat node ditujukan untuk digunakan dengan beban kerja Anda guna memberi Anda kontrol yang lebih besar atas penarikan image dan keamanan terkaitnya. Saat Anda mengonfigurasi cluster dengan registry pribadi seperti yang dijelaskan dalam dokumen ini, Google Distributed Cloud akan mengupdate konfigurasi containerd sebagaimana mestinya. Setelah cluster Anda dikonfigurasi, semua Pod di node yang memenuhi syarat dapat menggunakan registry tanpa harus menentukan imagePullSecrets dalam spesifikasi Pod.

Fitur ini dapat diaktifkan atau dinonaktifkan kapan saja dalam siklus proses cluster.

Daftar berikut menunjukkan tahap peluncuran fitur ini per versi:

  • 1.30 dan yang lebih baru: GA
  • 1.29: Pratinjau

Prasyarat

1.30 dan yang lebih baru

Untuk menggunakan fitur GA ini, cluster Anda harus memenuhi persyaratan berikut:

  • Versi cluster harus 1.30 atau yang lebih baru.
  • Versi node pool harus 1.29 atau yang lebih baru (cluster 1.30 dapat memiliki node pool di versi 1.28, tetapi fitur ini hanya berfungsi untuk node pool di versi 1.29 atau yang lebih baru).
  • Fitur ini ditujukan untuk cluster pengguna dan cluster yang dikelola sendiri (hybrid dan mandiri) dengan pool node pekerja, seperti yang ditunjukkan dalam tabel berikut:

    Model deployment Jenis cluster yang didukung
    Deployment cluster admin dan pengguna

    Cluster admin

    Grup pengguna 1

    Grup pengguna 2

    Deployment cluster hybrid

    Cluster hybrid

    Grup pengguna 1

    Grup pengguna 2

    Deployment cluster mandiri

    Cluster mandiri

1,29

Untuk menggunakan fitur Pratinjau ini, cluster Anda harus memenuhi persyaratan berikut:

  • Versi cluster harus 1.29.
  • Versi Node pool harus 1.29 (tidak semua node pool harus menggunakan versi 1.29, tetapi fitur ini hanya berfungsi untuk node pool dengan versi 1.29).
  • Cluster harus memiliki anotasi fitur pratinjau preview.baremetal.cluster.gke.io/private-registry: "enable".
  • Fitur ini ditujukan untuk cluster pengguna dan cluster yang dikelola sendiri (hybrid dan mandiri) dengan pool node pekerja, seperti yang ditunjukkan dalam tabel berikut:

    Model deployment Jenis cluster yang didukung
    Deployment cluster admin dan pengguna

    Cluster admin

    Grup pengguna 1

    Grup pengguna 2

    Deployment cluster hybrid

    Cluster hybrid

    Grup pengguna 1

    Grup pengguna 2

    Deployment cluster mandiri

    Cluster mandiri

Mengonfigurasi cluster yang dikelola sendiri untuk registry pribadi

Untuk mengonfigurasi cluster mandiri atau hybrid agar menggunakan registry pribadi tingkat node:

  1. Edit file konfigurasi cluster untuk menambahkan blok privateRegistries di bagian kredensial:

    ---
    gcrKeyPath: baremetal/gcr.json
    sshPrivateKeyPath: .ssh/id_rsa
    ...
    privateRegistries:
      - host: REGISTRY_HOST
        caCertPath: CA_CERT_PATH
        pullCredentialConfigPath: CREDENTIALS_FILE_PATH
    ...
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-hybrid-basic
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: hybrid-basic
      namespace: cluster-hybrid-basic
      annotations:
        preview.baremetal.cluster.gke.io/private-registry: "enable" # Version 1.29 clusters only
        ...
    spec:
      type: hybrid
      ...
    

    Ganti kode berikut:

    • REGISTRY_HOST: nama domain atau alamat IP registry pribadi dan port. Contoh: 10.200.0.2:5007.

    • CA_CERT_PATH: jalur file sertifikat CA (CA root server). Contoh: /root/cert.pem. Jika registry pribadi Anda tidak memerlukan sertifikat TLS pribadi, Anda dapat menghilangkan kolom ini.

    • CREDENTIALS_FILE_PATH: jalur file konfigurasi Docker, config.json (misalnya, $HOME/.docker/config.json). Untuk mengautentikasi Docker agar dapat mengakses registry pribadi Anda, config.json harus berisi versi kredensial Anda yang dienkode base64 di bagian auths file. Anda dapat mengikuti petunjuk di Kunci akun layanan dalam dokumentasi Artifact Registry untuk mengisi bagian auths dengan benar. Untuk melindungi data sensitif, Anda dapat menggunakan chown dan chmod untuk membatasi akses ke file konfigurasi Docker jika berisi kredensial.

      Jika server registry pribadi Anda tidak memerlukan kredensial untuk autentikasi, Anda dapat menghapus kolom pullCredentialConfigPath.

  2. Terapkan perubahan pada cluster Anda:

    bmctl update cluster -c CLUSTER_NAME --kubeconfig=CLUSTER_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang ingin Anda perbarui.

    • CLUSTER_KUBECONFIG: jalur file kubeconfig cluster yang dikelola sendiri (hibrida atau mandiri).

Mengonfigurasi cluster pengguna untuk registry pribadi

Dengan cluster pengguna, konfigurasi registry pribadi ditentukan dalam spesifikasi resource cluster pengguna, yang berada di cluster admin. Selain itu, Anda perlu menyimpan kredensial registry pribadi di Secret, yang juga berada di cluster admin:

  1. Buat Secret Kubernetes jenis kubernetes.io/dockerconfigjson untuk kredensial registry:

    Jika Anda ingin mencakup Secret ke namespace tertentu, tambahkan flag --namespace ke perintah berikut untuk menentukan nama namespace. Jika Secret tidak berada di namespace yang sama dengan cluster, tambahkan anotasi baremetal.cluster.gke.io/mark-source: "true", seperti yang ditunjukkan dalam contoh di akhir langkah ini.

    kubectl create secret docker-registry CREDS_SECRET_NAME \
        --from-file=.dockerconfigjson=CREDENTIALS_FILE_PATH \
        --kubeconfig=ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CREDS_SECRET_NAME: nama untuk Secret Anda.

    • CREDENTIALS_FILE_PATH: jalur file konfigurasi Docker, config.json (misalnya, $HOME/.docker/config.json). Untuk mengautentikasi Docker agar dapat mengakses registry pribadi Anda, config.json harus berisi versi kredensial Anda yang dienkode base64 di bagian auths file. Anda dapat mengikuti petunjuk di Kunci akun layanan dalam dokumentasi Artifact Registry untuk mengisi bagian auths dengan benar. Untuk melindungi data sensitif, Anda dapat menggunakan chown dan chmod untuk membatasi akses ke file konfigurasi Docker jika berisi kredensial.

      Jika server registry pribadi Anda tidak memerlukan kredensial untuk autentikasi, Anda dapat menghapus kolom pullCredentialConfigPath.

    Secret Anda akan terlihat seperti contoh berikut:

    apiVersion: v1
    data:
      .dockerconfigjson: ewoJImF1dGhzIjogewoJ...clpYSXdNak14IgoJCX0KCX0KfQ==
    kind: Secret
    metadata:
      creationTimestamp: "2024-04-28T22:06:06Z"
      name: private-registry-secret
      namespace: default
      resourceVersion: "5055821"
      ...
      annotations:
        ...
        baremetal.cluster.gke.io/mark-source: "true"
    type: kubernetes.io/dockerconfigjson
    
  2. Jika berlaku, simpan sertifikat CA untuk registry di Secret.

    Secret akan terlihat mirip dengan berikut ini:

    apiVersion: v1
    kind: Secret
    metadata:
      annotations:
        baremetal.cluster.gke.io/mark-source: "true"
      name: ca-9dd74fd308bac6df562c7a7b220590b5
      namespace: some-namespace
    type: Opaque
    data:
      ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2RENDQXFTZ0F3SUJBZ0lVQi
      3UGxjUzVFVk8vS0xuYjZiMHRhRFVleXJvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2ZqRUxNQWtHQ
      ...
      QnpPTkxTRFZJVk5LMm9YV1JvNEpJY0ZoNFZ4MWRMRHpqMldEaHhrUEljWEhLdGR3dk5iS2tocU
      LUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
      ```
    
  3. Edit file konfigurasi cluster pengguna untuk mengaktifkan dan mengonfigurasi registry pribadi:

    1. Khusus untuk cluster versi 1.29, tambahkan anotasi fitur Preview preview.baremetal.cluster.gke.io/private-registry: "enable" untuk mengaktifkan fitur. Untuk cluster versi 1.30 dan yang lebih baru, fitur registry pribadi diaktifkan secara default.

      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
        resourceVersion: "766027"
        annotations:
          ...
          preview.baremetal.cluster.gke.io/private-registry: "enable"
      ...
      
    2. Di bagian nodeConfig file konfigurasi cluster pengguna, tambahkan blok privateRegistries:

      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
      ...
      spec:
        bypassPreflightCheck: false
      ...
        nodeConfig:
          containerRuntime: containerd
          podDensity:
            maxPodsPerNode: 250
          privateRegistries:
          - caCertSecretRef:
              name: CA_CERT_SECRET_NAME
              namespace: CA_CERT_SECRET_NAMESPACE
            host: REGISTRY_HOST
            pullCredentialSecretRef:
              name: CREDS_SECRET_NAME
              namespace: CREDS_SECRET_NAMESPACE
      

    Ganti kode berikut:

    • CA_CERT_SECRET_NAME: nama Secret yang Anda buat untuk menyimpan sertifikat CA. Jika Anda tidak membuat secret ini, hapus blok caCertSecretRef.

    • CA_CERT_SECRET_NAMESPACE: nama namespace untuk Secret sertifikat CA, jika Anda membuatnya.

    • REGISTRY_HOST: nama domain atau alamat IP registry pribadi dan port. Contoh: 10.200.0.2:5007.

    • CREDS_SECRET_NAME: nama Secret jenis kubernetes.io/dockerconfigjson untuk kredensial registri.

    • CREDS_SECRET_NAMESPACE: nama namespace untuk Secret untuk kredensial registry.

  4. Terapkan perubahan pada cluster Anda:

    bmctl update cluster -c USER_CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • USER_CLUSTER_NAME: nama cluster yang Anda perbarui.

    • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin.