Configurare la sincronizzazione da più di una fonte attendibile

Questa pagina spiega come configurare più di una fonte attendibile con ambito di spazio dei nomi e root creando oggetti RootSync e RepoSync.

Disponendo di una fonte attendibile principale, puoi sincronizzare le configurazioni con ambito cluster e con ambito spazio dei nomi. Un'origine principale attendibile può utilizzare le credenziali a livello di amministratore per applicare i criteri agli spazi dei nomi delle applicazioni e ignorare le modifiche locali che si discostano dallo stato dichiarato nelle configurazioni. Un amministratore centrale in genere governa le origini di riferimento principali.

Le origini attendibili con ambito a livello di spazio dei nomi sono facoltative e possono contenere configurazioni con ambito a livello di spazio dei nomi sincronizzate con uno spazio dei nomi specifico nei cluster. Puoi delegare la configurazione e il controllo di un'origine attendibile con ambito namespace a utenti non amministrativi. Sebbene Config Sync rilevi automaticamente le modifiche dalla fonte attendibile, puoi aggiungere un ulteriore livello di rilevamento della deriva aggiungendo un webhook di controllo dell'ammissione a una fonte attendibile con ambito namespace. Per informazioni dettagliate su come farlo, vedi Prevenzione di deviazioni dalla configurazione.

Prima di iniziare

  • Crea o assicurati di avere accesso a una fonte di riferimento non strutturata che possa contenere le configurazioni sincronizzate da Config Sync. Config Sync supporta repository Git, grafici Helm e immagini OCI come fonte attendibile. Le fonti di riferimento con ambito a livello di spazio dei nomi devono utilizzare il formato non strutturato.
  • Crea o assicurati di avere accesso a un cluster che si trova su una piattaforma e una versione supportate di Google Kubernetes Engine e che soddisfi i requisiti per Config Sync.

Crea un'associazione dei ruoli

È necessario un RoleBinding per concedere le autorizzazioni al RepoSync che crei in questa guida. Per creare RoleBinding, completa i seguenti passaggi:

  1. Nell'origine principale, dichiara una configurazione RoleBinding che concede all'account di servizio SERVICE_ACCOUNT_NAME l'autorizzazione per gestire gli oggetti nello spazio dei nomi. Config Sync crea automaticamente il account di servizio SERVICE_ACCOUNT_NAME quando la configurazione RepoSync viene sincronizzata con il cluster.

    Un RoleBinding può fare riferimento a un Role nello stesso spazio dei nomi. In alternativa, un RoleBinding può fare riferimento a un ClusterRole e associarlo allo spazio dei nomi del RoleBinding.ClusterRole Sebbene tu debba rispettare il principio del privilegio minimo concedendo autorizzazioni granulari a un Role definito dall'utente, puoi definire un ClusterRole o utilizzare ruoli rivolti agli utenti e fare riferimento allo stesso ClusterRole in più RoleBindings in spazi dei nomi diversi.

    ClusterRole predefiniti

    Salva il manifest RoleBinding che fa riferimento a un ClusterRole predefinito, ad esempio admin o edit, come FILENAME:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: CLUSTERROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    

    Sostituisci quanto segue:

    • FILENAME: il nome del manifest RoleBinding.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • SERVICE_ACCOUNT_NAME: aggiungi il nome del account di servizio del riconciliatore. Se il nome di RepoSync è repo-sync, SERVICE_ACCOUNT_NAME è ns-reconciler-NAMESPACE. In caso contrario, è ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Ad esempio, se il nome di RepoSync è prod, allora SERVICE_ACCOUNT_NAME sarà ns-reconciler-NAMESPACE-prod-4. L'intero 4 viene utilizzato come prod contiene 4 caratteri.
    • CLUSTERROLE_NAME: aggiungi il nome di ClusterRole predefinito.

    Ruoli definiti dall'utente

    Puoi dichiarare un ClusterRole o un Role concedendo un elenco di autorizzazioni a ogni risorsa gestita dall'oggetto RepoSync. Ciò consente autorizzazioni granulari. Per ulteriori dettagli, consulta la sezione Riferimento alle risorse.

    Ad esempio, i seguenti ClusterRole o Role concedono le autorizzazioni per gestire gli oggetti Deployment e ServiceAccount:

    # ROOT_REPO/namespaces/NAMESPACE/sync-role.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ROLE_KIND
    metadata:
      namespace: NAMESPACE # only set this field for a 'Role'
      name: RECONCILER_ROLE
    rules:
    # Update 'apiGroups' and 'resources' to reference actual resources managed by 'RepoSync'.
    - apiGroups: ["apps"]
      resources: ["deployments"]
      verbs: ["*"]
    - apiGroups: [""]
      resources: ["serviceaccounts"]
      verbs: ["*"]
    

    Salva il file manifest RoleBinding che fa riferimento a ClusterRole o Role come FILENAME:

    # ROOT_REPO/namespaces/NAMESPACE/FILENAME.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ROLE_KIND
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Sostituisci quanto segue:

    • FILENAME: il nome del manifest RoleBinding.
    • ROLE_KIND: imposta ClusterRole o Role.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • SERVICE_ACCOUNT_NAME: aggiungi il nome del account di servizio del riconciliatore. Se il nome di RepoSync è repo-sync, SERVICE_ACCOUNT_NAME è ns-reconciler-NAMESPACE. In caso contrario, è ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Ad esempio, se il nome di RepoSync è prod, allora SERVICE_ACCOUNT_NAME sarà ns-reconciler-NAMESPACE-prod-4. L'intero 4 viene utilizzato come prod contiene 4 caratteri.
    • RECONCILER_ROLE: aggiungi il nome di ClusterRole o Role.
  2. Applica RoleBinding:

    kubectl apply -f FILENAME
    

