Edistynyt taso
Tämä opas vaatii hyvää Kubernetes-ympäristön tuntemusta. Se selittää myös, miten komentorivillä 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., niputtamiseen.
Helm voi toimia Kubernetesin/oc:n paketinhallintana samaan tapaan kuin apt tai yum Debianissa ja Red Hatissa.
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äänrakennettuna oc:n ja kubectl:in uusissa versioissa. 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:ssa:
- build Koosta kustomization-kohde hakemistosta tai URL-osoitteesta
- cfg Komennot asetusten lukemiseen ja kirjoittamiseen
- completion Luo komentotulkin täydennysskripti
- create Luo uusi kustomization 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 kohdesijaintiin
- version Tulostaa kustomizen version
Voit asentaa työkalun myös erikseen. Komento koostamiseen kustomize:lla on:
Koostaminen ei ota muutoksia käyttöön, vaan tulostaa ne vain stdout:iin.
Jos haluat ottaa kustomize-koosteen käyttöön, voit käyttää tätä komentoa:
Tässä on taulukko, joka vertaa molempia ratkaisuja:
| Helm | Kustomize | |
|---|---|---|
| Hyödyt | - Template-funktiot ovat tehokkaita - Helm on paketinhallinta, kuten apt tai yum, mutta Kubernetesille - Saatavilla on suuri määrä valmiita chartteja, jotka voivat parantaa tuottavuutta |
- Natiivisti mukana kubectl:ssa versiosta v1.14 alkaen - Käyttää tavallista YAMLia - Ei ole templating-järjestelmä vaan YAMLin paikkausjärjestelmä |
| Haitat | - Enemmän abstraktiokerroksia - Heikommin luettavat templatet - Vaatii ulkoisen riippuvuuden - Kansiorakenne |
- Helmin vahvuus on toimia paketinhallintana - Ei noudata DRY -periaatetta |
Milloin käyttää Kustomizea?
Helmiä voi olla hankala käyttää siten, että sovellustesi YAML-tiedostoissa on enemmän aaltosulkeita kuin substantiiveja. Kustomize antaa sinun työskennellä joukon 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 katsomme hakemistoa, siellä on tämä sisältö:
├── 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 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:n sijaan overlays/production, 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
Voit nähdä, että käyttämällä overlayta voit paikata tiedostojasi muokkaamatta alkuperäisiä. Ainoa tehtävä on lisätä eri arvot niihin kohtiin, joita haluat muuttaa, ja ottaa overlayt käyttöön.
Overlayden avulla voit järjestää useita tiedostoja kansioihin. Jos sinun esimerkiksi täytyy muuttaa joitakin arvoja YAML-tiedostossa tuotantoympäristöä varten, voit tehdä sen helposti käyttämällä overlayta vaikuttamatta päätiedostoihisi. Voit myös luoda toisen kansion, esimerkiksi
nightly, beetatestausta varten ja lisätä sinne eri arvoja.
Overlayn käyttöönotto tapahtuu tällä komennolla:
On myös mahdollista poistaa kaikki overlayn luoma tällä komennolla: