Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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:

oc kustomize build FOLDER

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:

kustomize build FOLDER

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:

kustomize build FOLDER | oc apply -f -

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

kustomize create

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:

oc apply -k overlays/production

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

oc delete -k overlays/production

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta