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

Questa pagina descrive come autenticare Config Sync nel repository di immagini OCI o Helm. Config Sync richiede l'accesso in sola lettura alla fonte attendibile 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 tipo di origine.

La tabella seguente 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 la fonte attendibile è pubblica.
Coppia di chiavi SSH Git Supportata dalla maggior parte dei provider Git. Richiede la gestione delle chiavi. Non supportata per OCI o Helm.
Token Git, OCI, Helm Supportata dalla maggior parte dei provider Git. Una buona alternativa se la tua organizzazione non consente l'utilizzo delle 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 supportata per Git.
Service account Google Git Utilizza IAM, il che evita di archiviare le credenziali nei secret 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 supportata 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. Supportata 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 fonte attendibile, completa le seguenti attività:

Concedere l'accesso a un'immagine OCI

Questa sezione descrive come concedere a Config Sync l'accesso in 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 in 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 token (token) come tipo di autenticazione. Devi anche specificare il nome del secret nel campo spec.oci.secretRef.name.

Utilizzare un account di servizio Kubernetes

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

Per concedere a Config Sync l'accesso in sola lettura all'immagine OCI utilizzando un account di servizio Kubernetes, completa i seguenti passaggi:

  1. Per ottenere le autorizzazioni necessarie per creare un'associazione di policy, chiedi all'amministratore di concederti il ruolo IAM Amministratore service account (roles/iam.serviceAccountAdmin) sul account di servizio. 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 IAM Lettore Artifact Registry (roles/artifactregistry.reader) al account di servizio Kubernetes che include il pool Workload Identity Federation for GKE:

    • 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="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Concedi l'autorizzazione specifica per il repository quando vuoi che i service account abbiano livelli di accesso diversi per ogni repository del progetto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto.
    • 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.
    • REPOSITORY: l'ID dell'immagine.
    • LOCATION: la località regionale o multiregionale del repository.

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

Utilizzare un account di servizio predefinito di Compute Engine

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 account di servizio Compute Engine (gcenode) come tipo di autenticazione.

Concedere 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 in 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 nome utente del repository Helm.
  • PASSWORD: la password del repository Helm.

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

Utilizzare un account di servizio Kubernetes

Per l'autenticazione utilizzando un account di servizio Kubernetes, devi soddisfare i seguenti requisiti:

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

  1. Per ottenere le autorizzazioni necessarie per creare un'associazione di policy, chiedi all'amministratore di concederti il ruolo IAM Amministratore service account (roles/iam.serviceAccountAdmin) sul account di servizio. 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. Per utilizzare un account di servizio Kubernetes per concedere a Config Sync l'accesso in sola lettura al repository Helm, concedi il ruolo IAM Lettore Artifact Registry (roles/artifactregistry.reader) al account di servizio Kubernetes che include il pool Workload Identity Federation for GKE:

    • 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="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Concedi l'autorizzazione specifica per il repository quando vuoi che i service account abbiano livelli di accesso diversi per ogni repository del progetto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto.
    • 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.
    • REPOSITORY: l'ID dell'immagine.
    • LOCATION: la località regionale o multiregionale del repository.

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

Utilizzare un account di servizio predefinito di Compute Engine

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 account di servizio Compute Engine (gcenode) come tipo di autenticazione.

Passaggi successivi