Mengonfigurasi kredensial yang disiapkan untuk cluster pengguna

Dokumen ini menunjukkan cara mengonfigurasi kredensial yang disiapkan untuk cluster pengguna di Google Distributed Cloud.

Dengan kredensial yang disiapkan, Anda dapat menyimpan kredensial untuk cluster pengguna di Rahasia di cluster admin Anda. Hal ini memberikan elemen keamanan, karena Anda tidak perlu menyimpan sandi dan kunci akun layanan di admin Anda workstation saat Anda membuat klaster pengguna Anda.

Anda harus menyiapkan Secret di cluster admin terlebih dahulu. Kemudian saat Anda membuat cluster pengguna, Anda dapat menentukan bahwa kredensial tertentu harus diambil dari Secret yang telah disiapkan di cluster admin. Anda juga dapat menggunakan Rahasia saat Anda merotasi kredensial di cluster pengguna.

Sebelum memulai

Membuat cluster admin jika Anda belum memilikinya.

Ringkasan prosedur

  1. Isi file konfigurasi Secrets.

  2. Di cluster admin Anda, buat grup Secret. Setiap grup Secret berada di namespace Kubernetes sendiri.

  3. Buat cluster pengguna. Dalam file konfigurasi cluster pengguna, tunjukkan bahwa Anda ingin kredensial diambil dari Secret dalam namespace tertentu di cluster admin.

  4. Buat grup Secret tambahan dan versi Secret tambahan sebagai diperlukan.

  5. Perbarui kredensial untuk cluster pengguna yang ada sesuai kebutuhan.

  6. Buat cluster pengguna tambahan sesuai keinginan. Di setiap cluster pengguna file konfigurasi rahasia, tentukan namespace Secrets. Anda juga dapat menentukan versi Secret mana yang ingin Anda gunakan untuk kredensial tertentu.

Isi file konfigurasi secret Anda

Buat template untuk file konfigurasi Secrets:

gkectl create-config secrets

Perintah sebelumnya menghasilkan file bernama secrets.yaml. Anda dapat mengubah nama dan lokasi file ini jika Anda mau.

Pelajari file konfigurasi dengan membaca File konfigurasi secret dokumen. Anda mungkin ingin tetap membuka dokumen ini di tab atau jendela terpisah.

Di file konfigurasi Secret Anda, isi nilai yang relevan untuk situasi Anda. Anda harus mengisi nilai untuk namespace yang dimulai dengan gke-onprem-secrets-.

Berikut adalah contoh file konfigurasi Secret yang memiliki satu grup Secret. Tujuan memiliki nilai untuk kredensial vCenter dan empat kunci akun layanan:

apiVersion: v1
kind: ClusterSecrets
secretGroups:
- namespace: "gke-onprem-secrets-user-cluster-1"
  secrets
    vCenter:
      username: "my-vcenter-account"
      password: "U$icUKEW#INE"
    componentAccessServiceAccount:
      serviceAccountKeyPath: "my-key-folder/component-access-key.json"
    registerServiceAccount:
      serviceAccountKeyPath: "my-key-folder/connect-register-key.json"
    stackdriverServiceAccount:
      serviceAccountKeyPath: "my-key-folder/log-mon-key.json"
    cloudAuditLoggingServiceAccount:
      serviceAccountKeyPath: "my-key-folder/audit-log-key.json"

Membuat Secret yang sudah disiapkan

Buat Secret yang sudah disiapkan di cluster admin:

gkectl prepare secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG --secret-config SECRETS_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur kubeconfig cluster admin file

  • SECRETS_CONFIG: jalur file konfigurasi Secret Anda

Lihat Secret Anda yang telah disiapkan

Buat daftar Secret yang telah disiapkan di cluster admin:

gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Contoh output:

The following secrets have been found:
- namespace: gke-onprem-secrets-user-cluster-1
  - secrets with name prefix: component-access-sa-creds
    name: component-access-sa-creds.1, version 1, age: 58s
  - secrets with name prefix: cloud-audit-logging-service-account-creds
    name: cloud-audit-logging-service-account-creds.1, version: 1, age: 58s
  - secrets with name prefix: register-service-account-creds
    name: register-service-account-creds.1, version: 1, age: 58s
  - secrets with name prefix: stackdriver-service-account-creds
    name: stackdriver-service-account-creds.1, version: 1, age: 58s
  - secrets with name prefix: vsphere-creds
    name: vsphere-creds.1, version: 1, age: 58s

