Concedere a Config Sync l'accesso al repository di immagini OCI o Helm

Questa pagina descrive come autenticare Config Sync nel tuo repository di immagini OCI o Helm. Config Sync richiede l'accesso di sola lettura alla fonte di riferimento per poter leggere le configurazioni, applicarle ai cluster e mantenerle sincronizzate.

Scegliere un metodo di autenticazione

Il metodo di autenticazione che utilizzi dipende da ciò che è supportato per il tuo tipo di origine.

La seguente tabella riassume i metodi di autenticazione che puoi utilizzare con Config Sync:

Metodo Origini supportate Descrizione Limitazioni
Nessuna autenticazione Git, OCI, Helm Non è richiesta alcuna configurazione aggiuntiva. Funziona solo se l'origine dell'obiettivo ultimo dell'attività è pubblica.
Coppia di chiavi SSH Git Supportato dalla maggior parte dei provider Git. Richiede la gestione delle chiavi. Non supportato per OCI o Helm.
token Git, OCI, Helm Supportato dalla maggior parte dei provider Git. Una buona alternativa se la tua organizzazione non consente l'uso di chiavi SSH. Supporta nome utente e password per OCI e Helm. Richiede la gestione dei token. I token possono scadere.
Service account Kubernetes OCI, Helm Utilizza IAM per concedere l'accesso ad Artifact Registry direttamente a un account di servizio Kubernetes. Richiede che Workload Identity Federation for GKE sia abilitato sul cluster. Non supportato per Git.
Account di servizio Google Git Utilizza IAM, che evita di archiviare le credenziali nei secret di Kubernetes. Consigliato per Secure Source Manager e Cloud Source Repositories. Richiede che Workload Identity Federation for GKE sia abilitato sul cluster. Richiede la configurazione prima e dopo l'installazione di Config Sync sui cluster. Non supportato per i repository ospitati al di fuori di Secure Source Manager o Cloud Source Repositories.
App GitHub Git Integrazione diretta con GitHub. Consente autorizzazioni granulari. Supportato solo per i repository ospitati in GitHub.

Config Sync supporta anche i seguenti metodi di autenticazione; tuttavia, questi metodi sono consigliati solo se non puoi utilizzare una delle opzioni elencate nella tabella precedente:

  • cookiefile: potrebbe non essere supportato per tutti i provider Git. Non supportato per OCI o Helm.
  • Service account predefinito di Compute Engine (gcenode): non consigliato perché questo metodo funziona solo se Workload Identity Federation for GKE è disabilitato. Supportato per Git, OCI e Helm.
  • Service account di servizio per Helm e OCI:supportato, ma non consigliato perché il metodo account di servizio Kubernetes richiede meno configurazione.

Prima di iniziare

Prima di concedere a Config Sync l'accesso di sola lettura alla tua Single Source Of Truth, completa le seguenti attività:

Concedi l'accesso a un'immagine OCI

Questa sezione descrive come concedere a Config Sync l'accesso di sola lettura alle immagini OCI utilizzando un metodo di autenticazione supportato.

Per l'autenticazione a Config Sync, devi archiviare le immagini OCI in Artifact Registry.

Utilizzare un token

Per utilizzare un token per concedere a Config Sync l'accesso di sola lettura al repository OCI, crea un secret che utilizzi il nome utente e la password del repository OCI:

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

Sostituisci quanto segue:

  • SECRET_NAME: un nome per il secret.
  • USERNAME: il nome utente del repository OCI.
  • PASSWORD: la password del repository OCI.

Quando installi Config Sync, utilizza il token (token) come tipo di autenticazione. Devi anche specificare il nome del secret nel campo spec.oci.secretRef.name.

Utilizzare un service account Kubernetes

Per l'autenticazione con un service account Kubernetes, il cluster deve avere abilitato Workload Identity Federation for GKE o Workload Identity Federation per GKE del parco risorse.

Per concedere a Config Sync l'accesso in sola lettura alla tua immagine OCI utilizzando un service account Kubernetes, completa i seguenti passaggi:

  1. Per ottenere le autorizzazioni necessarie per creare un binding dei criteri, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  2. Concedi il ruolo Lettore Artifact Registry (roles/artifactregistry.reader) sul progetto o sul repository al service account Kubernetes:

    • Concedi l'autorizzazione a livello di progetto se le stesse autorizzazioni si applicano a tutti i repository del progetto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
           --condition=None
      
    • Concedi l'autorizzazione specifica per il repository quando vuoi che i service account abbiano diversi livelli di accesso per ogni repository del tuo progetto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
          --project=PROJECT_ID \
          --condition=None
      

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto.
    • FLEET_HOST_PROJECT_NUMBER: se utilizzi Workload Identity Federation for GKE, questo valore corrisponde al numero del tuo progetto. Se utilizzi Workload Identity Federation for GKE del parco risorse, questo valore è il numero di progetto del parco risorse a cui è registrato il cluster.
    • FLEET_HOST_PROJECT_ID: se utilizzi Workload Identity Federation per GKE, questo valore è uguale all'ID progetto. Se utilizzi Workload Identity Federation for GKE del parco risorse, questo valore è l'ID progetto del parco risorse a cui è registrato il cluster.
    • KUBERNETES_SERVICEACCOUNT: il service account Kubernetes per il riconciliatore. Nella maggior parte dei casi, il valore è root-reconciler perché Config Sync crea automaticamente un oggetto RootSync denominato root-sync quando viene installato con la console Google Cloud o Google Cloud CLI. Altrimenti, utilizza root-reconciler-ROOT_SYNC_NAME come valore.
    • REPOSITORY: l'ID del repository.
    • LOCATION: la posizione regionale o multiregionale del repository.