Limitazioni

Scegli il metodo di configurazione che preferisci

Scegli tra uno dei due metodi per configurare le sorgenti:

Controllare le origini in un'origine attendibile principale

Per controllare le origini con un'origine principale, devi disporre di un RoleBinding per autorizzare l'accesso. Se non ne hai uno, consulta la sezione Crea un RoleBinding.

Controllare le origini principali in un'origine principale attendibile

Config Sync supporta la sincronizzazione da più di un'unica fonte attendibile. L'amministratore centrale può utilizzare un'origine di riferimento principale per gestire tutte le altre origini. Poiché Config Sync gestisce gli oggetti RootSync, questo metodo impedisce qualsiasi modifica locale alle configurazioni RootSync nel cluster.

Per utilizzare questo metodo, completa le seguenti attività:

  1. Salva uno dei seguenti manifest come root-sync.yaml. Utilizza la versione del manifest che corrisponde al tipo di origine per le tue configurazioni.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured perché questo formato ti consente di organizzare le configurazioni nel modo più conveniente per te.
    • ROOT_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository principale. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • ROOT_REVISION: aggiungi la revisione Git (tag o hash) o il ramo da cui sincronizzare. Questo campo è facoltativo e il valore predefinito è HEAD. Quando utilizzi un hash, deve essere un hash completo e non una forma abbreviata.
    • ROOT_BRANCH: aggiungi il ramo del repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è master. Per semplicità, ti consigliamo di utilizzare il campo revision per specificare un nome di ramo. Se vengono specificati sia il campo revision che il campo branch, revision ha la precedenza su branch.
    • ROOT_DIRECTORY: aggiungi il percorso nel repository Git alla directory principale che contiene la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory radice (/) del repository.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • ssh: Utilizza una coppia di chiavi SSH
      • cookiefile: utilizza un cookiefile
      • token: utilizza un token
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un Cloud Source Repositories.
      • gcenode: utilizza un account di servizio Google per accedere a Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitata nel tuo cluster.

      Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina Concedere a Config Sync l'accesso in sola lettura a Git.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, devi aggiungere la chiave pubblica del secret al provider Git. Questo campo è facoltativo.

    • ROOT_NO_SSL_VERIFY: per disattivare la verifica del certificato SSL, imposta questo campo su true. Il valore predefinito è false.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider Git deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Questo manifest crea un oggetto RootSync che utilizza Git come origine.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured perché questo formato ti consente di organizzare le configurazioni nel modo più conveniente per te.
    • ROOT_IMAGE: l'URL dell'immagine OCI da utilizzare come repository radice, ad esempio LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Per impostazione predefinita, l'immagine viene estratta dal tag latest, ma puoi estrarre le immagini in base a TAG o DIGEST. Specifica TAG o DIGEST in PACKAGE_NAME:
      • Per estrarre per TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Per estrarre per DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: aggiungi il percorso nel repository alla directory principale che contiene la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory radice (/) del repository.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

    Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Questo manifest crea un oggetto RootSync che utilizza un'immagine OCI come origine.

    Helm

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured perché questo formato ti consente di organizzare le configurazioni nel modo più conveniente per te.
    • ROOT_HELM_REPOSITORY: l'URL del repository Helm da utilizzare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • HELM_CHART_NAME: aggiungi il nome del tuo grafico Helm. Questo campo è obbligatorio.
    • HELM_CHART_VERSION: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzata l'ultima versione.
    • HELM_RELEASE_NAME: il nome della release di Helm. Questo campo è facoltativo.
    • HELM_RELEASE_NAMESPACE: lo spazio dei nomi di destinazione per una release. Imposta uno spazio dei nomi solo per le risorse che contengono namespace: {{ .Release.Namespace }} nei relativi modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinito config-management-system.
    • HELM_INCLUDE_CRDS: impostalo su true se vuoi che il modello Helm generi anche una CustomResourceDefinition. Questo campo è facoltativo. Se non viene specificato alcun valore, il valore predefinito è false e non verrà generato alcun CRD.
    • VALUE: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo nello stesso modo del file values.yaml del grafico Helm. Questo campo è facoltativo.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • token: utilizza un nome utente e una password per accedere a un repository Helm privato.
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: aggiungi il nome del secret se token è ROOT_AUTH_TYPE. Questo campo è facoltativo.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il provider Helm deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

    Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Questo manifest crea un oggetto RootSync che utilizza Helm come origine.

  2. Esegui il commit delle modifiche all'origine principale della verità:

     git add .
     git commit -m 'Setting up a new root source of truth.'
     git push
    
  3. Puoi ripetere i passaggi precedenti se devi configurare più origini principali. Puoi anche archiviare le configurazioni di più oggetti RootSync in una fonte attendibile radice sincronizzata da un altro oggetto RootSync, per gestire più oggetti RootSync centralmente in stile GitOps.

