This is work in progress
Preparation
Clone the nonrtric repo from gerrit and change dir. All needed scripts for start and run the helm manager, in docker or kubernetes are in this directory.
git clone "https://gerrit.o-ran-sc.org/r/nonrtric" cd helm-manager
Build image
There is no need to build the image for the helm manager unless changes are made to the Dockerfile in the current dir.
Instruction to build the image:
mvn clean package
The built image should be named: o-ran-sc/nonrtric-helm-manager:1.0.0-SNAPSHOT
$ docker images | grep helm o-ran-sc/nonrtric-helm-manager 1.0.0-SNAPSHOT
Note: Note, replace the image name in the docker-hm.sh and kube-hm.sh if this image shall be used.
Note: Locally built images are not available to a kubernetes cluster unless the image is made available in an image repo accessible from within the cluster.
Create helm chart for test
helm create simple-app
Run in docker with local kubernetes
The helm-manger is possible to run as a docker container. However, a local kubernetes must be running where the application can be installed.
Create a private docker network for the containers to run in
docker network create nonrtric-docker-net
Start the chartmuseum container. Make note of the port, 8222, which will be available on local host. Charts uploaded to the chartmuseum container will be availed in the dir 'charts' on your host.ls
./docker-cm.sh
Add the chart to the repo
curl --data-binary "@simple-app-0.1.0.tgz" -X POST http://localhost:<port-to-chartrepo>/api/charts
Start the helm manager
docker run \ --rm \ -it \ -p 8112:8083 \ --name helmmanagerservice \ --network nonrtric-docker-net \ -v $(pwd)/mnt/database:/var/helm-manager/database \ -v ~/.kube:/root/.kube \ -v ~/.helm:/root/.helm \ -v ~/.config/helm:/root/.config/helm \ -v ~/.cache/helm:/root/.cache/helm \ -v $(pwd)/config/KubernetesParticipantConfig.json:/opt/app/helm-manager/src/main/resources/config/KubernetesParticipantConfig.json \ -v $(pwd)/config/application.yaml:/opt/app/helm-manager/src/main/resources/config/application.yaml \ o-ran-sc/nonrtric-helm-manager:1.0.0-SNAPSHOT
Go into the helm manger and add the chartrepo
cmd prompt: helm repo add cm http://chartrepo:8080
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 local-kluster
Run in kubernetes
This instruction is valid for running both in a local kubernetes and in a kubernetes ccluster
Check if the nonrtric names space exists
kubectl get ns nonrtric
If the namespace does not exist, create it.
kubectl create ns nonrtric
Start the chartmuseum service and pod
kubectl apply f cm/svc app.yaml
Find the nodeport of the service
kubectl get svc chartrepo -n nonrtric -o jsonpath='{...ports[?(@.name=="'http'")].nodePort}'
Add the chart to the repo
curl --data-binary "@simple-app-0.1.0.tgz" -X POST http://localhost:<port-to-chartrepo>/api/charts
If running in kubernetes cluster
Add the service account for the helm manager. Note that this uses the 'cluster-admin' role which has wide permission. This should only be used for test.
kubectrl apply f helm-manager-sa.yam
Edit the svc-app.yaml, set 'service-acccount-name' to helm-manager-sa
Start the helm manager
kubectl apply f svc app.yaml
Go into the helm manger pod and add the chartrepo
kubectl exec -it helmmanagerservice n nonrtric - sh
cmd prompt: helm repo add cm http://chartrepo.nonrtric:8080
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 local-kluster