Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagebash
themeMidnight
titleExample
$ kubectl cluster-info
Kubernetes master is running at https://10.2.0.103:6443
$ KUBE_HOST=10.2.0.103

...

Code Block
languagebash
themeMidnight
$ 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
languagebash
themeMidnight
$ 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
languagebash
themeMidnight
$ 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
languagebash
themeMidnight
$ 

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
languagebash
themeMidnight
$ ./test.sh kube-cluster $KUBE_HOST

Example output of the script

Code Block
languagebash
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
languagebash
themeMidnight
$ 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