Anda juga dapat menjalankan kubectl get secrets untuk membuat daftar Secret dalam namespace. Misalnya:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets --namespace gke-onprem-secrets-user-cluster-1

Contoh output:

component-access-sa-creds ...
cloud-audit-logging-service-account-creds ...
register-service-account-creds.1 ...
stackdriver-service-account-creds.1 ...
vsphere-creds.1 ...

Pada {i>output<i} sebelumnya, Anda dapat melihat bahwa setiap nama Secret memiliki ekstensi yang menunjukkan versi dari Secret tersebut. Dalam contoh ini, semua Secret memiliki versi 1.

Membuat cluster pengguna

Ikuti petunjuk di Buat cluster pengguna.

Saat mengisi file konfigurasi cluster pengguna, masukkan nilai untuk preparedSecrets.namespace. Nilai ini harus cocok dengan namespace yang yang ditentukan sebelumnya dalam file konfigurasi Secrets.

Contoh:

preparedSecrets:
  namespace: "gke-onprem-secrets-user-cluster-1"

Di file konfigurasi cluster pengguna Anda, jangan tetapkan nilai untuk kolom. Kolom ini tidak diperlukan, karena Google Distributed Cloud mendapatkan kredensial dan kunci dari Secret yang telah Anda siapkan.

  • vCenter.credentials.fileRef.path
  • componentAccessServiceAccountKeyPath
  • loadBalancer.f5BigIP.credentials.fileRef.path
  • gkeConnect.registerServiceAccountKeyPath
  • stackdriver.serviceAccountKeyPath
  • usageMetering.bigQueryServiceAccountKeyPath
  • cloudAuditLogging.serviceAccountKeyPath
  • privateRegistry.credentials.fileRef.path

Di file konfigurasi cluster pengguna Anda, tentukan versi untuk cluster yang telah disiapkan Rahasia yang ingin Anda gunakan. Berikut adalah contoh yang menentukan versi 1 untuk masing-masing dari lima Secret:

vCenter:
  credentials:
    secretRef:
      version "1"
...
componentAccessServiceAccountKey:
  secretRef:
    version: "1"
...
gkeConnect:
  registerServiceAccountKey:
    secretRef:
      version: "1"
...
stackdriver:
  serviceAccountKey:
    secretRef:
      version: "1"
...
cloudAuditLogging:
  serviceAccountKey:
    secretRef:
      version: "1"

Nilai untuk version harus berupa string bilangan bulat atau string "latest". Jika Anda tidak menentukan nilai untuk version, versi terbaru akan digunakan.

Selesaikan pembuatan cluster pengguna seperti yang dijelaskan di Buat cluster pengguna.

Membuat Secret tambahan yang disiapkan

Bagian ini menunjukkan cara membuat versi 2 dari beberapa Rahasia dalam namespace.

Buat file konfigurasi Secret baru bernama secrets-2.yaml. Tentukan namespace yang ada, dan memberikan kredensial untuk Secret yang dipilih.

Contoh:

apiVersion: v1
kind: ClusterSecrets
secretGroups:
- namespace: "gke-onprem-secrets-user-cluster-1"
  secrets:
    stackdriverServiceAccount:
      serviceAccountKeyPath: "log-mon-sa-2.json"
    cloudAuditLoggingServiceAccount:
      serviceAccountKeyPath: "audit-log-sa-2.json"

Contoh sebelumnya memberikan jalur kunci untuk Secret berikut dalam Namespace gke-onprem-secrets-user-cluster-1.

  • Versi 2 dari Secret stackdriver-service-account-creds
  • Versi 2 dari Secret cloud-audit-logging-service-account-creds

Buat Secret baru:

gkectl prepare secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG --secret-config secrets-2.yaml

Buat daftar Secret yang telah disiapkan di cluster admin:

gkectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG list secrets

Contoh output:

