Utilizza un repository gerarchico

Questa pagina descrive in che modo Config Sync legge le configurazioni da una fonte attendibile gerarchica e applica la configurazione risultante ai tuoi automaticamente.

Se vuoi maggiore flessibilità strutturale (ad esempio, vuoi creare sottocartelle di risorse), puoi creare fonte di dati non strutturata. Non strutturati le fonti di dati attendibili sono consigliate per la maggior parte dei casi d'uso. Se utilizzi già una fonte di riferimento gerarchica, puoi convertirla in una fonte di riferimento non strutturata.

Per capire in che modo Config Sync utilizza un repository gerarchico, è utile se hai familiarità con i repository Git e la riga di comando git a riga di comando.

Struttura della directory

Per le origini gerarchiche, Config Sync sfrutta strutture simili a un file system e utilizza la directory per determinare quali cluster o spazi dei nomi a cui è pertinente una configurazione.

namespaces/

La directory namespaces/ contiene configurazioni per gli spazi dei nomi e l'ambito degli spazi dei nomi di oggetti strutturati. La struttura all'interno di namespaces/ è il meccanismo che guida ereditarietà dello spazio dei nomi. Puoi limitare gli spazi dei nomi che possono ereditare una configurazione utilizzando NamespaceSelector:

cluster/

La directory cluster/ contiene configurazioni che si applicano a interi cluster, anziché anziché agli spazi dei nomi. Per impostazione predefinita, si applicano tutte le configurazioni nella directory cluster/ in ogni cluster registrato in Config Sync. Puoi limitare su cui una configurazione può influire utilizzando ClusterSelector.

clusterregistry/

La directory clusterregistry/ è facoltativa e contiene configurazioni per ClusterSelectors. I ClusterSelector limitano i cluster a cui si applica una configurazione e in cui viene fatto riferimento disponibili nelle directory cluster/ e namespaces/.

system/

La directory system/ contiene le configurazioni per l'operatore.

Esempio di fonte di riferimento gerarchica

La seguente struttura di directory mostra come utilizzare Config Sync una sorgente di dati gerarchica per configurare un cluster Kubernetes team diversi, team-1 e team-2.

  • Ogni team ha il proprio spazio dei nomi Kubernetes, account di servizio Kubernetes, quote, criteri di rete, associazioni di ruoli.
  • L'amministratore del cluster configura un criterio in namespaces/limit-range.yaml per vincolare le allocazioni delle risorse (a pod o container) in entrambi gli spazi dei nomi.
  • L'amministratore del cluster configura anche ClusterRoles e ClusterRoleBinding.

Un'origine gerarchica di Config Sync valida deve includere tre sottodirectory: cluster/, namespaces/ e system/.

La directory cluster/ contiene configurazioni che si applicano a interi cluster (ad es. ClusterRole, ClusterRoleBinding), anziché agli spazi dei nomi.

La directory namespaces/ contiene le configurazioni per gli oggetti dello spazio dei nomi e basati sullo spazio dei nomi. Ogni sottodirectory in namespaces/ include il parametro per un oggetto spazio dei nomi e per tutti gli oggetti con ambito spazio dei nomi sotto nello spazio dei nomi. Il nome di una sottodirectory deve corrispondere al nome della sottodirectory nello spazio dei nomi. Oggetti con ambito a livello di spazio dei nomi che devono essere creati spazio dei nomi, può essere inserito direttamente sotto namespaces/ (ad esempio, namespaces/limit-range.yaml).

La directory system/ contiene le configurazioni per l'operatore ConfigManagement.

├── cluster
│   ├── clusterrolebinding-namespace-reader.yaml
│   ├── clusterrole-namespace-reader.yaml
│   ├── clusterrole-secret-admin.yaml
│   └── clusterrole-secret-reader.yaml
├── namespaces
│   ├── limit-range.yaml
│   ├── team-1
│   │   ├── namespace.yaml
│   │   ├── network-policy-default-deny-egress.yaml
│   │   ├── resource-quota-pvc.yaml
│   │   ├── rolebinding-secret-reader.yaml
│   │   └── sa.yaml
│   └── team-2
│       ├── namespace.yaml
│       ├── network-policy-default-deny-all.yaml
│       ├── resource-quota-pvc.yaml
│       ├── rolebinding-secret-admin.yaml
│       └── sa.yaml
├── README.md
└── system
    └── repo.yaml