Controllare gli oggetti con ambito di spazio dei nomi in un'origine principale di riferimento

Le fonti attendibili con ambito a livello di spazio dei nomi possono essere gestite da una fonte attendibile principale. Poiché le sorgenti con ambito a livello di spazio dei nomi sono gestite da Config Sync, questo metodo impedisce qualsiasi modifica locale alle definizioni delle sorgenti con ambito a livello di spazio dei nomi.

Per utilizzare questo metodo, completa le seguenti attività:

  1. Nella fonte attendibile principale, dichiara una configurazione namespace:

    # ROOT_SOURCE/namespaces/NAMESPACE/namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: NAMESPACE
    

    Sostituisci NAMESPACE con un nome per lo spazio dei nomi.

  2. Nella fonte attendibile principale, crea uno dei seguenti oggetti RepoSync nello stesso spazio dei nomi. Utilizza il manifest corrispondente al tipo di origine per le tue configurazioni:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository dello spazio dei nomi. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Se non inserisci un protocollo, l'URL viene trattato come un URL HTTPS. Questo campo è obbligatorio.
    • NAMESPACE_REVISION: aggiungi la revisione Git (tag o hash) o il ramo da cui sincronizzare. Questo campo è facoltativo e il valore predefinito è HEAD. Quando utilizzi un hash, deve essere un hash completo e non una forma abbreviata.
    • NAMESPACE_BRANCH: aggiungi il ramo del repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è master. Per semplicità, ti consigliamo di utilizzare il campo revision per specificare un nome di ramo. Se vengono specificati sia il campo revision che il campo branch, revision ha la precedenza su branch.
    • NAMESPACE_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • ssh: Utilizza una coppia di chiavi SSH
      • cookiefile: utilizza un cookiefile
      • token: utilizza un token
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories.
      • gcenode: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitata nel tuo cluster.

        Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina Concedere a Config Sync l'accesso in sola lettura a Git.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come NAMESPACE_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: aggiungi il nome che intendi dare al tuo secret. Questo campo è facoltativo.

    • NAMESPACE_NO_SSL_VERIFY: per disattivare la verifica del certificato SSL, imposta questo campo su true. Il valore predefinito è false.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider Git deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_IMAGE: l'URL dell'immagine OCI da utilizzare come origine spazio dei nomi, ad esempio LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Per impostazione predefinita, l'immagine viene estratta dal tag latest, ma puoi estrarre le immagini in base a TAG o DIGEST. Specifica TAG o DIGEST in PACKAGE_NAME:

      • Per estrarre per TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Per estrarre per DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: aggiungi il percorso nell'origine alla directory principale che contiene la configurazione che vuoi sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory principale (/) dell'origine.

    • NAMESPACE_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_REPOSITORY: l'URL del repository Helm da utilizzare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • HELM_CHART_NAME: aggiungi il nome del tuo grafico Helm. Questo campo è obbligatorio.
    • HELM_CHART_VERSION: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzata l'ultima versione.
    • HELM_RELEASE_NAME: il nome della release di Helm. Questo campo è facoltativo.
    • HELM_RELEASE_NAMESPACE: lo spazio dei nomi di destinazione per una release. Imposta uno spazio dei nomi solo per le risorse che contengono namespace: {{ .Release.Namespace }} nei relativi modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinito config-management-system.
    • HELM_INCLUDE_CRDS: impostalo su true se vuoi che il modello Helm generi anche una CustomResourceDefinition. Questo campo è facoltativo. Se non viene specificato alcun valore, il valore predefinito è false e non verrà generato alcun CRD.
    • VALUE: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo nello stesso modo del file values.yaml del grafico Helm. Questo campo è facoltativo.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • token: utilizza un nome utente e una password per accedere a un repository Helm privato.
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: aggiungi il nome del secret se token è ROOT_AUTH_TYPE. Questo campo è facoltativo.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il provider Helm deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

  3. Se utilizzi gcpserviceaccount come tipo di autenticazione e non hai attivato Workload Identity Federation per GKE, devi creare un'associazione dei criteri IAM tra l'account di servizio Kubernetes per ogni spazio dei nomi e l'account di servizio Google. Per istruzioni su come creare questo binding, consulta Concedere l'accesso a Git.

  4. Esegui il commit delle modifiche all'origine principale della verità:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  5. Se necessario, crea un secret in base al metodo di autenticazione che preferisci. Se hai utilizzato none come tipo di autenticazione, puoi saltare questo passaggio.

    Il segreto deve soddisfare i seguenti requisiti:

    • Crea il secret nello stesso spazio dei nomi di RepoSync.
    • Il nome del secret deve corrispondere al nome spec.git.secretRef che hai definito in repo-sync.yaml.
    • Devi aggiungere la chiave pubblica del secret al provider Git.
  6. Per verificare la configurazione, utilizza kubectl get su uno degli oggetti nell'origine dello spazio dei nomi. Ad esempio:

    kubectl get rolebindings -n NAMESPACE
    
  7. Puoi ripetere i passaggi precedenti se devi configurare più di un'origine con ambito di spazio dei nomi.