The following secrets have been found:
- namespace: gke-onprem-secrets-user-cluster-1
  - secrets with name prefix: component-access-sa-creds
    name: component-access-sa-creds.1, version 1, age: 11h
  - secrets with name prefix: cloud-audit-logging-service-account-creds
    name: cloud-audit-logging-service-account-creds.1, version: 1, age: 11h
    name: cloud-audit-logging-service-account-creds.2, version: 2, age: 33m
  - secrets with name prefix: register-service-account-creds
    name: register-service-account-creds.1, version: 1, age: 11h
  - secrets with name prefix: stackdriver-service-account-creds
    name: stackdriver-service-account-creds.1, version: 1, age: 11h
    name: stackdriver-service-account-creds.2, version: 2, age: 33m
  - secrets with name prefix: vsphere-creds
    name: vsphere-creds.1, version: 1, age: 11h

Pada {i>output<i} sebelumnya, Anda bisa melihat bahwa ada dua versi stackdriver-service-account-creds Secret dan dua versi Rahasia cloud-audit-logging-service-account-creds.

Merotasi kredensial untuk cluster pengguna

Bagian ini menunjukkan cara merotasi kredensial yang dipilih untuk pengguna yang ada .

Sebelum merotasi kredensial, periksa versi Secret saat ini yang digunakan dalam :

gkectl list secrets cluster --cluster-name USER_CLUSTER_NAME  kubeconfig ADMIN_CLUSTER_KUBECONFIG

Contoh output:

The following prepared secrets have been used for cluster "user-cluster-1":
- namespace: gke-onprem-secrets-user-cluster-1
  secret: vsphere-creds.1, version: 1
  secret: f5-creds.1, version: 1
  secret: component-access-sa-creds.1, version 1
  secret: register-service-account-creds.1, version: 1
  secret: stackdriver-service-account-creds.1, version: 1
  secret: cloud-audit-logging-service-account-creds.1, version: 1

Salin file konfigurasi cluster pengguna Anda ke file bernama user-cluster-update.yaml.

Di user-cluster-update.yaml, tambahkan bagian serviceAccountKey. Misalnya, contoh berikut memiliki bagian serviceAccountKey di bawah stackdriver dan cloudAuditLogging:

stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  serviceAccountKey:
    secretRef:
      version: "2"
cloudAuditLogging:
  projectID: "my-project-123"
  clusterLocation: "us-central-1"
  serviceAccountKey:
    secretRef:
      version: "latest"

Contoh sebelumnya menetapkan bahwa ketika cluster pengguna diperbarui, gunakan:

  • Versi 2 dari Secret stackdriver-service-account-creds

  • Versi terbaru Rahasia cloud-audit-logging-service-account-creds. Dalam contoh ini, itu adalah versi 2.

Perbarui kredensial untuk cluster pengguna:

gkectl update credentials stackdriver --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config user-cluster-2.yaml

gkectl update credentials cloudauditlogging --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config user-cluster-2.yaml

Sekarang cluster pengguna menggunakan Secret yang telah disiapkan berikut:

  • Versi 1 dari vsphere-creds
  • Versi 1 dari component-access-sa-creds
  • Versi 1 dari register-service-account-creds
  • Versi 2 dari stackdriver-service-account-creds
  • Versi 2 dari cloud-audit-logging-service-account-creds

Membuat Secret dan cluster pengguna tambahan

Jika Anda berencana untuk membuat klaster pengguna tambahan, pikirkan tentang bagaimana Anda ingin mengatur Secret yang telah Anda siapkan. Anda mungkin ingin membuat namespace terpisah di cluster admin Anda untuk setiap cluster pengguna. Atau Anda mungkin ingin membagikan menyiapkan namespace Rahasia untuk beberapa atau semua cluster pengguna.

Misalnya, Alice, Bob, dan Carol masing-masing akan memiliki sebuah cluster pengguna. Anda dapat membuat tiga grup Secret seperti yang ditunjukkan dalam contoh ini:

apiVersion: v1
kind: ClusterSecrets
secretGroups:
- namespace: "gke-onprem-secrets-alice"
  secrets:
    vCenter:
      username: "alice"
      password: "zC7r^URDPq2t"
    componentAccessServiceAccount:
      serviceAccountKeyPath: "component-access-sa-a.json"
    registerServiceAccount:
      serviceAccountKeyPath: "register-sa-a.json"
    stackdriverServiceAccount:
      serviceAccountKeyPath: "log-mon-sa-a.json"
    cloudAuditLoggingServiceAccount:
      serviceAccountKeyPath: "audit-log-sa-a.json"
