Helm
Paigaldamine skriptiga suvalisele Linuxile
$ curl -LO https://git.io/get_helm.sh $ chmod 700 get_helm.sh $ ./get_helm.sh
Helmi failistruktuuri loomiseks
$ helm create mychart Creating mychart
Tekkinud failistruktuur sisaldab näidet ngixi paigaldamiseks ning selle modfitseerimisest on ka hea esmalt alustada, kuna nginx on paljude
helmide jaoks oluline proxy komponent.
Olulisemad failid mis tekivad on järgnevad
test/Chart.yaml - See fail sisaldab nime, versiooninumbrit, kirjeldust ning linke ja ikooni test/templates/ingress.yaml test/templates/deployment.yaml - Siin failis on kogu dockeri rakenduse paigaldamise loogika test/templates/service.yaml - deploymendis tekittud podi sidumine tcp pordiga test/values.yaml - Muutujad, mida saab deploymentsi ja teiste templatede jaoks seadistada
Soovides konteinereid juurde luua, näiteks lisada nginxile veel postgresi võib tekitada sama pod-i ehk deploymendi sisse teisegi konteineri. Nii võivad olla kokku seatud näiteks nginx ja postgres. Üldiselt on soovitatud aga tekitada kõrvale teine deployment fail
Lisame testiks nginx confi nginx/templates/cm.yaml
apiVersion: v1
data:
nginx.conf: |
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
return 200 "===============================\n\n This is your helm deploy! \n\n===============================\n";
}
}
}
kind: ConfigMap
metadata:
name: nginx-config
Järgmisena peame selle defineerima oma rakenduse failis templates/deployment.yaml volumes ja volumemounts
containers:
- name: Mall:.Chart.Name
image: "Mall:.Values.image.repository:Mall:.Values.image.tag"
imagePullPolicy: Mall:.Values.image.pullPolicy
ports:
- name: http
containerPort: 80
protocol: TCP
...
volumeMounts:
- name: config
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
volumes:
- name: config
configMap:
name: nginx-config
Soovides tekitada konteinerile püsiva volume, nt postgresi andmete hoidmiseks, tuleb tekitada presistent storage. Selleks peame esiteks teadma mis tüüpi presistent storaget kasutab meie k8s cluster ja tekitada vastavalt sellele claimi mis eraldab meile storagest soovitud suurusega jaotise. Antud näites on meil kasutuses longhorni andmesalvestuslahendus
Tekitame claimi faili templates/volume.yaml järgneva sisuga
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: longhorn-postgres-data
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 10Gi
Volume templates/deployment.yaml failis defineerimiseks
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: longhorn-postgres-data
Ja konteinerile külge monteerimiseks
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
subPath: data
Testimiseks kas kõik on korras saab kasutada käsku
helm template waldur
Chartide repositoorium koosneb pakitud chartidest ja index.yaml mis sisaldab kõikide chartide nimesid
helm package nginx mv nginx-0.1.0.tgz nginx helm repo index nginx --url http://zoo.tartu.ee/charts/nginx/
Uue versiooninumbriga paki tekitamiseks
# helm package nginx --version 1.1.1
Misjärel on tarvilik genereerida ka index uuesti