Controllare le origini con ambito a livello di spazio dei nomi in un'origine con ambito a livello di spazio dei nomi

Config Sync supporta la sincronizzazione da più di una fonte attendibile con ambito di spazio dei nomi per spazio dei nomi. Le fonti attendibili con ambito a livello di spazio dei nomi possono essere gestite in una fonte attendibile con ambito a livello di spazio dei nomi nello stesso spazio dei nomi.

Per utilizzare questo metodo, completa le seguenti attività:

  1. Nella fonte attendibile con ambito dello spazio dei nomi, crea uno dei seguenti oggetti RepoSync nello stesso spazio dei nomi. Utilizza il manifest corrispondente al tipo di origine per le tue configurazioni:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository dello spazio dei nomi. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Se non inserisci un protocollo, l'URL viene trattato come un URL HTTPS. Questo campo è obbligatorio.
    • NAMESPACE_REVISION: aggiungi la revisione Git (tag o hash) o il ramo da cui sincronizzare. Questo campo è facoltativo e il valore predefinito è HEAD. Quando utilizzi un hash, deve essere un hash completo e non una forma abbreviata.
    • NAMESPACE_BRANCH: aggiungi il ramo del repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è master. Per semplicità, ti consigliamo di utilizzare il campo revision per specificare un nome di ramo. Se vengono specificati sia il campo revision che il campo branch, revision ha la precedenza su branch.
    • NAMESPACE_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • ssh: Utilizza una coppia di chiavi SSH
      • cookiefile: utilizza un cookiefile
      • token: utilizza un token
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories.
      • gcenode: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitata nel tuo cluster.

        Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina Concedere a Config Sync l'accesso in sola lettura a Git.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come NAMESPACE_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: aggiungi il nome che intendi dare al tuo secret. Questo campo è facoltativo.

    • NAMESPACE_NO_SSL_VERIFY: per disattivare la verifica del certificato SSL, imposta questo campo su true. Il valore predefinito è false.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider Git deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_IMAGE: l'URL dell'immagine OCI da utilizzare come origine spazio dei nomi, ad esempio LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Per impostazione predefinita, l'immagine viene estratta dal tag latest, ma puoi estrarre le immagini in base a TAG o DIGEST. Specifica TAG o DIGEST in PACKAGE_NAME:

      • Per estrarre per TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Per estrarre per DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: aggiungi il percorso nell'origine alla directory principale che contiene la configurazione che vuoi sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory principale (/) dell'origine.

    • NAMESPACE_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_REPOSITORY: l'URL del repository Helm da utilizzare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • HELM_CHART_NAME: aggiungi il nome del tuo grafico Helm. Questo campo è obbligatorio.
    • HELM_CHART_VERSION: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzata l'ultima versione.
    • HELM_RELEASE_NAME: il nome della release di Helm. Questo campo è facoltativo.
    • HELM_RELEASE_NAMESPACE: lo spazio dei nomi di destinazione per una release. Imposta uno spazio dei nomi solo per le risorse che contengono namespace: {{ .Release.Namespace }} nei relativi modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinito config-management-system.
    • HELM_INCLUDE_CRDS: impostalo su true se vuoi che il modello Helm generi anche una CustomResourceDefinition. Questo campo è facoltativo. Se non viene specificato alcun valore, il valore predefinito è false e non verrà generato alcun CRD.
    • VALUE: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo nello stesso modo del file values.yaml del grafico Helm. Questo campo è facoltativo.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • token: utilizza un nome utente e una password per accedere a un repository Helm privato.
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: aggiungi il nome del secret se token è ROOT_AUTH_TYPE. Questo campo è facoltativo.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il provider Helm deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

  2. Se utilizzi gcpserviceaccount come tipo di autenticazione e non hai attivato Workload Identity Federation per GKE, devi creare un'associazione dei criteri IAM tra l'account di servizio Kubernetes per ogni spazio dei nomi e l'account di servizio Google. Per istruzioni su come creare questo binding, consulta Concedere l'accesso a Git.

  3. Esegui il commit delle modifiche all'origine principale della verità:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  4. Se necessario, crea un secret in base al metodo di autenticazione che preferisci. Se hai utilizzato none come tipo di autenticazione, puoi saltare questo passaggio.

    Il segreto deve soddisfare i seguenti requisiti:

    • Crea il secret nello stesso spazio dei nomi di RepoSync.
    • Il nome del secret deve corrispondere al nome spec.git.secretRef che hai definito in repo-sync.yaml.
    • Devi aggiungere la chiave pubblica del secret al provider Git.
  5. Per verificare la configurazione, utilizza kubectl get su uno degli oggetti nella fonte attendibile con ambito spazio dei nomi. Ad esempio:

    kubectl get rolebindings -n NAMESPACE
    
  6. Puoi ripetere i passaggi precedenti se devi configurare più di un'origine con ambito namespace.

