Creazione del pacchetto di applicazioni per il riutilizzo in più ambienti con Kustomize
Nell'ambito di un'applicazione cloud-nativa a dodici fattori, si vuole mantenere la parità di dev-to-prod impostando una pipeline di sviluppo e consegna continua
che utilizzi una fonte di codice di base comune e controllata dalla versione. Nei repository della base di codice, vengono memorizzati i file manifest di configurazione delle risorse di Kubernetes, spesso in formato YAML. È possibile utilizzare
il progetto Kubernetes Kustomize sia per standardizzare che per personalizzare le distribuzioni in più ambienti.
Ad esempio, è possibile impostare un file YAML di base kustomization per dichiarare gli oggetti Kubernetes, come le distribuzioni e i PVC, condivisi negli ambienti di sviluppo, test e produzione. Successivamente, è possibile impostare
file YAML kustomization separati, con configurazioni personalizzate per ciascun ambiente, ad esempio un numero maggiore di repliche in produzione rispetto a quelle di test. Questi file YAML personalizzati possono essere sovrapposti,
o costruiti, sul file YAML di base condiviso, in modo da poter gestire ambienti per lo più identici, tranne che per alcune differenze di configurazione di sovrapposizione, controllate alla fonte. Per ulteriori informazioni su Kustomize, come
il glossario e le FAQ, consultare i documenti di Kustomize.
Prima di cominciare:
- Assicurati che il tuo
kubectlla versione corrisponde alla versione del tuo cluster. - Accedi al tuo account. Se applicabile, specifica il gruppo di risorse appropriato. Imposta il contesto per il tuo cluster.
Per configurare i file di configurazione con Kustomize:
-
Installare lo strumento
kustomize.- Per macOS, puoi utilizzare il gestore pacchetti
brew.brew install kustomize - Se utilizzi Windows, puoi utilizzare il gestore pacchetti
chocolatey.choco install kustomize
- Per macOS, puoi utilizzare il gestore pacchetti
-
Crea una directory per la tua applicazione in un sistema di controllo della versione, quale Git.
git init ~/<my_app> -
Creare la struttura del repo per la cartella
kustomizebasedirectory,overlaye le directory degli ambienti, come staging e produzione. Nei passi successivi, configuri questi repository per l'utilizzo conkustomize.mkdir -p ~/<my_app>/base && mkdir -p ~/<my_app>/overlay && mkdir -p ~/<my_app>/overlay/staging && mkdir -p ~/<my_app>/overlay/prodStruttura repo di esempio
. ├── base └── overlay ├── prod └── staging -
Configura il repository
base.-
Passa al repository di base.
cd ~/<my_app>/base -
Crea un insieme iniziale di file YAML di configurazione Kubernetes per la distribuzione della tua applicazione. Potresti usare il
waslibertyEsempio YAML per creare una distribuzione, un servizio, una mappa di configurazione e una richiesta di volume persistente. -
Creare un file
kustomizationche specifichi la configurazione di base da applicare a tutti gli ambienti. Il filekustomizationdeve includere l'elenco di file YAML di configurazione delle risorse di Kubernetes archiviate nello stesso repositorybase. Nel filekustomization, puoi anche aggiungere le configurazioni che si applicano a tutti i file YAML delle risorse nel repository di base, come ad esempio un prefisso o un suffisso aggiunto a tutti i nomi delle risorse, un'etichetta, lo spazio dei nomi esistente in cui tutte le risorse vengono create, i segreti, le mappe di configurazione e altro.apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: wasliberty namePrefix: kustomtest- nameSuffix: -v2 commonLabels: app: kustomized-wasliberty resources: - deployment.yaml - service.yaml - pvc.yaml - configmap.yaml - secret.yamlI nomi dei file YAML delle
resourcesdevono corrispondere a quelli degli altri file del repositorybase. Potresti includere più configurazioni nello stesso file, ma in questo esempio le configurazioni sono file distinti qualideployment.yaml,service.yamlepvc.yaml. -
Genera i file YAML delle risorse con le configurazioni che hai definito nel file YAML di base
kustomization. Le risorse vengono create combinando le configurazioni del filekustomizatione dei file YAML delle risorse. I file YAML combinati sono restituiti instdoutnell'output. Utilizzare questo stesso comando per generare qualsiasi modifica successiva apporti al file YAMLkustomization, quale l'aggiunta di una etichetta.kustomize build
-
-
Configura il tuo repository di sovrapposizioni con file YAML
kustomizationunivoci per ciascuno dei tuoi ambienti, quali gli ambienti di preparazione e produzione.-
Nel repository di preparazione, crea un file
kustomization.yaml. Aggiungi qualsiasi configurazione univoca per la preparazione, come ad esempio un'etichetta, una tag di immagine o un file YAML per un nuovo componente da testare.apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namePrefix: staging- commonLabels: env: staging owner: TeamA bases: - ../../base patchesStrategicMerge: - configmap.yaml - new_staging_resource.yaml resources: - new_staging_resource.yamlComprendere i componenti YAML Componente Descrizione namePrefixSpecificare un prefisso da allegare al nome di ogni risorsa che si vuole creare con il file di staging kustomization, come ad esempiostaging-.commonLabelsAggiungi etichette univoche per gli oggetti di preparazione, quali l'ambiente di preparazione e il team responsabile. basesAggiungere un percorso relativo a una directory o URL a un repo remoto che contiene un file di base kustomization. In questo esempio, il percorso relativo punta al file di basekustomizationnel repobase, creato in precedenza. Questo campo è obbligatorio per una sovrapposizionekustomization.patchesStrategicMergeElencare i file YAML di configurazione delle risorse che si desidera unire alla base kustomization. È necessario aggiungere questi file allo stesso repo del filekustomization, ad esempiooverlay/staging. Questi file di configurazione delle risorse possono contenere piccole modifiche che vengono fuse nei file di configurazione di base omonimi come se si trattasse di una patch. La risorsa ottiene tutti i componenti presenti nel file di configurazionebase, più eventuali componenti aggiuntivi specificati nel file di configurazioneoverlay. Se la configurazione è un nuovo file non presente nella base, è necessario aggiungere anche il nome del file nel camporesources.resourcesElenca qualsiasi file YAML di configurazione delle risorse univoco per la repository di preparazione non incluso nella repository di base. Includere anche questi file nel campo patchesStrategicMergee aggiungerli allo stesso repo del filekustomization, ad esempiooverlay/staging.Altre configurazioni possibili Per ulteriori configurazioni da aggiungere al file, vedere la sezione Creare un file kustomization. -
Genera i tuoi file di configurazione della sovrapposizione di preparazione.
kustomize build overlay/staging -
Ripeti questa procedura per creare il tuo file
kustomizationdi sovrapposizione del prodotto e altri file YAML di configurazione. Ad esempio, potresti aumentare il numero di repliche del tuo filedeployment.yaml, in modo che il tuo ambiente di produzione possa gestire più richieste degli utenti. -
Rivedi la struttura del tuo repository
kustomize, al fine di accertarti che includa tutti i file di configurazione YAML di cui necessiti. La struttura potrebbe essere simile al seguente esempio.├── base │ ├── configmap.yaml │ ├── deployment.yaml │ ├── kustomization.yaml │ ├── pvc.yaml │ ├── secret.yaml │ └── service.yaml └── overlay ├── prod │ ├── deployment.yaml │ ├── kustomization.yaml │ └── new_prod_resource.yaml └── staging ├── configmap.yaml ├── kustomization.yaml └── new_staging_resource.yaml
-
-
Applica le risorse Kubernetes per l'ambiente che desideri distribuire. Il seguente esempio utilizza il repository di preparazione.
- Passa alla directory di sovrapposizione di preparazione. Se non hai creato risorse nel passo precedente, creale ora.
cd overlay/staging && kustomize build - Applica le risorse Kubernetes al tuo cluster. Includere l'opzione
-ke la directory in cui si trova il filekustomization. Ad esempio, se ti trovi già nella directory di preparazione, includi../stagingper contrassegnare il percorso alla directory.
Output di esempiokubectl apply -k ../stagingconfigmap/staging-kustomtest-configmap-v2 created secret/staging-kustomtest-secret-v2 created service/staging-kustomtest-service-v2 created deployment.apps/staging-kustomtest-deployment-v2 created job.batch/staging-pi created persistentvolumeclaim/staging-kustomtest-pvc-v2 created - Controlla che le modifiche univoche della preparazione siano state applicate. Ad esempio, se hai aggiunto il prefisso
staging-, i pod e le altre risorse che hai creato possono includerlo nel loro nome.
Output di esempiokubectl get -k ../stagingNAME DATA AGE configmap/staging-kustomtest-configmap-v2 2 90s NAME TYPE DATA AGE secret/staging-kustomtest-secret-v2 Opaque 2 90s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/staging-kustomtest-service-v2 NodePort 172.21.xxx.xxx <none> 9080:30200/TCP 90s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/staging-kustomtest-deployment-v2 0/3 3 0 91s NAME COMPLETIONS DURATION AGE job.batch/staging-pi 1/1 41s 2m37s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/staging-kustomtest-pvc-v2 Pending ibmc-file-bronze 90s - Ripeti questa procedura per ciascun ambiente che vuoi generare.
- Passa alla directory di sovrapposizione di preparazione. Se non hai creato risorse nel passo precedente, creale ora.
-
Facoltativo: ripulisci il tuo ambiente, rimuovendo tutte le risorse che hai applicato con Kustomize.
kubectl delete -k <directory>Output di esempio
configmap "staging-kustomtest-configmap-v2" deleted secret "staging-kustomtest-secret-v2" deleted service "staging-kustomtest-service-v2" deleted deployment.apps "staging-kustomtest-deployment-v2" deleted job.batch "staging-pi" deleted persistentvolumeclaim "staging-kustomtest-pvc-v2" deleted