Quando installi Config Sync, utilizza ServiceAccount Kubernetes (k8sserviceaccount) come tipo di autenticazione.

Utilizzare un account di servizio Compute Engine predefinito

In alternativa a un account di servizio Google, se non hai abilitato Workload Identity Federation for GKE, puoi utilizzare un account di servizio Compute Engine per l'autenticazione.

Per utilizzare un account di servizio predefinito di Compute Engine per concedere a Config Sync l'accesso in sola lettura al repository, concedi al account di servizio Compute Engine l'autorizzazione di lettura ad Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • PROJECT_NUMBER: il numero del progetto.

Quando installi Config Sync, utilizza il account di servizio Compute Engine (gcenode) come tipo di autenticazione.

Concedi l'accesso a un repository Helm

Questa sezione descrive come concedere a Config Sync l'accesso di sola lettura ai grafici Helm archiviati in un repository.

Utilizzare un token

Per utilizzare un token per concedere a Config Sync l'accesso di sola lettura al repository Helm, crea un secret che utilizzi il nome utente e la password del repository Helm:

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

Sostituisci quanto segue:

  • SECRET_NAME: un nome per il secret.
  • USERNAME: il tuo nome utente del repository Helm.
  • PASSWORD: la password del repository Helm.

Quando installi Config Sync, utilizza il token (token) come tipo di autenticazione. Devi anche specificare il nome del secret nel campo spec.helm.secretRef.name.

Utilizzare un service account Kubernetes

Per l'autenticazione tramite un ServiceAccount Kubernetes, devi soddisfare i seguenti requisiti:

Per utilizzare un service account Kubernetes per concedere a Config Sync l'accesso di sola lettura al tuo repository Helm, completa i seguenti passaggi:

  1. Per ottenere le autorizzazioni necessarie per creare un binding dei criteri, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  2. Concedi il ruolo Lettore Artifact Registry (roles/artifactregistry.reader) sul progetto o sul repository al service account Kubernetes:

    • Concedi l'autorizzazione a livello di progetto se le stesse autorizzazioni si applicano a tutti i repository del progetto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
           --condition=None
      
    • Concedi l'autorizzazione specifica per il repository quando vuoi che i service account abbiano diversi livelli di accesso per ogni repository del tuo progetto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
          --project=PROJECT_ID \
          --condition=None
      

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto.
    • FLEET_HOST_PROJECT_NUMBER: se utilizzi Workload Identity Federation for GKE, questo valore corrisponde al tuo numero di progetto. Se utilizzi Workload Identity Federation for GKE del parco risorse, questo valore è il numero di progetto del parco risorse a cui è registrato il cluster.
    • FLEET_HOST_PROJECT_ID: se utilizzi Workload Identity Federation for GKE, questo valore è uguale all'ID progetto. Se utilizzi Workload Identity Federation for GKE del parco risorse, questo valore è l'ID progetto del parco risorse a cui è registrato il cluster.
    • KUBERNETES_SERVICEACCOUNT: il service account Kubernetes per il riconciliatore. Nella maggior parte dei casi, il valore è root-reconciler perché Config Sync crea automaticamente un oggetto RootSync denominato root-sync quando viene installato con la console Google Cloud o Google Cloud CLI. Altrimenti, utilizza root-reconciler-ROOT_SYNC_NAME come valore.
    • REPOSITORY: l'ID del repository.
    • LOCATION: la posizione regionale o multiregionale del repository.

Quando installi Config Sync, utilizza ServiceAccount Kubernetes (k8sserviceaccount) come tipo di autenticazione.

Utilizzare un account di servizio Compute Engine predefinito

In alternativa a un account di servizio Google, se non hai abilitato Workload Identity Federation for GKE, puoi utilizzare un account di servizio Compute Engine per l'autenticazione.

Per utilizzare un account di servizio predefinito di Compute Engine per concedere a Config Sync l'accesso in sola lettura al repository, concedi al account di servizio Compute Engine l'autorizzazione di lettura ad Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • PROJECT_NUMBER: il numero del progetto.

Quando installi Config Sync, utilizza il account di servizio Compute Engine (gcenode) come tipo di autenticazione.

Passaggi successivi