...
The chartmusem repo need to added to helm. This operation must be called with an a url accessible from the helm manager container.
...
If running in a kubernetes cluster, set the env KUBE_HOST to the ip of the cluster. Not
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$ kubectl cluster-info Kubernetes master is running at https://10.2.0.103:6443 $ KUBE_HOST=10.2.0.103 |
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ kubectl apply -f helm-manager-sa.yaml serviceaccount/helm-manager-sa created clusterrolebinding.rbac.authorization.k8s.io/helm-manager-sa-clusterrolebinding created |
Edit the svc-app.yaml, set 'service-acccount-name' to helm-manager-sa
Start the helm manager
...
Start the helm manager. Four objects will be created.
Code Block | ||||
---|---|---|---|---|
| ||||
$ kubectl apply -f helm-manager.yaml
service/helmmanagerservice created
pod/helmmanagerservice created
persistentvolume/helm-manager-service-pv created
persistentvolumeclaim/helm-manager-service-pvc created |
The chartmuseum repo need to added to helm. This operation must be called with a url accessible from the helm manager pod.
Go into the helm
...
manager container and add the
...
kubectl exec -it helmmanagerservice n nonrtric - sh
...
repo.
Code Block | ||||
---|---|---|---|---|
| ||||
$ kubectl exec -it helmmanagerservice -n nonrtric -- sh # helm repo add cm http://chartrepo.nonrtric:8080 |
...
"cm" has been added to your repositories
$ exit |
The helm manager is now running and configured with a chart repo.
Run the script test.sh to execute the sequence for installing the application 'simpleapp' namespace 'ckhm':
- Namespace 'ckhm' is created in kubernetes if not existing
- Onboard chart
- Install chart
- Uninstall chart
- Remove (the onboarded) chart
All operations should report "OK".
If running in a local kubernetes
Code Block | ||||
---|---|---|---|---|
| ||||
$ |
cmd prompt: exit
Run the test script.
This script will onboard chart, install an application based on the chart, unstall the application and finally remove the chart.
./test.sh |
...
kube-local |
if running in a kubernetes cluster. Use the previously set env var KUBE_HOST as second arg to the script
Code Block | ||||
---|---|---|---|---|
| ||||
$ ./test.sh kube-cluster $KUBE_HOST |
Example output of the script
Code Block | ||
---|---|---|
| ||
Start test
================
Get apps - empty
================
curl -sw %{http_code} http://localhost:32743/helm/charts
Curl OK
Response: 200
Body: {"charts":[]}
============
Onboard app
===========
curl -sw %{http_code} http://localhost:32743/helm/charts -X POST -F chart=@simple-app-0.1.0.tgz -F values=@simple-app-values.yaml -F info=<simple-app.json
Curl OK
Response: 200
Body:
=====================
Get apps - simple-app
=====================
curl -sw %{http_code} http://localhost:32743/helm/charts
Curl OK
Response: 200
Body: {"charts":[{"releaseName":"simpleapp","chartName":"simple-app","version":"0.1.0","namespace":"ckhm","repository":"cm"}]}
===========
Install app
===========
curl -sw %{http_code} http://localhost:32743/helm/install -X POST -H Content-Type:application/json -d @simple-app-installation.json
Curl OK
Response: 201
Body:
=====================
Get apps - simple-app
=====================
curl -sw %{http_code} http://localhost:32743/helm/charts
Curl OK
Response: 200
Body: {"charts":[{"releaseName":"simpleapp","chartName":"simple-app","version":"0.1.0","namespace":"ckhm","repository":"cm"}]}
=============================
helm ls to list installed app
=============================
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
hm-app hm-app-ns 1 2021-05-19 17:15:26.068017436 +0000 UTC deployed hm-app-0.1.0 1.16.0
kall1 default 2 2021-05-16 21:32:46.710349 +0200 CEST deployed app1-0.1.0 1.16.0
kall11 default 1 2021-05-16 21:40:57.073819 +0200 CEST deployed app1-0.1.0 1.16.0
kalle3 default 1 2021-05-17 01:17:03.671637 +0200 CEST deployed app3-0.1.0 1.16.0
kalle3 app3-ns 1 2021-05-17 01:22:29.514917 +0200 CEST deployed app3-0.1.0 1.16.0
simpleapp ckhm 1 2021-06-01 22:24:12.797624073 +0000 UTC deployed simple-app-0.1.0 1.16.0
==========================================
sleep 30 - give the app some time to start
==========================================
============================
List svc and pod of the app
============================
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
simpleapp-simple-app ClusterIP 10.105.1.129 <none> 80/TCP 30s
NAME READY STATUS RESTARTS AGE
simpleapp-simple-app-858c798f97-k6vsl 1/1 Running 0 30s
========================
Uninstall app simple-app
========================
curl -sw %{http_code} http://localhost:32743/helm/uninstall/simple-app/0.1.0 -X DELETE
Curl OK
Response: 204
Body:
sleep 10 - give the app some time to remove
=============================================
List svc and pod of the app - should be gone
=============================================
No resources found in ckhm namespace.
NAME READY STATUS RESTARTS AGE
simpleapp-simple-app-858c798f97-k6vsl 0/1 Terminating 0 41s
=====================
Get apps - simple-app
=====================
curl -sw %{http_code} http://localhost:32743/helm/charts
Curl OK
Response: 200
Body: {"charts":[{"releaseName":"simpleapp","chartName":"simple-app","version":"0.1.0","namespace":"ckhm","repository":"cm"}]}
============
Delete chart
===========
curl -sw %{http_code} http://localhost:32743/helm/charts/simple-app/0.1.0 -X DELETE
Curl OK
Response: 204
Body:
================
Get apps - empty
================
curl -sw %{http_code} http://localhost:32743/helm/charts
Curl OK
Response: 200
Body: {"charts":[]}
Test result All tests ok
End of test |
Cleanup of all created kubernetes object
Code Block | ||||
---|---|---|---|---|
| ||||
$ kubectl delete -f kube-hm.yaml
service "helmmanagerservice" deleted
pod "helmmanagerservice" deleted
persistentvolume "helm-manager-service-pv" deleted
persistentvolumeclaim "helm-manager-service-pvc" deleted
$ kubectl delete -f kube-cm.yaml
service "chartrepo" deleted
pod "chartrepo" deleted
persistentvolume "chartrepo-pv" deleted
persistentvolumeclaim "chartrepo-pvc" deleted
$ kubectl delete -f helm-manager-sa.yaml
serviceaccount "helm-manager-sa" deleted
clusterrolebinding.rbac.authorization.k8s.io "helm-manager-sa-clusterrolebinding" deleted |