Controllare una fonte attendibile con l'API Kubernetes

In questo metodo, l'amministratore centrale delega la dichiarazione di altri oggetti RootSync ad altri amministratori. Per gli oggetti RepoSync, l'amministratore centrale dichiara solo lo spazio dei nomi nell'origine attendibile principale e delega la dichiarazione dell'oggetto RepoSync all'operatore dell'applicazione.

Controllare più di una fonte attendibile principale

Gli altri amministratori possono controllare una fonte principale di verità completando le seguenti attività:

  1. Salva uno dei seguenti manifest come root-sync.yaml. Utilizza la versione del manifest che corrisponde al tipo di origine per le tue configurazioni.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured perché questo formato ti consente di organizzare le configurazioni nel modo più conveniente per te.
    • ROOT_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository principale. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • ROOT_REVISION: aggiungi la revisione Git (tag o hash) o il ramo da cui sincronizzare. Questo campo è facoltativo e il valore predefinito è HEAD. Quando utilizzi un hash, deve essere un hash completo e non una forma abbreviata.
    • ROOT_BRANCH: aggiungi il ramo del repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è master. Per semplicità, ti consigliamo di utilizzare il campo revision per specificare un nome di ramo. Se vengono specificati sia il campo revision che il campo branch, revision ha la precedenza su branch.
    • ROOT_DIRECTORY: aggiungi il percorso nel repository Git alla directory principale che contiene la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory radice (/) del repository.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • ssh: Utilizza una coppia di chiavi SSH
      • cookiefile: utilizza un cookiefile
      • token: utilizza un token
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un Cloud Source Repositories.
      • gcenode: utilizza un account di servizio Google per accedere a Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitata nel tuo cluster.

      Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina Concedere a Config Sync l'accesso in sola lettura a Git.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, devi aggiungere la chiave pubblica del secret al provider Git. Questo campo è facoltativo.

    • ROOT_NO_SSL_VERIFY: per disattivare la verifica del certificato SSL, imposta questo campo su true. Il valore predefinito è false.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider Git deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Questo manifest crea un oggetto RootSync che utilizza Git come origine.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured perché questo formato ti consente di organizzare le configurazioni nel modo più conveniente per te.
    • ROOT_IMAGE: l'URL dell'immagine OCI da utilizzare come repository radice, ad esempio LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Per impostazione predefinita, l'immagine viene estratta dal tag latest, ma puoi estrarre le immagini in base a TAG o DIGEST. Specifica TAG o DIGEST in PACKAGE_NAME:
      • Per estrarre per TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Per estrarre per DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: aggiungi il percorso nel repository alla directory principale che contiene la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory radice (/) del repository.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

    Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Questo manifest crea un oggetto RootSync che utilizza un'immagine OCI come origine.

    Helm

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured perché questo formato ti consente di organizzare le configurazioni nel modo più conveniente per te.
    • ROOT_HELM_REPOSITORY: l'URL del repository Helm da utilizzare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • HELM_CHART_NAME: aggiungi il nome del tuo grafico Helm. Questo campo è obbligatorio.
    • HELM_CHART_VERSION: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzata l'ultima versione.
    • HELM_RELEASE_NAME: il nome della release di Helm. Questo campo è facoltativo.
    • HELM_RELEASE_NAMESPACE: lo spazio dei nomi di destinazione per una release. Imposta uno spazio dei nomi solo per le risorse che contengono namespace: {{ .Release.Namespace }} nei relativi modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinito config-management-system.
    • HELM_INCLUDE_CRDS: impostalo su true se vuoi che il modello Helm generi anche una CustomResourceDefinition. Questo campo è facoltativo. Se non viene specificato alcun valore, il valore predefinito è false e non verrà generato alcun CRD.
    • VALUE: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo nello stesso modo del file values.yaml del grafico Helm. Questo campo è facoltativo.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • token: utilizza un nome utente e una password per accedere a un repository Helm privato.
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: aggiungi il nome del secret se token è ROOT_AUTH_TYPE. Questo campo è facoltativo.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il provider Helm deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

    Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Questo manifest crea un oggetto RootSync che utilizza Helm come origine.

  2. Applica le modifiche:

    kubectl apply -f root-sync.yaml
    
  3. Puoi ripetere i passaggi precedenti se devi configurare più di una fonte attendibile principale.