- namespace: "gke-onprem-secrets-bob"
  secrets:
    vCenter:
      username: "bob"
      password: "zC8r^URDPq2t"
    componentAccessServiceAccount:
      serviceAccountKeyPath: "component-access-sa-b.json"
    registerServiceAccount:
      serviceAccountKeyPath: "register-sa-b.json"
    stackdriverServiceAccount:
      serviceAccountKeyPath: "log-mon-sa-b.json"
    cloudAuditLoggingServiceAccount:
      serviceAccountKeyPath: "audit-log-sa-b.json"
- namespace: "gke-onprem-secrets-carol"
  secrets:
    vCenter:
      username: "carol"
      password: "zC9r^URDPq2t"
    componentAccessServiceAccount:
      serviceAccountKeyPath: "component-access-sa-c.json"
    registerServiceAccount:
      serviceAccountKeyPath: "register-sa-c.json"
    stackdriverServiceAccount:
      serviceAccountKeyPath: "log-mon-sa-c.json"
    cloudAuditLoggingServiceAccount:
      serviceAccountKeyPath: "audit-log-sa-c.json"

Seiring waktu Anda dapat membuat versi Secret tambahan di setiap Secret ras.

Dalam file konfigurasi cluster pengguna, berikan nilai untuk serviceAccountKey.secretRef.version untuk menentukan versi Secret Anda yang ingin Anda gunakan. Anda dapat menetapkan nilai ke "latest", string kosong, atau string bilangan bulat.

Misalnya, semua Secret Anda memiliki versi 1, 2, dan 3. Dan anggaplah ini adalah bagian dari file konfigurasi cluster pengguna untuk Alice.

apiVersion: v1
kind: UserCluster
name: "user-cluster-alice"
preparedSecrets:
  namespace: "gke-onprem-secrets-alice"
...
vCenter:
  credentials:
gkeConnect:
  projectID: "project-a"
  serviceAccountKey:
    secretRef:
      version: "2"
stackdriver:
  projectID: "project-a"
  clusterLocation: "us-central1"
  serviceAccountKey:
    secretRef:
      version: "latest"
cloudAuditLogging:
  projectID: "project-a"
  clusterLocation: "us-central-1"
  serviceAccountKey:
    secretRef:
      version: ""

Dalam contoh sebelumnya, kita dapat melihat:

  • Tidak ada secretRef yang ditentukan untuk vCenter, sehingga cluster akan menggunakan versi terbaru dari Secret vsphere-creds dalam gke-onprem-secrets-alice namespace.

  • Cluster ini akan menggunakan Secret register-service-account-creds versi 2 dalam namespace gke-onprem-secrets-alice.

  • Cluster tersebut akan menggunakan versi terbaru stackdriver-service-account-creds Rahasia di gke-onprem-secrets-alice namespace. Dalam contoh ini, itu adalah versi 3.

  • Versi untuk cloudAuditLogging adalah string kosong, sehingga cluster akan gunakan cloud-audit-logging-service-account-creds versi terbaru Rahasia dalam namespace gke-onprem-secrets-alice. Dalam contoh ini, versi 3.

  • Tidak ada secretRef.version yang ditentukan untuk akun layanan akses komponen, sehingga cluster akan menggunakan versi terbaru.

Hapus Secret yang sudah disiapkan

Untuk menampilkan daftar semua Secret yang disiapkan dan namespace-nya:

gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Jika namespace Rahasia yang telah disiapkan tidak digunakan oleh cluster pengguna mana pun, Anda dapat menghapus namespace.

Untuk menghapus namespace Secret yang sudah disiapkan dan semua Secret di dalamnya:

gkectl delete secret –namespace PREPARED_SECRET_NAMESPACE \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Jika Secret yang disiapkan individu tidak digunakan oleh cluster pengguna mana pun, Anda dapat menghapus Rahasia.

Untuk menghapus Secret yang disiapkan individu:

gkectl delete secret –namespace PREPARED_SECRET_NAMESPACE \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --secret-name SECRET