Questa pagina spiega come configurare più di una fonte attendibile basata su ambito a livello di radice e dello spazio dei nomi creando oggetti RootSync e RepoSync.
Avere una fonte attendibile consente di sincronizzare con ambito cluster con ambito con ambito a livello di spazio dei nomi. Una fonte attendibile principale può utilizzare credenziali a livello di amministratore per applicare i criteri agli spazi dei nomi delle applicazioni e sostituire le modifiche locali che si discostano dallo stato dichiarato nelle configurazioni. Un amministratore centrale solitamente gestisce le origini di verità principali.
Le fonti attendibili basate sullo spazio dei nomi sono facoltative e possono contenere configurazioni basate sullo spazio dei nomi sincronizzate con un determinato spazio dei nomi nei cluster. Puoi delegare la configurazione e il controllo di una verità di riferimento basata sul nome del dominio a utenti non amministrativi. Sebbene Config Sync rileva automaticamente le modifiche dalla fonte attendibile, puoi aggiungi un ulteriore livello di rilevamento della deviazione aggiungendo un webhook di ammissione a basata sullo spazio dei nomi. Per maggiori dettagli su come eseguire questa operazione, consulta Prevenire le deviazioni dalla configurazione.
Prima di iniziare
- Crea o assicurati di avere accesso a una fonte di riferimento non strutturata che possa contenere le configurazioni con cui Config Sync esegue la sincronizzazione. Config Sync supporta Repository Git, grafici Helm e immagini OCI come fonte attendibile. Le fonti attendibili basate sullo spazio dei nomi devono utilizzare il formato non strutturato.
- Crea o assicurati di avere accesso a un cluster che si trova in una versione Google Kubernetes Engine (GKE) Enterprise piattaforma e versione supportate e soddisfa i requisiti requisiti per Config Sync.
Limitazioni
NamespaceSelectors
(incluse le annotazioni che rimandano ai selettori) funzionano solo in un'origine di verità principale.- Se
ha installato Config Sync utilizzando la console Google Cloud o Google Cloud CLI,
Config Sync ha creato automaticamente un oggetto RootSync denominato
root-sync
. Per questo motivo, non puoi assegnare il nomeroot-sync
a nessuno dei tuoi oggetti RootSync.
Scegli il metodo di configurazione che preferisci
Scegli tra uno dei due metodi per configurare le origini:
Controlla le fonti in una fonte principale di riferimento. Questo metodo centralizza tutte le configurazioni di una fonte di riferimento in un una fonte attendibile, che consente a un amministratore centrale di avere il controllo completo della configurazione.
Controlla le origini con l'API Kubernetes. Utilizza questo metodo se vuoi delegare il controllo della tua fonte attendibile a diversi proprietari.
Controlla le origini in una fonte attendibile
Controlla le origini principali in una fonte attendibile
Config Sync supporta la sincronizzazione da più fonti attendibili. Il fulcro amministratore può utilizzare una fonte di riferimento principale per gestire tutte le altre. Poiché Config Sync gestisce gli oggetti RootSync, questo metodo impedisce qualsiasi modifiche alle configurazioni RootSync nel cluster.
Per utilizzare questo metodo, completa le seguenti attività:
Salva uno dei seguenti manifest come
root-sync.yaml
. Utilizza la versione del manifest corrispondente al tipo di origine per le 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 del tuo sistema RootSync .ROOT_FORMAT
: aggiungiunstructured
per utilizzare un repository non strutturato o aggiungihierarchy
per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito èhierarchy
. Ti consigliamo di aggiungereunstructured
poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.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) da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èHEAD
. A partire dalla versione 1.17.0 di Config Sync, puoi anche specificare un nome del ramo nel camporevision
. Quando utilizzi un hash nella versione 1.17.0 o successive, 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
. A partire dalla versione 1.17.0 di Config Sync, ti consigliamo di utilizzare il camporevision
per specificare un nome ramo la semplicità. Se il camporevision
e il campobranch
sono entrambi specificato,revision
ha la precedenza subranch
.ROOT_DIRECTORY
: aggiungi il percorso nel repository Git alla directory principale contenente la configurazione con cui vuoi eseguire la sincronizzazione. 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'autenticazionessh
: usa una coppia di chiavi SSHcookiefile
: utilizza uncookiefile
token
: utilizza un tokengcpserviceaccount
: utilizza un account di servizio Google per accedere a Cloud Source Repositories.gcenode
: utilizza un account di servizio Google per accedere a un Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitato nel tuo cluster.
Per ulteriori informazioni su questi tipi di autenticazione, consulta Concessione dell'accesso a Config Sync di sola lettura a Git.
Questo campo è obbligatorio.
ROOT_EMAIL
: se hai aggiuntogcpserviceaccount
comeROOT_AUTH_TYPE
, aggiungi il tuo indirizzo email dell'account del 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 sutrue
. 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 sotto una chiave denominatacert
. 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 dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione 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
: aggiungiunstructured
per utilizzare un repository non strutturato ohierarchy
per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito èhierarchy
. Ti consigliamo di aggiungereunstructured
poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.ROOT_IMAGE
: l'URL dell'immagine OCI da utilizzare come repository root, ad esempioLOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Per impostazione predefinita, l'immagine viene estratta dal taglatest
, ma puoi estrarre le immagini anche tramiteTAG
oDIGEST
. SpecificaTAG
oDIGEST
inPACKAGE_NAME
:- Per eseguire il pull per
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Per eseguire il pull per
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Per eseguire il pull per
ROOT_DIRECTORY
: aggiungi il percorso nel repository alla directory principale contenente la configurazione che vuoi 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'autenticazionegcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se la federazione delle identità per i carichi di lavoro per GKE non è abilitata nel tuo cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
ROOT_EMAIL
: se hai aggiuntogcpserviceaccount
comeROOT_AUTH_TYPE
, aggiungi il tuo indirizzo email dell'account del 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 provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA sotto una chiave denominatacert
. Questo campo è facoltativo.
Per saperne di più su come configurare l'oggetto Secret per la CA certificato, consulta Configurare l'autorità di certificazione
Per una spiegazione dei campi e un elenco completo dei campi che puoi aggiungere al campo
spec
, consulta Campi RootSync.Questo file 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 del tuo sistema RootSync .ROOT_FORMAT
: aggiungiunstructured
per utilizzare un repository non strutturato ohierarchy
per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito èhierarchy
. Ti consigliamo di aggiungereunstructured
perché questo formato ti consente di organizzare le configurazioni nel modo più pratico per te.ROOT_HELM_REPOSITORY
: l'URL dell'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 grafico Helm. Questo campo è obbligatorio.HELM_CHART_VERSION
: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, l'ultima versione è in uso.HELM_RELEASE_NAME
: il nome della release 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 contengononamespace: {{ .Release.Namespace }}
nei modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinitoconfig-management-system
.HELM_INCLUDE_CRDS
: impostato sutrue
se vuoi che il modello Helm generi anche un CustomResourceDefinition. Questo è facoltativo. Se non viene specificato alcun valore, il valore predefinito èfalse
e non verrà generato un CRD.VALUE
: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo come quello del file helm chart's values.yaml. Questo campo è facoltativo.ROOT_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionetoken
: utilizza un nome utente e una password per accedere a un repository Helm privato.gcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se La federazione delle identità per i carichi di lavoro per GKE non è abilitata nel cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
ROOT_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoROOT_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio:acm@PROJECT_ID.iam.gserviceaccount.com
.ROOT_SECRET_NAME
: aggiungi il nome del tuo secret setoken
è ilROOT_AUTH_TYPE
. Questo campo è facoltativo.ROOT_CA_CERT_SECRET_NAME
: aggiungi il nome del tuo Secret. Se questo campo è impostato, il tuo provider Helm deve utilizzare un'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominatacert
. Questo campo è facoltativo.
Per saperne di più su come configurare l'oggetto Secret per la CA certificato, consulta Configurare l'autorità di certificazione
Per una spiegazione dei campi e un elenco completo dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione Campi RootSync.Questo manifest crea un oggetto
RootSync
che utilizza Helm come origine.Esegui il commit delle modifiche alla fonte attendibile principale:
git add . git commit -m 'Setting up a new root source of truth.' git push
Puoi ripetere i passaggi precedenti se devi configurare più origini principali. Puoi inoltre memorizzare le configurazioni di più oggetti RootSync in una cartella sorgente attendibile sincronizzata da un altro oggetto RootSync, per gestire più Esegui il RootSync degli oggetti a livello centrale in modo GitOps.
Controlla gli oggetti con ambito dello spazio dei nomi in un'origine attendibile principale
Le fonti di dati attendibili con ambito a livello di spazio dei nomi possono essere gestite da una fonte attendibile. Poiché le origini con ambito a livello di spazio dei nomi sono gestite da Config Sync, questo metodo impedisce qualsiasi modifica locale alle definizioni delle origini con ambito a livello di spazio dei nomi.
Per utilizzare questo metodo, completa le seguenti attività:
Nell'origine 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.Nella fonte principale di dati, crea una delle seguenti
RepoSync
nello stesso spazio dei nomi. Utilizza il manifest corrispondente al tipo di origine per le 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_REPOSITORY
: aggiungi l'URL del repository Git a da utilizzare come repository dello spazio dei nomi. Puoi inserire gli URL utilizzando il protocollo HTTPS HTTP(S) o SSH. Ad esempio:https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usi 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) da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èHEAD
. A partire da Config Sync versione 1.17.0, puoi anche specifica un nome ramo nel camporevision
. Quando utilizzi un hash nella versione 1.17.0 o successive, deve essere un hash completo e non una forma abbreviata.NAMESPACE_BRANCH
: aggiungi il ramo di il repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èmaster
. A partire dalla versione 1.17.0 di Config Sync, per semplicità è consigliato utilizzare il camporevision
per specificare un nome del ramo. Se il camporevision
e il campobranch
sono entrambi specificato,revision
ha la precedenza subranch
.NAMESPACE_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionessh
: usa una coppia di chiavi SSHcookiefile
: utilizza uncookiefile
token
: utilizza un tokengcpserviceaccount
: utilizza un account di servizio Google per accedere a un un repository in Cloud Source Repositories.gcenode
: usa 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 è abilitato nel tuo cluster.Per ulteriori informazioni su questi tipi di autenticazione, consulta Concessione dell'accesso a Config Sync di sola lettura a Git.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoNAMESPACE_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_SECRET_NAME
: aggiungi il nome che intendi assegnare al tuo secret. Questo campo è facoltativo.NAMESPACE_NO_SSL_VERIFY
: per disattivare la verifica del certificato SSL, imposta questo campo sutrue
. Il valore predefinito èfalse
.NAMESPACE_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il tuo provider Git deve utilizzare un'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominatacert
. 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 dei campi 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_IMAGE
: l'URL dell'immagine OCI da utilizzare come origine dello spazio dei nomi, ad esempioLOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Per impostazione predefinita, l'immagine viene estratta dal taglatest
, ma puoi recuperare le immagini in base aTAG
oDIGEST
. SpecificaTAG
oDIGEST
inPACKAGE_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
- Per estrarre per
NAMESPACE_DIRECTORY
: aggiungi il percorso nella directory di origine alla directory principale contenente la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory principale (/
) della fonte.NAMESPACE_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionegcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se la federazione delle identità per i carichi di lavoro per GKE non è abilitata nel tuo cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoROOT_AUTH_TYPE
, aggiungi l'indirizzo email del tuo 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 provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominatacert
. 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 dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_REPOSITORY
: l'URL dell'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 protocollo. Questo campo è obbligatorio.HELM_CHART_NAME
: aggiungi il nome del grafico Helm. Questo campo è obbligatorio.HELM_CHART_VERSION
: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, l'ultima versione è in uso.HELM_RELEASE_NAME
: il nome della release 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 contengononamespace: {{ .Release.Namespace }}
nei relativi modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinitoconfig-management-system
.HELM_INCLUDE_CRDS
: impostato sutrue
se vuoi che il modello Helm generi anche un CustomResourceDefinition. Questo è facoltativo. Se non viene specificato alcun valore, il valore predefinito èfalse
e non verrà generato un CRD.VALUE
: valori da utilizzare al posto dei valori predefiniti associati al grafico Helm. Formatta questo campo nello stesso modo come file helm chart's values.yaml. Questo campo è facoltativo.ROOT_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionetoken
: utilizza un nome utente e una password per accedere a un repository Helm privato.gcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se La federazione delle identità per i carichi di lavoro per GKE non è abilitata nel cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoROOT_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio:acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_SECRET_NAME
: aggiungi nome del tuo secret setoken
è l'ROOT_AUTH_TYPE
. Questo campo è facoltativo.NAMESPACE_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il tuo provider Helm deve utilizzare un'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA sotto una chiave denominatacert
. 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 dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione Campi RootSync.Se utilizzi
gcpserviceaccount
come tipo di autenticazione e non hai Federazione delle identità per i carichi di lavoro per GKE abilitata. Devi creare un'istanza Associazione dei criteri IAM tra l'account di servizio Kubernetes per ogni spazio dei nomi e l'account di servizio. Per istruzioni su come creare questa associazione, consulta Concedere l'accesso a Git.Nell'origine principale, dichiara una configurazione
RoleBinding
che concede il Autorizzazione dell'account di servizioSERVICE_ACCOUNT_NAME
per per gestire gli oggetti nello spazio dei nomi. Config Sync crea automaticamente l'account di servizioSERVICE_ACCOUNT_NAME
quando la configurazione di RepoSync viene sincronizzata con il cluster.Un
RoleBinding
può fare riferimento a unRole
nello stesso spazio dei nomi. In alternativa, unRoleBinding
può fare riferimento a unClusterRole
e associarlo allo spazio dei nomi delRoleBinding
. Sebbene sia necessario rispettare le principio del privilegio minimo concedendo autorizzazioni granulari a unRole
definito dall'utente, puoi definire unClusterRole
o utilizza ruoli rivolti agli utenti, e fare riferimento allo stessoClusterRole
in piùRoleBindings
diversi.ClusterRoles predefiniti
Puoi dichiarare un
RoleBinding
che fa riferimento a unClusterRole
predefinito, ad esempioadmin
oedit
. Per saperne di più, vedi Ruoli rivolti agli utenti.# ROOT_REPO/namespaces/NAMESPACE/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: CLUSTERROLE_NAME apiGroup: rbac.authorization.k8s.io
Sostituisci quanto segue:
NAMESPACE
: aggiungi il nome dello spazio dei nomi.SERVICE_ACCOUNT_NAME
: aggiungi il nome del l'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 tuo nome RepoSync èprod
, la classeSERVICE_ACCOUNT_NAME
sarebbens-reconciler-NAMESPACE-prod-4
. L'intero4
viene utilizzato perchéprod
contiene 4 caratteri.CLUSTERROLE_NAME
: aggiungi il nome del ruolo predefinito.
Ruoli definiti dall'utente
Puoi dichiarare un
ClusterRole
o unRole
concedendo un elenco di autorizzazioni a ogni risorsa gestita dall'oggettoRepoSync
. In questo modo, puoi impostare autorizzazioni granulari. Per ulteriori dettagli, consulta la sezione Riferimento alle risorse.Ad esempio, la seguente
ClusterRole
oRole
concede le autorizzazioni a gestire gli oggettiDeployment
eServiceAccount
.# 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: ["*"]
Per dichiarare un
RoleBinding
che fa riferimento aClusterRole
oRole
, crea l'oggetto seguente.RoleBinding
concede autorizzazioni aggiuntive per consentire a Config Sync di gestire le risorse basate sullo spazio dei nomi per un determinatoRepoSync
.# ROOT_REPO/namespaces/NAMESPACE/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: ROLE_KIND name: RECONCILER_ROLE apiGroup: rbac.authorization.k8s.io
Sostituisci quanto segue:
ROLE_KIND
: impostaClusterRole
oRole
.NAMESPACE
: aggiungi il nome dello spazio dei nomi.SERVICE_ACCOUNT_NAME
: aggiungi il nome del l'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 tuo nome RepoSync èprod
, la classeSERVICE_ACCOUNT_NAME
sarebbens-reconciler-NAMESPACE-prod-4
. Il numero intero4
viene utilizzato perchéprod
contiene 4 caratteri.RECONCILER_ROLE
: aggiungi il nome delClusterRole
oRole
.
Esegui il commit delle modifiche alla fonte attendibile principale:
git add . git commit -m 'Setting up a new namespace-scoped source of truth.' git push
Se necessario, crea un segreto in base al metodo di autenticazione che preferisci. Se hai utilizzato
none
come tipo di autenticazione, puoi saltare questo passaggio.Il secret deve soddisfare i seguenti requisiti:
- Crea il secret nello stesso spazio dei nomi di RepoSync.
- Il nome del segreto deve corrispondere al nome
spec.git.secretRef
definito inrepo-sync.yaml
. - Devi aggiungere la chiave pubblica del secret al provider Git.
Per verificare la configurazione, utilizza
kubectl get
su uno degli oggetti nell'origine dello spazio dei nomi. Ad esempio:kubectl get rolebindings -n NAMESPACE
Puoi ripetere i passaggi precedenti se devi configurare più di un'origine basata sullo 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 dello spazio dei nomi per nello spazio dei nomi. Le origini attendibili con ambito a livello di spazio dei nomi possono essere gestite in una fonte attendibile con ambito dello spazio dei nomi in lo stesso spazio dei nomi.
Per utilizzare questo metodo, completa le seguenti attività:
Nella fonte attendibile con ambito dello spazio dei nomi, crea una delle seguenti
RepoSync
nello stesso spazio dei nomi. Utilizza il manifest corrispondente al tipo di origine per le 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_REPOSITORY
: aggiungi l'URL del repository Git a da utilizzare come repository dello spazio dei nomi. Puoi inserire gli URL utilizzando il protocollo HTTPS HTTP(S) o SSH. Ad esempio:https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usi 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) da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èHEAD
. A partire da Config Sync versione 1.17.0, puoi anche specifica un nome ramo nel camporevision
. Quando utilizzi un hash nella versione 1.17.0 o successive, deve essere un hash completo e non una forma abbreviata.NAMESPACE_BRANCH
: aggiungi il ramo di il repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èmaster
. A partire dalla versione 1.17.0 di Config Sync, per semplicità è consigliato utilizzare il camporevision
per specificare un nome del ramo. Se il camporevision
e il campobranch
sono entrambi specificato,revision
ha la precedenza subranch
.NAMESPACE_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionessh
: usa una coppia di chiavi SSHcookiefile
: utilizza uncookiefile
token
: utilizza un tokengcpserviceaccount
: utilizza un account di servizio Google per accedere a un un repository in Cloud Source Repositories.gcenode
: usa un account di servizio Google per accedere a un repository in Cloud Source Repositories. Seleziona questa opzione solo se Federazione delle identità per i carichi di lavoro per GKE non è abilitato nel tuo cluster.Per ulteriori informazioni su questi tipi di autenticazione, consulta Concessione dell'accesso a Config Sync di sola lettura a Git.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
comeNAMESPACE_AUTH_TYPE
, aggiungi il tuo indirizzo email dell'account del servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_SECRET_NAME
: aggiungi il nome che vuoi assegnare al secret. Questo campo è facoltativo.NAMESPACE_NO_SSL_VERIFY
: per disattivare la verifica del certificato SSL, imposta questo campo sutrue
. 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 sotto una chiave denominatacert
. Questo campo è facoltativo.Per saperne di più su come configurare l'oggetto Secret per la CA certificato, consulta Configurare l'autorità di certificazione
Per una spiegazione dei campi e un elenco completo dei campi che che è possibile 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_IMAGE
: l'URL dell'immagine OCI da utilizzare come origine dello spazio dei nomi, ad esempioLOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Per impostazione predefinita, l'immagine viene estratta dal taglatest
, ma puoi recuperare le immagini in base aTAG
oDIGEST
. SpecificaTAG
oDIGEST
inPACKAGE_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
- Per estrarre per
NAMESPACE_DIRECTORY
: aggiungi il percorso nella directory di origine alla directory principale contenente la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory principale (/
) della fonte.NAMESPACE_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionegcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se la federazione delle identità per i carichi di lavoro per GKE non è abilitata nel tuo cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoROOT_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio:acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA sotto una chiave denominatacert
. Questo campo è facoltativo.Per saperne di più su come configurare l'oggetto Secret per la CA certificato, consulta Configurare l'autorità di certificazione
Per una spiegazione dei campi e un elenco completo dei campi 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_REPOSITORY
: l'URL dell'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 protocollo. Questo campo è obbligatorio.HELM_CHART_NAME
: aggiungi il nome del grafico Helm. Questo campo è obbligatorio.HELM_CHART_VERSION
: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, l'ultima versione è in uso.HELM_RELEASE_NAME
: il nome della release 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 contengononamespace: {{ .Release.Namespace }}
nei modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinitoconfig-management-system
.HELM_INCLUDE_CRDS
: impostato sutrue
se vuoi che il modello Helm generi anche un CustomResourceDefinition. Questo è facoltativo. Se non viene specificato alcun valore, il valore predefinito èfalse
e non verrà generato un CRD.VALUE
: valori da utilizzare al posto dei valori predefiniti associati al grafico Helm. Formatta questo campo nello stesso modo come file helm chart's values.yaml. Questo campo è facoltativo.ROOT_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionetoken
: utilizza un nome utente e una password per accedere a un repository Helm privato.gcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se La federazione delle identità per i carichi di lavoro per GKE non è abilitata nel cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoROOT_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_SECRET_NAME
: aggiungi nome del tuo secret setoken
è l'ROOT_AUTH_TYPE
. Questo campo è facoltativo.NAMESPACE_CA_CERT_SECRET_NAME
: aggiungi il nome del tuo Secret. Se questo campo è impostato, il tuo provider Helm deve utilizzare un'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominatacert
. 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 dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione Campi RootSync.Se utilizzi
gcpserviceaccount
come tipo di autenticazione e non hai Federazione delle identità per i carichi di lavoro per GKE abilitata. Devi creare un'istanza Associazione dei criteri IAM tra l'account di servizio Kubernetes per ogni spazio dei nomi e l'account di servizio. Per istruzioni su come creare questa associazione, consulta Concedere l'accesso a Git.Nell'origine principale, dichiara una configurazione
RoleBinding
che concede il Autorizzazione dell'account di servizioSERVICE_ACCOUNT_NAME
per per gestire gli oggetti nello spazio dei nomi. Config Sync crea automaticamente l'account di servizioSERVICE_ACCOUNT_NAME
quando La configurazione di RepoSync è sincronizzata con il cluster.Un
RoleBinding
può fare riferimento a unRole
nello stesso spazio dei nomi. In alternativa, unRoleBinding
può fare riferimento a unClusterRole
e associarlo allo spazio dei nomi delRoleBinding
. Anche se devi rispettare il principio del privilegio minimo concedendo autorizzazioni granulari a unRole
definito dall'utente, puoi definire unClusterRole
o utilizzare ruoli rivolti agli utenti, e fare riferimento allo stessoClusterRole
in piùRoleBindings
in spazi dei nomi diversi.ClusterRoles predefiniti
Puoi dichiarare un
RoleBinding
che fa riferimento a unClusterRole
predefinito, per ad esempioadmin
oedit
. Per scoprire di più, consulta Ruoli rivolti agli utenti.# ROOT_REPO/namespaces/NAMESPACE/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: CLUSTERROLE_NAME apiGroup: rbac.authorization.k8s.io
Sostituisci quanto segue:
NAMESPACE
: aggiungi il nome dello spazio dei nomi.SERVICE_ACCOUNT_NAME
: aggiungi il nome del l'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 tuo nome RepoSync èprod
, la classeSERVICE_ACCOUNT_NAME
sarebbens-reconciler-NAMESPACE-prod-4
. L'intero4
viene utilizzato perchéprod
contiene 4 caratteri.CLUSTERROLE_NAME
: aggiungi il nome del ruolo predefinito.
Ruoli definiti dall'utente
Puoi dichiarare
ClusterRole
oRole
concedendo un elenco di autorizzazioni per ogni risorsa gestita dall'oggettoRepoSync
. Ciò consente autorizzazioni granulari. Consulta: fare riferimento alle risorse per ulteriori dettagli.Ad esempio, la seguente
ClusterRole
oRole
concede le autorizzazioni a gestire gli oggettiDeployment
eServiceAccount
.# 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: ["*"]
Per dichiarare un
RoleBinding
che fa riferimento aClusterRole
oRole
, crea l'oggetto seguente.RoleBinding
concede autorizzazioni aggiuntive per consentire a Config Sync di gestire le risorse basate sullo spazio dei nomi per un determinatoRepoSync
.# ROOT_REPO/namespaces/NAMESPACE/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: ROLE_KIND name: RECONCILER_ROLE apiGroup: rbac.authorization.k8s.io
Sostituisci quanto segue:
ROLE_KIND
: impostaClusterRole
oRole
.NAMESPACE
: aggiungi il nome dello spazio dei nomi.SERVICE_ACCOUNT_NAME
: aggiungi il nome del l'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 tuo nome RepoSync èprod
, la classeSERVICE_ACCOUNT_NAME
sarebbens-reconciler-NAMESPACE-prod-4
. Il numero intero4
viene utilizzato perchéprod
contiene 4 caratteri.RECONCILER_ROLE
: aggiungi il nome delClusterRole
oRole
.
Esegui il commit delle modifiche alla fonte attendibile principale:
git add . git commit -m 'Setting up a new namespace-scoped source of truth.' git push
Se necessario, crea un segreto in base al metodo di autenticazione che preferisci. Se hai usato
none
come di autenticazione, puoi saltare questo passaggio.Il secret deve soddisfare i seguenti requisiti:
- Crea il secret nello stesso spazio dei nomi di RepoSync.
- Il nome del segreto deve corrispondere al nome
spec.git.secretRef
definito inrepo-sync.yaml
. - Devi aggiungere la chiave pubblica del secret al provider Git.
Per verificare la configurazione, utilizza
kubectl get
su uno degli oggetti in basata sullo spazio dei nomi. Ad esempio:kubectl get rolebindings -n NAMESPACE
Puoi ripetere i passaggi precedenti se devi configurare più di un'origine basata sul nome del dominio.
Controllare una verità oggettiva con l'API Kubernetes
In questo metodo, l'amministratore centrale delega la dichiarazione di altri oggettiRootSync
ad altri amministratori. Per RepoSync
oggetti, lo spazio
L'amministratore dichiara lo spazio dei nomi solo nella fonte attendibile principale e li delega
dichiarazione dell'oggetto RepoSync
all'operatore dell'applicazione.
Controllare più di una fonte attendibile principale
Altri amministratori possono controllare una fonte di riferimento principale svolgendo le seguenti attività:
Salva uno dei seguenti manifest come
root-sync.yaml
. Utilizza la versione del manifest corrispondente al tipo di origine per le 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
: aggiungiunstructured
per utilizzare un repository non strutturato o aggiungihierarchy
per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito èhierarchy
. Ti consigliamo di aggiungereunstructured
poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.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) da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èHEAD
. A partire dalla versione 1.17.0 di Config Sync, puoi anche specificare un nome del ramo nel camporevision
. Quando utilizzi un hash nella versione 1.17.0 o successive, 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
. A partire dalla versione 1.17.0 di Config Sync, ti consigliamo di utilizzare il camporevision
per specificare un nome ramo la semplicità. Se il camporevision
e il campobranch
sono entrambi specificato,revision
ha la precedenza subranch
.ROOT_DIRECTORY
: aggiungi il percorso nel repository Git alla directory principale contenente la configurazione con cui vuoi eseguire la sincronizzazione. 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'autenticazionessh
: usa una coppia di chiavi SSHcookiefile
: utilizza uncookiefile
token
: utilizza un tokengcpserviceaccount
: utilizza un account di servizio Google per accedere a 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 è abilitato nel tuo cluster.
Per ulteriori informazioni su questi tipi di autenticazione, consulta Concessione dell'accesso a Config Sync di sola lettura a Git.
Questo campo è obbligatorio.
ROOT_EMAIL
: se hai aggiuntogcpserviceaccount
comeROOT_AUTH_TYPE
, aggiungi il tuo indirizzo email dell'account del 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 sutrue
. Il valore predefinito èfalse
.ROOT_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il tuo provider Git deve utilizzare un'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA sotto una chiave denominatacert
. 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 dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione 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 del tuo sistema RootSync .ROOT_FORMAT
: aggiungiunstructured
per utilizzare un repository non strutturato o aggiungihierarchy
per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito èhierarchy
. Ti consigliamo di aggiungereunstructured
poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.ROOT_IMAGE
: l'URL dell'immagine OCI da utilizzare come repository root, ad esempioLOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Per impostazione predefinita, l'immagine viene estratta dal taglatest
, ma puoi estrarre le immagini anche tramiteTAG
oDIGEST
. SpecificaTAG
oDIGEST
inPACKAGE_NAME
:- Per eseguire il pull per
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Per eseguire il pull per
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Per eseguire il pull per
ROOT_DIRECTORY
: aggiungi il percorso nel repository alla directory principale contenente la configurazione che vuoi 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'autenticazionegcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se la federazione delle identità per i carichi di lavoro per GKE non è abilitata nel tuo cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
ROOT_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoROOT_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com
.ROOT_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominatacert
. 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 dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione 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 del tuo sistema RootSync .ROOT_FORMAT
: aggiungiunstructured
per utilizzare un repository non strutturato o aggiungihierarchy
per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito èhierarchy
. Ti consigliamo di aggiungereunstructured
poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.ROOT_HELM_REPOSITORY
: l'URL dell'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 grafico Helm. Questo campo è obbligatorio.HELM_CHART_VERSION
: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, l'ultima versione è in uso.HELM_RELEASE_NAME
: il nome della release 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 contengononamespace: {{ .Release.Namespace }}
nei modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinitoconfig-management-system
.HELM_INCLUDE_CRDS
: impostato sutrue
se vuoi che il modello Helm generi anche un CustomResourceDefinition. Questo è facoltativo. Se non viene specificato alcun valore, il valore predefinito èfalse
e non verrà generato un CRD.VALUE
: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo come quello del file helm chart's values.yaml. Questo campo è facoltativo.ROOT_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionetoken
: utilizza un nome utente e una password per accedere a un repository Helm privato.gcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se La federazione delle identità per i carichi di lavoro per GKE non è abilitata nel cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
ROOT_EMAIL
: se hai aggiuntogcpserviceaccount
comeROOT_AUTH_TYPE
, aggiungi il tuo indirizzo email dell'account del servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com
.ROOT_SECRET_NAME
: aggiungi il nome del tuo secret setoken
è ilROOT_AUTH_TYPE
. Questo campo è facoltativo.ROOT_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il tuo fornitore Helm deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA sotto una chiave denominatacert
. Questo campo è facoltativo.
Per saperne di più su come configurare l'oggetto Secret per la CA certificato, consulta Configurare l'autorità di certificazione
Per una spiegazione dei campi e un elenco completo dei campi che puoi aggiungere al campo
spec
, consulta Campi RootSync.Questo manifest crea un oggetto
RootSync
che utilizza Helm come origine.Applica le modifiche:
kubectl apply -f root-sync.yaml
Puoi ripetere i passaggi precedenti se devi configurare più di una fonte attendibile principale.
Controlla le fonti attendibili basate sullo spazio dei nomi
Attività dell'amministratore centrale
L'amministratore centrale completa le seguenti attività:
Nella fonte attendibile principale, dichiara una configurazione
namespace
per le origini basate sullo 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.Nella fonte principale dei dati, dichiara un
RoleBinding
per fornire delle autorizzazioni degli operatori delle applicazioni. Utilizza la prevenzione della riassegnazione RBAC per assicurarti che l'operatore dell'applicazione non possa in un secondo momento applicare una associazione di ruoli con autorizzazioni non concesse da questa associazione.Per dichiarare la risorsa 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 nella sorgente attendibile principale.USERNAME
: aggiungi il nome utente dell'operatore dell'applicazione.OPERATOR_ROLE
: in qualità di amministratore centrale, puoi impostareOPERATOR_ROLE
per applicare i tipi di configurazioni che possono essere sincronizzati dall'origine basata sullo spazio dei nomi. Puoi scegliere uno dei seguenti ruoli:Un ClusterRole predefinito:
admin
edit
Per scoprire di più, consulta Ruoli rivolti agli utenti.
Un ClusterRole o Ruolo definito dall'utente dichiarato nella fonte attendibile principale. Questo consente autorizzazioni granulari.
Esegui il commit delle modifiche alla fonte attendibile principale:
git add . git commit -m 'Setting up new namespace-scoped source of truth.' git push
Attività degli operatori delle applicazioni
L'operatore dell'applicazione può controllare le origini con ambito dello spazio dei nomi completando le seguenti attività:
Dichiara una configurazione
RoleBinding
che concede il provisioning automatico Autorizzazione per l'account di servizioSERVICE_ACCOUNT_NAME
per gestire gli oggetti nello spazio dei nomi. Config Sync crea automaticamente l'account di servizioSERVICE_ACCOUNT_NAME
quando la configurazioneRepoSync
viene sincronizzata con il cluster.Per dichiarare la risorsa 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 nella sorgente attendibile principale.SERVICE_ACCOUNT_NAME
: aggiungi il nome dell'account di servizio del riconciliatore. Se il nome RepoSync èrepo-sync
,SERVICE_ACCOUNT_NAME
èns-reconciler-NAMESPACE
. Altrimenti,ns-reconciler-NAMESPACE-REPO_SYNC_NAME
.RECONCILER_ROLE
: come operatore dell'applicazione che puoi impostareRECONCILER_ROLE
per applicare quali tipi di configurazione possono essere sincronizzati dall'origine basata sullo spazio dei nomi. Puoi limitare ulteriormente solo l'insieme di autorizzazioni che ti sono state concesse dall'amministratore centrale. Di conseguenza, questo ruolo non può essere più permissivo delOPERATOR_ROLE
dichiarati dall'amministratore centrale nel sezione precedente.
Applica la configurazione del RoleBinding:
kubectl apply -f sync-rolebinding.yaml
Se necessario, crea un secret. in base al metodo di autenticazione preferito. Se hai usato
none
come di autenticazione, puoi saltare questo passaggio.Il segreto deve soddisfare i seguenti requisiti:
- Crea il segreto nello stesso spazio dei nomi di RepoSync.
- Il nome del secret deve corrispondere al nome
spec.git.secretRef
che hai definito nel mese diroot-sync.yaml
. - Devi aggiungere la chiave pubblica del secret al provider Git.
Dichiara una configurazione
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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_REPOSITORY
: aggiungi l'URL del repository Git a da utilizzare come repository dello spazio dei nomi. Puoi inserire gli URL utilizzando il protocollo HTTPS HTTP(S) o SSH. Ad esempio:https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usi 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) da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èHEAD
. A partire da Config Sync versione 1.17.0, puoi anche specifica un nome ramo nel camporevision
. Quando utilizzi un hash nella versione 1.17.0 o successive, deve essere un hash completo e non una forma abbreviata.NAMESPACE_BRANCH
: aggiungi il ramo di il repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èmaster
. A partire dalla versione 1.17.0 di Config Sync, per semplicità è consigliato utilizzare il camporevision
per specificare un nome del ramo. Se il camporevision
e il campobranch
sono entrambi specificato,revision
ha la precedenza subranch
.NAMESPACE_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionessh
: usa una coppia di chiavi SSHcookiefile
: utilizza uncookiefile
token
: utilizza un tokengcpserviceaccount
: utilizza un account di servizio Google per accedere a un un repository in Cloud Source Repositories.gcenode
: usa 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 è abilitato nel tuo cluster.Per ulteriori informazioni su questi tipi di autenticazione, consulta Concessione dell'accesso a Config Sync di sola lettura a Git.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoNAMESPACE_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_SECRET_NAME
: aggiungi il nome che intendi assegnare al tuo secret. Questo campo è facoltativo.NAMESPACE_NO_SSL_VERIFY
: per disattivare la verifica del certificato SSL, imposta questo campo sutrue
. 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'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominatacert
. Questo campo è facoltativo.Per saperne di più su come configurare l'oggetto Secret per la CA certificato, consulta Configurare l'autorità di certificazione
Per una spiegazione dei campi e un elenco completo dei campi che che è possibile 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_IMAGE
: l'URL dell'immagine OCI da utilizzare come origine dello spazio dei nomi, ad esempioLOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Per impostazione predefinita, l'immagine viene estratta dal taglatest
, ma puoi recuperare le immagini in base aTAG
oDIGEST
. SpecificaTAG
oDIGEST
inPACKAGE_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
- Per estrarre per
NAMESPACE_DIRECTORY
: aggiungi il percorso nella directory di origine alla directory principale contenente la configurazione da sincronizzare. Questo campo è facoltativo e il valore predefinito è la directory principale (/
) della fonte.NAMESPACE_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionegcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se la federazione delle identità per i carichi di lavoro per GKE non è abilitata nel tuo cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
come tuoROOT_AUTH_TYPE
, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio:acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA sotto una chiave denominatacert
. 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 dei campi 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 in tutto lo spazio dei nomi.NAMESPACE
: aggiungi il nome dello spazio dei nomi.NAMESPACE_REPOSITORY
: l'URL dell'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 protocollo. Questo campo è obbligatorio.HELM_CHART_NAME
: aggiungi il nome del grafico Helm. Questo campo è obbligatorio.HELM_CHART_VERSION
: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, l'ultima versione è in uso.HELM_RELEASE_NAME
: il nome della release 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 contengononamespace: {{ .Release.Namespace }}
nei modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinitoconfig-management-system
.HELM_INCLUDE_CRDS
: impostato sutrue
se vuoi che il modello Helm generi anche un CustomResourceDefinition. Questo è facoltativo. Se non viene specificato alcun valore, il valore predefinito èfalse
e non verrà generato un CRD.VALUE
: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo nello stesso modo come il file values.yaml del grafico Helm. Questo campo è facoltativo.ROOT_AUTH_TYPE
: aggiungi uno dei seguenti tipi di autenticazione:none
: non utilizzare l'autenticazionetoken
: utilizza un nome utente e una password per accedere a un repository Helm privato.gcenode
: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se La federazione delle identità per i carichi di lavoro per GKE non è abilitata nel cluster.gcpserviceaccount
: utilizza un account di servizio Google per accedere a un dell'immagine.
Questo campo è obbligatorio.
NAMESPACE_EMAIL
: se hai aggiuntogcpserviceaccount
comeROOT_AUTH_TYPE
, aggiungi il tuo indirizzo email dell'account del servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com
.NAMESPACE_SECRET_NAME
: aggiungi il nome del tuo secret setoken
è ilROOT_AUTH_TYPE
. Questo campo è facoltativo.NAMESPACE_CA_CERT_SECRET_NAME
: aggiungi il nome del segreto. Se questo campo è impostato, il tuo fornitore Helm deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA sotto una chiave denominatacert
. 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 dei campi che che è possibile aggiungere al campo
spec
, consulta la sezione Campi RootSync.Applica la configurazione
RepoSync
:kubectl apply -f repo-sync.yaml
Per verificare la configurazione, utilizza
kubectl get
su uno degli oggetti in con ambito nello spazio dei nomi. Ad esempio:kubectl get rolebindings -n NAMESPACE
Puoi ripetere i passaggi precedenti se devi configurare più fonti di riferimento basate sullo spazio dei nomi .
Verifica lo stato di sincronizzazione della fonte attendibile
Puoi utilizzare il comando nomos status
per controllare lo stato di sincronizzazione dell'origine attendibile:
nomos status
Dovresti vedere un output simile all'esempio seguente:
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 dello spazio dei nomi, in questo caso un repository Git,
è configurato per uno spazio dei nomi denominato bookstore
.
Verifica l'installazione di RootSync
Quando crei un oggetto RootSync, Config Sync crea un riconciliatore con
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 le stato del deployment del 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 all'esempio seguente:
NAME READY UP-TO-DATE AVAILABLE AGE
root-reconciler 1/1 1 1 3h42m
Per scoprire altri modi per esaminare lo stato dell'oggetto RootSync, consulta Monitoraggio di oggetti RootSync e RepoSync.
Verificare 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 del nome di spazio:
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 RepoSync e
sostituisci NAMESPACE
con lo spazio dei nomi che hai creato
la tua fonte attendibile con ambito nello spazio dei nomi.
Per altri modi per esaminare lo stato dell'oggetto RepoSync, consulta Esplorazione degli oggetti RootSync e RepoSync.
Rimuovere una fonte di riferimento
Seleziona la scheda Metodo di controllo centrale o Metodo API Kubernetes per visualizzarlo le relative istruzioni.
Metodo di controllo centralizzato
Se hai utilizzato il metodo Controllare le fonti attendibili in una fonte attendibile principale, un amministratore centrale può seguire i due passaggi che seguono per rimuovere una fonte attendibile:
Decidi se vuoi 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, il file RootSync interno o RepoSync deve prima sincronizzarsi con un repository Git vuoto.
Se hai attivato il webhook e vuoi conservare le tue risorse, disabilita la prevenzione della deviazione per le risorse abbandonate. Se non hai attivato il webhook, non è necessario eseguire altre per conservare le risorse.
Rimuovi l'oggetto RootSync o RepoSync dalla fonte attendibile.
Metodo API Kubernetes
Se hai utilizzato le origini attendibili con ambito dello spazio dei nomi di controllo con l'API Kubernetes , gli operatori delle applicazioni possono utilizzare i seguenti passaggi per rimuovere fonte di dati con ambito nello spazio dei nomi:
Decidi se vuoi 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, il file RootSync interno o RepoSync deve prima sincronizzarsi con un repository Git vuoto.
Se hai attivato il webhook e vuoi conservare le risorse, disattiva la prevenzione della deviazione per le risorse abbandonate. Se non hai attivato il webhook, non devi intraprendere altre azioni per conservare le risorse.
Elimina l'oggetto RootSync o RepoSync eseguendo il seguente comando:
kubectl delete -f FILE_NAME
Sostituisci
FILE_NAME
con il nome del tuo sistema RootSync o il file di configurazione di RepoSync. Ad esempio,root-sync.yaml
.
Passaggi successivi
- Scopri come evitare la deriva della configurazione nelle fonti attendibili basate sullo spazio dei nomi.
- Scopri come monitorare gli oggetti RootSync e RepoSync.
- Scopri come suddividere una fonte di dati in più fonti di dati.