Utilizza l'ereditarietà degli spazi dei nomi e spazi dei nomi astratti

Con una fonte di dati gerarchica, puoi utilizzare il concetto di spazio dei nomi l'ereditarietà per applicare automaticamente le configurazioni ai gruppi di spazi dei nomi in in cui questi spazi dei nomi esistenti (o devono esistere).

L'ereditarietà dello spazio dei nomi si applica a namespaces/ del repository gerarchico e di tutte le sue sottodirectory. Configurazioni in altre directory nel repository, ad esempio cluster/, non sono soggette ereditarietà.

In una fonte di riferimento gerarchica, La directory namespaces/ può contenere due diversi tipi di sottodirectory:

  • Una directory dello spazio dei nomi contiene una configurazione per uno spazio dei nomi. Il nome del contenente la configurazione non è importante, ma quest'ultima deve avere kind: Namespace. Una directory dello spazio dei nomi può anche contenere configurazioni per e altri tipi di oggetti Kubernetes. Una directory dello spazio dei nomi non può contenere nelle sottodirectory. Una configurazione dello spazio dei nomi rappresenta uno spazio dei nomi effettivo in un cluster Kubernetes.

  • Una directory dello spazio dei nomi astratta contiene directory dello spazio dei nomi. Può contiene anche configurazioni per altri oggetti Kubernetes, ma non può una configurazione per uno spazio dei nomi. Una directory dello spazio dei nomi astratto rappresenta un oggetto in un cluster Kubernetes, ma lo spazio dei nomi discendente delle directory d'uso.

Per assicurarti che le origini dello spazio dei nomi e quelle astratte abbiano lo tipo di configurazioni e struttura corretto, errore KNV1003: LegalNamespaceSubdirectoryError segnala quando c'è un problema.

Le configurazioni in una directory dello spazio dei nomi si applicano solo a questo spazio dei nomi. Tuttavia, le configurazioni in una directory dello spazio dei nomi astratto viene applicata a tutti directory dei nomi discendenti (o quegli spazi dei nomi discendenti che corrispondono a della configurazione NamespaceSelector, se presente).

L'ereditarietà di una configurazione nella directory namespaces/ si basa in gran parte nella sua posizione all'interno della struttura di directory nella fonte attendibile. Per capire quali vengono applicate a un determinato spazio dei nomi in un dato cluster, sfoglia il Repository di esempio sull'ereditarietà dello spazio dei nomi.

Spazi dei nomi limitati

config-management-system è uno spazio dei nomi limitato. Non puoi utilizzarla come una directory dello spazio dei nomi astratta. Puoi definire config-management-system, ma l'unico tipo di risorsa consentito per lo spazio dei nomi config-management-system è RootSync.

Apportare modifiche alla fonte di riferimento

Quando apporti una modifica all'origine dati, che crea o elimina le directory dello spazio dei nomi all'interno namespaces/, potresti ricevere risultati imprevisti a seconda dell'azione:

  • Creazione di una directory: quando una gerarchia namespaces/ valida si impegna nella fonte attendibile, Config Sync crea spazi dei nomi e e poi crea oggetti Kubernetes in quegli spazi dei nomi per ogni configurazione che contiene o eredita.
  • Eliminazione di una directory: l'eliminazione di una directory dello spazio dei nomi un'operazione distruttiva. Lo spazio dei nomi e i suoi contenuti vengono eliminati su ogni cluster gestito da Config Sync in cui esiste lo spazio dei nomi. Se Elimina una directory dello spazio dei nomi astratto contenente lo spazio dei nomi discendente directory, tutti questi spazi dei nomi e i loro contenuti vengono eliminati in ogni cluster gestito da Config Sync.
  • Rinominando una directory: la ridenominazione di una directory dello spazio dei nomi è un'eliminazione, seguita da ed è considerata un'operazione distruttiva. Ridenominazione di uno spazio dei nomi astratto non ha alcun effetto visibile all'esterno.

  • Spostamento di una directory: spostamento di uno spazio dei nomi o di una directory dello spazio dei nomi astratto all'interno di namespaces/ non elimina lo spazio dei nomi o gli oggetti al suo interno, ad eccezione di quando lo spazio dei nomi avvia o interrompe l'ereditarietà di una configurazione da una directory dello spazio dei nomi astratta, a una modifica della gerarchia.

Passaggi successivi