Controlla le origini attendibili con ambito a livello di spazio dei nomi

Attività dell'amministratore centrale

L'amministratore centrale completa le seguenti attività:

  1. Nell'origine principale attendibile, dichiara una configurazione namespace per le origini con ambito di spazio dei nomi.

    # ROOT_REPO/namespaces/NAMESPACE/namespace.yaml
     apiVersion: v1
     kind: Namespace
     metadata:
       name: NAMESPACE
    

    Sostituisci NAMESPACE con un nome per lo spazio dei nomi.

  2. Nella fonte attendibile principale, dichiara un RoleBinding per concedere le autorizzazioni agli operatori dell'applicazione. Utilizza la prevenzione dell'escalation RBAC per assicurarti che l'operatore dell'applicazione non possa applicare in un secondo momento un binding dei ruoli con autorizzazioni non concesse da questo binding dei ruoli.

    Per dichiarare RoleBinding, crea il seguente manifest:

    # ROOT_REPO/namespaces/NAMESPACE/operator-rolebinding.yaml
     kind: RoleBinding
     # Add RBAC escalation prevention
     apiVersion: rbac.authorization.k8s.io/v1
     metadata:
       name: operator
       namespace: NAMESPACE
     subjects:
     - kind: User
       name: USERNAME
       apiGroup: rbac.authorization.k8s.io
     roleRef:
       kind: ClusterRole
       name: OPERATOR_ROLE
       apiGroup: rbac.authorization.k8s.io
    

    Sostituisci quanto segue:

    • NAMESPACE: aggiungi lo spazio dei nomi che hai creato nell'origine attendibile principale.
    • USERNAME: aggiungi il nome utente dell'operatore dell'applicazione.
    • OPERATOR_ROLE: in qualità di amministratore centrale, puoi impostare OPERATOR_ROLE per applicare i tipi di configurazioni che possono essere sincronizzati dall'origine con ambito di spazio dei nomi. Puoi scegliere uno dei seguenti ruoli:

      • Un ClusterRole predefinito:

        • admin
        • edit

        Per saperne di più, vedi Ruoli rivolti agli utenti.

      • Un ClusterRole o un Role definito dall'utente dichiarato nella fonte attendibile principale. Questo ruolo consente autorizzazioni granulari.

  3. Esegui il commit delle modifiche all'origine principale della verità:

     git add .
     git commit -m 'Setting up new namespace-scoped source of truth.'
     git push
    

Attività dell'operatore dell'applicazione

L'operatore dell'applicazione può controllare le origini con ambito di spazio dei nomi completando le seguenti attività:

  1. Dichiara una configurazione RoleBinding che concede al account di servizio SERVICE_ACCOUNT_NAME di cui è stato eseguito il provisioning automatico l'autorizzazione per gestire gli oggetti nello spazio dei nomi. Config Sync crea automaticamente ilaccount di serviziot SERVICE_ACCOUNT_NAME quando la configurazione RepoSync viene sincronizzata con il cluster.

    Per dichiarare RoleBinding, crea il seguente manifest:

    # sync-rolebinding.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Sostituisci quanto segue:

    • NAMESPACE: aggiungi lo spazio dei nomi che hai creato nell'origine attendibile principale.
    • SERVICE_ACCOUNT_NAME: aggiungi il nome del account di servizio del riconciliatore. Se il nome di RepoSync è repo-sync, SERVICE_ACCOUNT_NAME è ns-reconciler-NAMESPACE. In caso contrario, è ns-reconciler-NAMESPACE-REPO_SYNC_NAME.
    • RECONCILER_ROLE: in qualità di operatore dell'applicazione, puoi impostare RECONCILER_ROLE per applicare i tipi di configurazione che possono essere sincronizzati dall'origine con ambito dello spazio dei nomi. Puoi solo limitare ulteriormente l'insieme di autorizzazioni che l'amministratore centrale ti ha concesso. Di conseguenza, questo ruolo non può essere più permissivo di OPERATOR_ROLE che l'amministratore centrale ha dichiarato nella sezione precedente.
  2. Applica la configurazione RoleBinding:

    kubectl apply -f sync-rolebinding.yaml
    
  3. Se necessario, crea un secret in base al metodo di autenticazione che preferisci. Se hai utilizzato none come tipo di autenticazione, puoi saltare questo passaggio.

    Il segreto deve soddisfare i seguenti requisiti:

    • Crea il secret nello stesso spazio dei nomi di RepoSync.
    • Il nome del secret deve corrispondere al nome spec.git.secretRef che hai definito in root-sync.yaml.
    • Devi aggiungere la chiave pubblica del secret al provider Git.
  4. Dichiara una configurazione di RepoSync:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository dello spazio dei nomi. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Se non inserisci un protocollo, l'URL viene trattato come un URL HTTPS. Questo campo è obbligatorio.
    • NAMESPACE_REVISION: aggiungi la revisione Git (tag o hash) o il ramo da cui sincronizzare. Questo campo è facoltativo e il valore predefinito è HEAD. Quando utilizzi un hash, deve essere un hash completo e non una forma abbreviata.
    • NAMESPACE_BRANCH: aggiungi il ramo del repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è master. Per semplicità, ti consigliamo di utilizzare il campo revision per specificare un nome di ramo. Se vengono specificati sia il campo revision che il campo branch, revision ha la precedenza su branch.
    • NAMESPACE_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • ssh: Utilizza una coppia di chiavi SSH
      • cookiefile: utilizza un cookiefile
      • token: utilizza un token
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories.
      • gcenode: utilizza un account di servizio Google per accedere a un repository in Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitata nel tuo cluster.

        Per ulteriori informazioni su questi tipi di autenticazione, consulta la pagina Concedere a Config Sync l'accesso in sola lettura a Git.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come NAMESPACE_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: aggiungi il nome che intendi dare al tuo secret. Questo campo è facoltativo.

    • NAMESPACE_NO_SSL_VERIFY: per disattivare la verifica del certificato SSL, imposta questo campo su true. Il valore predefinito è false.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider Git deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_IMAGE: l'URL dell'immagine OCI da utilizzare come origine spazio dei nomi, ad esempio LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Per impostazione predefinita, l'immagine viene estratta dal tag latest, ma puoi estrarre le immagini in base a TAG o DIGEST. Specifica TAG o DIGEST in PACKAGE_NAME:

      • Per estrarre per TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Per estrarre per DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: aggiungi il percorso nell'origine alla directory principale che contiene la configurazione che vuoi sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory principale (/) dell'origine.

    • NAMESPACE_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il tuo provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: aggiungi il nome dell'oggetto RepoSync. Il nome deve essere univoco nello spazio dei nomi.
    • NAMESPACE: aggiungi il nome del tuo spazio dei nomi.
    • NAMESPACE_REPOSITORY: l'URL del repository Helm da utilizzare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • HELM_CHART_NAME: aggiungi il nome del tuo grafico Helm. Questo campo è obbligatorio.
    • HELM_CHART_VERSION: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzata l'ultima versione.
    • HELM_RELEASE_NAME: il nome della release di Helm. Questo campo è facoltativo.
    • HELM_RELEASE_NAMESPACE: lo spazio dei nomi di destinazione per una release. Imposta uno spazio dei nomi solo per le risorse che contengono namespace: {{ .Release.Namespace }} nei relativi modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinito config-management-system.
    • HELM_INCLUDE_CRDS: impostalo su true se vuoi che il modello Helm generi anche una CustomResourceDefinition. Questo campo è facoltativo. Se non viene specificato alcun valore, il valore predefinito è false e non verrà generato alcun CRD.
    • VALUE: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo nello stesso modo del file values.yaml del grafico Helm. Questo campo è facoltativo.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: Non utilizzare l'autenticazione
      • token: utilizza un nome utente e una password per accedere a un repository Helm privato.
      • gcenode: utilizza l'account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation per GKE non è abilitata nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.

      Questo campo è obbligatorio.

    • NAMESPACE_EMAIL: se hai aggiunto gcpserviceaccount come ROOT_AUTH_TYPE, aggiungi l'indirizzo email del account di servizio Google. Ad esempio acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: aggiungi il nome del secret se token è ROOT_AUTH_TYPE. Questo campo è facoltativo.

    • NAMESPACE_CA_CERT_SECRET_NAME: aggiungi il nome del tuo secret. Se questo campo è impostato, il provider Helm deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per scoprire di più su come configurare l'oggetto Secret per il certificato CA, consulta Configurare l'autorità di certificazione.

    Per una spiegazione dei campi e un elenco completo di quelli che puoi aggiungere al campo spec, consulta Campi RootSync.

  5. Applica la configurazione RepoSync:

    kubectl apply -f repo-sync.yaml
    
  6. Per verificare la configurazione, utilizza kubectl get su uno degli oggetti nell'origine con ambito di spazio dei nomi. Ad esempio:

    kubectl get rolebindings -n NAMESPACE
    
  7. Puoi ripetere i passaggi precedenti se devi configurare più fonti attendibili con ambito di spazio dei nomi .

Verificare lo stato di sincronizzazione della fonte attendibile

Puoi utilizzare il comando nomos status per esaminare lo stato di sincronizzazione dell'origine attendibile:

nomos status

Dovresti vedere un output simile al seguente esempio:

my_managed_cluster-1
  --------------------
  <root>   git@github.com:foo-corp/acme/admin@main
  SYNCED   f52a11e4
  --------------------
  bookstore  git@github.com:foo-corp/acme/bookstore@v1
  SYNCED     34d1a8c8

In questo output di esempio, l'origine con ambito spazio dei nomi, in questo caso un repository Git, è configurata per uno spazio dei nomi denominato bookstore.

Verificare l'installazione di RootSync

Quando crei un oggetto RootSync, Config Sync crea un riconciliatore con il prefisso root-reconciler. Un riconciliatore è un pod di cui viene eseguito il deployment come deployment. Sincronizza i manifest da una fonte attendibile a un cluster.

Puoi verificare che l'oggetto RootSync funzioni correttamente controllando lo stato del deployment di root-reconciler:

kubectl get -n config-management-system deployment \
    -l configsync.gke.io/sync-name=ROOT_SYNC_NAME

Sostituisci ROOT_SYNC_NAME con il nome di RootSync.

Dovresti vedere un output simile al seguente esempio:

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
root-reconciler   1/1     1            1           3h42m

Per altri modi per esplorare lo stato dell'oggetto RootSync, vedi Monitoraggio di oggetti RootSync e RepoSync.

Verifica l'installazione di RepoSync

Quando crei un oggetto RepoSync, Config Sync crea un riconciliatore con il prefisso ns-reconciler-NAMESPACE, dove NAMESPACE è lo spazio dei nomi in cui hai creato l'oggetto RepoSync.

Puoi verificare che l'oggetto RepoSync funzioni correttamente controllando lo stato del deployment del riconciliatore dello spazio dei nomi:

kubectl get -n config-management-system deployment \
  -l configsync.gke.io/sync-name=REPO_SYNC_NAME \
  -l configsync.gke.io/sync-namespace=NAMESPACE

Sostituisci REPO_SYNC_NAME con il nome di RepoSync e NAMESPACE con lo spazio dei nomi in cui hai creato l'origine attendibile con ambito dello spazio dei nomi.

Per altri modi per esplorare lo stato dell'oggetto RepoSync, vedi Esplorare gli oggetti RootSync e RepoSync.

Rimuovere una fonte attendibile

Seleziona la scheda Metodo di controllo centrale o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.

Metodo di controllo centrale

Se hai utilizzato il metodo Controllare le fonti attendibili in una fonte attendibile principale, un amministratore centrale può seguire i due passaggi riportati di seguito per rimuovere una fonte attendibile:

  1. Decidi se eliminare o conservare le risorse gestite tramite gli oggetti RootSync e RepoSync.

    • Per eliminare tutte le risorse gestite dagli oggetti RootSync o RepoSync, sincronizza l'oggetto RootSync o RepoSync con una sorgente vuota. Ad esempio, un repository GitHub senza configurazioni. Se l'oggetto RootSync o RepoSync contiene un altro oggetto RootSync o RepoSync, l'oggetto RootSync o RepoSync interno deve prima essere sincronizzato con un repository Git vuoto.

    • Se hai attivato il webhook e vuoi conservare le risorse, disattiva la prevenzione della deriva per le risorse abbandonate. Se non hai attivato il webhook, non devi eseguire ulteriori passaggi per conservare le risorse.

  2. Rimuovi l'oggetto RootSync o RepoSync dalla fonte di riferimento.

Metodo API Kubernetes

Se hai utilizzato il metodo Controllare le origini attendibili con ambito spazio dei nomi con l'API Kubernetes, gli operatori delle applicazioni possono utilizzare i seguenti passaggi per rimuovere un'origine attendibile con ambito spazio dei nomi:

  1. Decidi se eliminare o conservare le risorse gestite tramite gli oggetti RootSync e RepoSync.

    • Per eliminare tutte le risorse gestite dagli oggetti RootSync o RepoSync, sincronizza l'oggetto RootSync o RepoSync con una sorgente vuota. Ad esempio, un repository GitHub senza configurazioni. Se l'oggetto RootSync o RepoSync contiene un altro oggetto RootSync o RepoSync, l'oggetto RootSync o RepoSync interno deve prima essere sincronizzato con un repository Git vuoto.

    • Se hai attivato il webhook e vuoi conservare le risorse, disattiva la prevenzione della deriva per le risorse abbandonate. Se non hai attivato il webhook, non devi eseguire ulteriori passaggi per conservare le risorse.

  2. Elimina l'oggetto RootSync o RepoSync eseguendo questo comando:

    kubectl delete -f FILE_NAME
    

    Sostituisci FILE_NAME con il nome del file di configurazione RootSync o RepoSync. Ad esempio, root-sync.yaml.

Passaggi successivi