-
Kustomize
Edistynyt taso
Tämä opas edellyttää hyvää Kubernetes-ympäristön tuntemusta. Siinä selitetään myös, miten komentoriviltä käytetään sisäänrakennettua ominaisuutta projektin eri ympäristöjen (Test, Staging, Prod, ...) käyttöönottoon.
Kustomize
Kustomize on samankaltainen kuin Helm; molemmat soveltuvat Kubernetes-elementtien, kuten palveluiden, deploymentien jne., paketointiin.
Helm voi toimia Kubernetesin/oc:n paketinhallintana samalla tavoin kuin apt tai yum Debianissa ja RedHatissa.
Suurin ero on se, että Helm käyttää templateja, kun taas Kustomize käyttää overlayta. Kustomizea kehittävät myös Kubernetes-tiimit, ja se on sisäänrakennettu oc- ja kubectl-ohjelmien tuoreisiin versioihin. Voit koostaa projektin tällä komennolla:
Sisäänrakennetusta työkalusta kuitenkin puuttuu joitakin ominaisuuksia. Tässä on luettelo komennoista, jotka ovat käytettävissä kustomize-työkalulla:
- build Koostaa kustomization-kohteen hakemistosta tai URL-osoitteesta
- cfg Komennot asetusten lukemiseen ja kirjoittamiseen
- completion Luo komentotulkin täydennysskriptin
- create Luo uuden kustomizationin nykyiseen hakemistoon
- edit Muokkaa kustomization-tiedostoa
- fn Komennot funktioiden suorittamiseen asetuksia vasten
- help Ohje mistä tahansa komennosta
- localize [Alpha] Luo lokalisoidun kopion kohde-kustomization-juuresta kohteeseen
- version Tulostaa kustomizen version
Voit asentaa työkalun myös erikseen. Komento koostamiseen kustomize-työkalulla on:
Koostaminen ei tee käyttöönottoa, vaan tulostaa vain stdout:iin.
Jos haluat ottaa kustomize-koosteen käyttöön, voit käyttää tätä komentoa:
Tässä on taulukko, jossa verrataan molempia ratkaisuja:
| Helm | Kustomize | |
|---|---|---|
| Plussat | - Template-funktiot ovat tehokkaita - Helm on paketinhallinta, kuten apt tai yum, mutta Kubernetesille - Saatavilla on jo suuri määrä valmiita chartteja, jotka voivat parantaa tuottavuutta |
- Sisäänrakennettu kubectl:iin versiosta v1.14 alkaen - Käyttää tavallista YAMLia - Ei ole templating-järjestelmä vaan YAMLin paikkausjärjestelmä |
| Miinukset | - Enemmän abstraktiokerroksia - Heikommin luettavat templatet - Vaatii ulkoisen riippuvuuden - Kansiorakenne |
- Helmin vahvuus on toimia paketinhallintana - Ei noudata DRY -periaatetta |
Milloin käyttää Kustomizea?
Helmin käyttö voi olla hankalaa, jos sovellustesi YAML-tiedostoissa on enemmän aaltosulkeita kuin substantiiveja. Kustomizen avulla voit työskennellä useiden YAML-tiedostojen kanssa. Se voi olla hyvä vaihtoehto käyttämällä overlayta templatejen sijaan.
Mitä overlayt ovat?
Overlayt ovat kustomizationeja (kustomization.yaml), jotka voivat riippua toisesta kustomizationista. Ne voivat sisältää uusia resurssimanifesteja tai paikkauksia olemassa oleviin.
Esimerkki
Katsotaan esimerkkiä siitä, miten kustomize toimii. Käytämme tätä repoa: https://github.com/CSCfi/kustomize-openshift
Jos tarkastelemme hakemistoa, näemme tämän:
├── base
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ ├── nginx-imagestream.yaml
│ ├── pvc.yaml
│ ├── route.yaml
│ └── service.yaml
├── overlays
│ └── production
│ ├── db.yaml
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ ├── pvc.yaml
│ └── route.yaml
└── README.md
3 directories, 12 files
Meillä on base- ja overlays-kansiot. Overlays-kansion sisältä löytyy toinen kansio nimeltä production.
Aloittaaksesi kustomizen käytön sinun täytyy luoda kustomization.yaml-tiedosto. Luo kustomization-tiedosto tällä komennolla (valinnainen):
Tässä on base-kansion sisällä olevan kustomization-tiedoston sisältö:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
metadata:
name: arbitrarky
resources:
- pvc.yaml
- deployment.yaml
- nginx-imagestream.yaml
- service.yaml
- route.yaml
Huomaat resources-avaimen, jonka arvoina on eri yaml-tiedostoja. Resurssi on juureen suhteutettu polku YAML- tai JSON-tiedostoon, joka kuvaa k8s API -objektia.
Ja nyt katsotaan overlays/production-hakemistossa olevan kustomization.yaml-tiedoston sisältöä:
resources:
- ../../base
patchesStrategicMerge:
- pvc.yaml
- route.yaml
configMapGenerator:
- name: dbparams
files:
- db.yaml
Käytännössä, jos suoritat komennon oc kustomize base tai kustomize build base, saat tulosteeksi tiedostojen pvc.yaml, deployment.yaml, service.yaml ja route.yaml sisällön.
Jos taas suoritat saman komennon kuin yllä, mutta käytät base-hakemiston sijaan overlays/production-hakemistoa, saat saman tulosteen mutta mukana on myös uutta sisältöä, kuten configMap sekä muutoksia tiedostoihin pvc.yaml ja route.yaml:
+apiVersion: v1
+data:
+ db.yaml: |
+ user: pepe
+ password: pardo
+kind: ConfigMap
+metadata:
+ name: dbparams-btb7dgb89t
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: html
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
- storage: 500Mi
status: {}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: html
spec:
resources:
requests:
+ storage: 1Gi
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: nginx
spec:
- host: example.2.rahtiapp.fi
tls:
insecureEdgeTerminationPolicy: Redirect
termination: edge
to:
kind: Service
weight: 100
name: nginx
status:
ingress: []
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: nginx
spec:
+ host: t-test-kustomize.2.rahtiapp.fi
Mitä tämä tarkoittaa?
Näet, että käyttämällä overlayta voit paikata tiedostosi muokkaamatta alkuperäisiä. Ainoa tehtävä on lisätä eri arvot niihin kohtiin, joita haluat muuttaa, ja ottaa overlayt käyttöön.
Overlayiden avulla voit pitää useita tiedostoja järjestettyinä kansioihin. Esimerkiksi jos sinun täytyy muuttaa joitakin arvoja yaml-tiedostossa tuotantoympäristöä varten, voit tehdä sen helposti käyttämällä overlayta ilman, että pääasialliset tiedostosi muuttuvat. Voit myös luoda toisen kansion, esimerkiksi nightly, beetatestausta varten ja lisätä sinne eri arvot.
Ottaaksesi overlayn käyttöön, käytä tätä komentoa:
On myös mahdollista poistaa kaikki overlayn luoma tällä komennolla: