Paketinhallinta ja arjen työkalut
Helm ja Rancher Catalog, Kustomize sekä podien logitus ja debuggaus kubectl-työkaluilla.
Paketinhallinta ja arjen työkalut
Tässä osiossa opit hallitsemaan sovelluksia korkeammalla tasolla Helmillä ja Rancherin Apps/Catalog -näkymästä, muokkaamaan valmiita manifesteja Kustomizella sekä käyttämään arjen työkaluja podien logitukseen ja debuggaukseen. Lopuksi asennat valmiin sovelluksen Helm-chartilla ja ylikirjoitat sen arvoja.
1. Miksi paketinhallintaa tarvitaan?
Yksittäisen sovelluksen käyttöönotto voi tarkoittaa kymmeniä YAML-manifesteja (Deployment, Service, Ingress, ConfigMap, Secret…). Niiden ylläpito käsin on työlästä ja virhealtista.
Paketinhallinta ratkaisee tämän:
- niputtaa sovelluksen kaikki resurssit yhdeksi paketiksi,
- mahdollistaa versioinnin, parametroinnin ja uudelleenkäytön,
- tekee asennuksesta, päivityksestä ja poistosta toistettavaa.
Kuberneteksessa yleisin ratkaisu on Helm.
2. Helm-paketinhallinta
Helm on Kuberneteksen paketinhallinta. Keskeiset käsitteet:
- Chart – paketti, joka sisältää sovelluksen manifestit mallipohjina (templates) ja
oletusarvot (
values.yaml). - Release – chartista klusteriin asennettu instanssi (voit asentaa saman chartin monta kertaa eri nimillä).
- Repository – kokoelma chartteja, joista niitä ladataan.
- Values – parametrit, joilla chartin oletusarvot ylikirjoitetaan.
flowchart LR
REPO[Helm-repository] --> CHART[Chart + values.yaml]
VALUES[Omat arvot] --> CHART
CHART -->|helm install| REL[Release]
REL --> K8S[Kubernetes-objektit:<br/>Deployment, Service, ...]Chartin rakenne pähkinänkuoressa:
mychart/
├── Chart.yaml # chartin metatiedot (nimi, versio)
├── values.yaml # oletusarvot
└── templates/ # manifestimallit (käyttävät arvoja)Yleisimmät komennot:
# Lisää ja päivitä repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Asenna, päivitä, listaa, poista
helm install web bitnami/nginx
helm upgrade web bitnami/nginx --set replicaCount=3
helm list
helm uninstall web
# Peruuta edelliseen versioon
helm rollback web 13. Rancher Catalog ja Apps
Rancher tarjoaa Helm-chartit graafisesti Apps-näkymässä (aiemmin Catalog):
- Apps → Charts – asennettavat sovellukset esikonfiguroiduista repositorioista.
- Apps → Repositories – omien Helm-repositorioiden lisääminen.
- Asennuksen yhteydessä Rancher näyttää chartin arvot lomakkeena tai YAML-editorina, jolloin voit ylikirjoittaa ne ilman komentoriviä.
Taustalla Rancher käyttää samaa Helmiä – Apps-näkymästä asennettu sovellus näkyy myös
komennolla helm list.
4. Kustomize
Kustomize on template-vapaa tapa muokata valmiita manifesteja. Se on sisäänrakennettu
kubectl-työkaluun (kubectl apply -k).
- base – yhteiset perusmanifestit.
- overlays – ympäristökohtaiset muutokset (esim.
dev,prod), jotka patchaavat basea. - Kaikki kootaan
kustomization.yaml-tiedostolla.
base/
├── deployment.yaml
├── service.yaml
└── kustomization.yaml
overlays/
└── prod/
└── kustomization.yaml # viittaa baseen ja tekee muutokset# Rakenna ja ota käyttöön overlay
kubectl apply -k overlays/prodHelm vs. Kustomize: Helm parametroi mallipohjilla ja arvoilla; Kustomize muokkaa olemassa olevia manifesteja patchaamalla. Molempia voi käyttää myös yhdessä.
5. Arjen työkalut: logitus ja debuggaus
Kun sovellus ei toimi odotetusti, näillä kubectl-komennoilla selvität syyn:
# Podin lokit (seuraa reaaliaikaisesti -f, edellinen käynnistys --previous)
kubectl logs <pod>
kubectl logs -f <pod>
kubectl logs --previous <pod>
kubectl logs -l app=web # kaikki labelia vastaavat podit
# Podin tila, tapahtumat ja määrittelyt
kubectl describe pod <pod>
# Aja komento podin sisällä (interaktiivinen shell)
kubectl exec -it <pod> -- sh
# Klusterin tapahtumat (viimeisimmät ongelmat)
kubectl get events --sort-by=.lastTimestamp
# Resurssien käyttö (vaatii metrics-serverin)
kubectl top podskubectl logs– sovelluksen tulosteet; ensimmäinen paikka vianetsintään.kubectl describe– näyttää tapahtumat (Events), esim. miksi Pod ei käynnisty.kubectl exec– pääset podin sisään testaamaan verkkoa, tiedostoja tai prosesseja.
6. Hands-on: sovelluksen asennus Helmillä ja arvojen ylikirjoitus
Asenna valmis sovellus Helm-chartilla, ylikirjoita sen arvot ja tutki lopputulosta logituksen ja debuggauksen työkaluilla. Varmista ensin, että sinulla on klusterin kubeconfig käytössä (ks. arkkitehtuuri-osion harjoitus) ja pääsy Rancheriin.
1. Luo ja ota käyttöön oma nimiavaruutesi:
# Korvaa <oma-nimi> omalla nimelläsi
kubectl create namespace <oma-nimi> --dry-run=client -o yaml | kubectl apply -f -
kubectl config set-context --current --namespace=<oma-nimi>A) Asennus Rancherin Apps-näkymästä
- Avaa Rancherissa Apps → Charts.
- Etsi sovellus (esim. Metrics Server tai Nginx) ja valitse Install.
- Valitse kohdenimiavaruudeksi oma nimiavaruutesi (
<oma-nimi>). - Ylikirjoita arvot lomakkeesta tai Edit YAML -näkymästä (esim.
replicaCount: 2). - Viimeistele asennus ja seuraa tilaa Installed Apps -näkymässä.
B) Asennus komentoriviltä Helmillä
# Lisää chart-repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Asenna nginx omaan nimiavaruuteen ja ylikirjoita arvoja
helm install web bitnami/nginx \
--namespace <oma-nimi> \
--set replicaCount=2 \
--set service.type=ClusterIP
# Listaa releaset ja tarkista Podit
helm list --namespace <oma-nimi>
kubectl get podsVaihtoehtoisesti ylikirjoita arvot arvotiedostolla:
cat <<'EOF' > values.yaml
replicaCount: 2
service:
type: ClusterIP
EOF
helm upgrade --install web bitnami/nginx --namespace <oma-nimi> -f values.yamlC) Tutki ja debuggaa asennettu sovellus
# Lokit
kubectl logs -l app.kubernetes.io/name=nginx
# Yhden podin tarkat tiedot ja tapahtumat
kubectl describe pod <pod>
# Aja komento podin sisällä
kubectl exec -it <pod> -- sh🔎 Havainto: Sekä Rancherista että komentoriviltä Helmillä asennettu sovellus on sama Release. Voit hallita sitä kummalla tavalla tahansa – taustalla on sama Helm.
4. Siivoa harjoitus poistamalla release ja oma nimiavaruus:
helm uninstall web --namespace <oma-nimi>
kubectl delete namespace <oma-nimi>Yhteenveto
- Helm niputtaa sovelluksen resurssit chartiksi; asennettu instanssi on Release,
jonka arvot voi ylikirjoittaa (
--settai arvotiedosto). - Rancher Apps/Catalog tarjoaa samat Helm-chartit graafisesti – taustalla on Helm.
- Kustomize muokkaa valmiita manifesteja patchaamalla (
kubectl apply -k); ei mallipohjia. - Arjen vianetsintä:
kubectl logs(lokit),kubectl describe(tapahtumat) jakubectl exec(podin sisään).