Configura le credenziali preparate per i cluster utente

Questo documento mostra come configurare le credenziali preparate per i cluster utente in Google Distributed Cloud.

Con le credenziali preparate, puoi archiviare le credenziali per i tuoi cluster utente in Secret nel tuo cluster di amministrazione. Questo fornisce un elemento di sicurezza, non è necessario mantenere le password e le chiavi degli account di servizio nell'amministratore e la workstation durante la creazione dei cluster utente.

I secret vengono preparati in anticipo nel cluster di amministrazione. Poi, mentre crei cluster utente, puoi specificare l'utilizzo di determinate credenziali dai secret preparati nel cluster di amministrazione. Puoi anche utilizzare lo strumento Secret quando ruoti le credenziali in un cluster utente.

Prima di iniziare

Crea un cluster di amministrazione se non ne hai già uno.

Panoramica della procedura

  1. Compila un file di configurazione dei secret.

  2. Nel cluster di amministrazione, crea gruppi di secret. Ogni gruppo Secret fa parte del suo del tuo spazio dei nomi Kubernetes.

  3. Creare un cluster utente. Nel file di configurazione del cluster utente, indica Le credenziali devono essere prese dai secret in uno spazio dei nomi particolare il cluster di amministrazione.

  4. Crea gruppi di secret aggiuntivi e versioni aggiuntive dei tuoi secret come necessaria.

  5. Aggiorna le credenziali per un cluster utente esistente in base alle esigenze.

  6. Crea altri cluster utente come preferisci. In ogni cluster utente di configurazione del deployment, specifica uno spazio dei nomi Secrets. Puoi anche specificare la versione di un secret che vuoi utilizzare per una determinata credenziale.

Compila il file di configurazione dei secret

Genera un modello per un file di configurazione dei secret:

gkectl create-config secrets

Il comando precedente genera un file denominato secrets.yaml. Puoi modificare nome e percorso di questo file, se vuoi.

Per acquisire familiarità con il file di configurazione, leggi l'articolo File di configurazione dei secret documento. Ti consigliamo di tenere questo documento aperto in un'altra scheda o finestra.

Nel file di configurazione dei secret, inserisci i valori pertinenti per la tua situazione. Devi inserire un valore per namespace che inizi con gke-onprem-secrets-.

Ecco un esempio di file di configurazione di secret contenente un gruppo di secret. La gruppo contiene valori per le credenziali vCenter e quattro chiavi dell'account di servizio:

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"

Crea Secret preparati

Crea i secret preparati nel cluster di amministrazione:

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

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso di kubeconfig del cluster di amministrazione file

  • SECRETS_CONFIG: il percorso del file di configurazione dei secret

Visualizza i Secret che hai preparato

Elenca i secret preparati nel cluster di amministrazione:

gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Output di esempio:

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

Puoi anche eseguire kubectl get secrets per elencare i secret in uno spazio dei nomi. Per esempio:

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

Output di esempio:

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

Nell'output precedente, puoi vedere che ogni nome secret ha un'estensione che indica la versione del secret. In questo esempio, tutti i secret hanno un all'ultima versione 1.

Creazione di un cluster utente

Segui le istruzioni in Crea un cluster utente.

Quando compili il file di configurazione del cluster utente, inserisci un valore per preparedSecrets.namespace. Questo valore deve corrispondere a uno spazio dei nomi che specificato in precedenza in un file di configurazione dei secret.

Esempio:

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

Nel file di configurazione del cluster utente, non specificare valori per i seguenti campi. Questi campi non sono necessari perché Google Distributed Cloud ottiene e le credenziali e le chiavi dei tuoi Secret preparati.

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

Nel file di configurazione del cluster utente, specifica le versioni I secret che intendi utilizzare. Ecco un esempio che specifica la versione 1 per ognuno dei cinque 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"

Il valore di version deve essere una stringa con numeri interi o la stringa "più recente". Se non si specifica un valore per version, viene utilizzata la versione più recente.

Completa la creazione del cluster utente come descritto in Crea un cluster utente.

Crea altri secret preparati

Questa sezione mostra come creare la versione 2 di alcuni secret in una nello spazio dei nomi.

Crea un nuovo file di configurazione dei secret denominato secrets-2.yaml. Specifica un valore uno spazio dei nomi esistente e fornisci le credenziali per i secret selezionati.

Esempio:

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"

L'esempio precedente fornisce i percorsi delle chiavi per i seguenti secret nel gke-onprem-secrets-user-cluster-1.

  • Versione 2 del secret stackdriver-service-account-creds
  • Versione 2 del secret cloud-audit-logging-service-account-creds

Crea i nuovi secret:

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

Elenca i secret preparati nel cluster di amministrazione:

gkectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG list secrets

Output di esempio:

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

Nell'output precedente, puoi vedere che esistono due versioni stackdriver-service-account-creds Secret e due versioni cloud-audit-logging-service-account-creds Segreto.

Ruota le credenziali per un cluster utente

Questa sezione mostra come ruotare le credenziali selezionate per un utente esistente in un cluster Kubernetes.

Prima di ruotare le credenziali, controlla le versioni del secret correnti utilizzate nella cluster:

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

Output di esempio:

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

Copia il file di configurazione del cluster utente in un file denominato user-cluster-update.yaml.

In user-cluster-update.yaml, aggiungi serviceAccountKey sezioni. Ad esempio, l'esempio seguente ha serviceAccountKey sezioni in stackdriver e 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"

L'esempio precedente specifica che quando il cluster utente viene aggiornato, usa:

  • Versione 2 del secret stackdriver-service-account-creds

  • La versione più recente del secret cloud-audit-logging-service-account-creds. In questo esempio, si tratta della versione 2.

Aggiorna le credenziali per il cluster utente:

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

Ora il cluster utente utilizza i seguenti secret preparati:

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

Crea ulteriori secret e cluster utente

Se prevedi di creare cluster utente aggiuntivi, pensa a come vuoi per organizzare i tuoi Secret che hai preparato. Potresti voler creare uno spazio dei nomi separato nel tuo cluster di amministrazione per ogni cluster utente. Oppure potresti voler condividere spazio dei nomi del secret preparato per alcuni o tutti i cluster utente.

Ad esempio, supponiamo che Alice, Bob e Carla abbiano ciascuna un cluster utente. Tu potresti creare tre gruppi di secret, come mostrato in questo esempio:

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"

Nel tempo potresti creare versioni aggiuntive dei secret in ogni secret. gruppo.

Nei file di configurazione del cluster utente, fornisci i valori per serviceAccountKey.secretRef.version per specificare le versioni dei tuoi secret che vuoi utilizzare. Puoi impostare il valore su "latest", la stringa vuota o una stringa con un valore intero.

Ad esempio, supponiamo che tutti i tuoi secret abbiano le versioni 1, 2 e 3. Supponiamo che questa è una parte del file di configurazione del cluster utente per 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: ""

Nell'esempio precedente, possiamo notare:

  • Non è stato specificato alcun valore secretRef per vCenter, quindi il cluster utilizzerà la classe ultima versione del secret vsphere-creds in gke-onprem-secrets-alice nello spazio dei nomi.

  • Il cluster utilizzerà la versione 2 del secret register-service-account-creds nello spazio dei nomi gke-onprem-secrets-alice.

  • Il cluster utilizzerà l'ultima versione Secret stackdriver-service-account-creds in gke-onprem-secrets-alice nello spazio dei nomi. In questo esempio, si tratta della versione 3.

  • La versione di cloudAuditLogging è la stringa vuota, quindi il cluster usa l'ultima versione di cloud-audit-logging-service-account-creds Secret nello spazio dei nomi gke-onprem-secrets-alice. In questo esempio, versione 3.

  • Nessun secretRef.version specificato per l'account di servizio di accesso ai componenti. in modo che il cluster utilizzi la versione più recente.

Elimina i secret preparati

Per elencare tutti i secret preparati e i relativi spazi dei nomi:

gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Se uno spazio dei nomi del secret preparato non viene utilizzato da nessun cluster utente, puoi eliminerai lo spazio dei nomi.

Per eliminare uno spazio dei nomi del secret preparato e tutti i Secret al suo interno:

gkectl delete secret –namespace PREPARED_SECRET_NAMESPACE \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Se un singolo secret preparato non viene utilizzato da nessun cluster utente, puoi per eliminare il secret.

Per eliminare un singolo secret preparato:

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