Hyppää sisältöön

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:

oc kustomize build FOLDER

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:

kustomize build FOLDER

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:

kustomize build FOLDER | oc apply -f -

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):

kustomize create

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
Mitä tämä tarkoittaa?
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:

oc apply -k overlays/production

On myös mahdollista poistaa kaikki overlayn luoma tällä komennolla:

oc delete -k overlays/production
Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .