This guide deploy
onos-config through it's Helm chart assumes you have a Kubernetes cluster running with an atomix controller deployed in a namespace.
onos-config Helm chart is based on Helm 3.0 version, with no need for the Tiller pod to be present.
If you don't have a cluster running and want to try on your local machine please follow first the Kubernetes setup steps outlined to deploy with Helm. The following steps assume you have the setup outlined in that page, including the
micro-onos namespace configured.
Installing the Chart
To install the chart in the
micro-onos namespace run from the root directory of the
onos-helm-charts repo the command:
helm install -n micro-onos onos-config onos-config
The output should be:
NAME: onos-config LAST DEPLOYED: Tue Nov 26 13:38:20 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
helm install assigns a unique name to the chart and displays all the k8s resources that were created by it. To list the charts that are installed and view their statuses, run
helm ls NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE ... jumpy-tortoise 1 Tue May 14 18:56:39 2019 DEPLOYED onos-config-0.0.1 0.0.1 default
Onos Config Deployment
NAME READY STATUS RESTARTS AGE atomix-controller-6bb9555f48-6qckx 1/1 Running 0 18h device-simulator-597559fdd4-s6z8w 1/1 Running 0 14h onos-cli-5ffc6748cc-zfm74 1/1 Running 0 18h onos-config-85d6bd66b4-jmjnx 5/5 Running 0 18h onos-config-consensus-1-0 1/1 Running 0 18h onos-gui-6f849cc8f5-mth2s 2/2 Running 0 18h onos-topo-757855bcf-z7vwn 1/1 Running 0 18h onos-topo-consensus-1-0 1/1 Running 0 18h
onos-configis dependent on the
onos-toposervice which has been started here through its own Helm chart. Also a
device-simulatorhas been started - it supports the gNMI interface and is configured with the Devicesim-1.0.0 model
Note here that
onos-configis showing 5 containers in the pod - 1 for
onos-configitself and 4 model plugins have been loaded. In addition another pod "consensus" is running to connect to the "atomix-controller".
One can customize the number of partitions and replicas by modifying, in
values.yaml the values of:
store.consensus.partitions: 1 store.consensus.backend.replicas: 1
Installing the chart in a different namespace.
helm install command substituting
micro-onos with your namespace.
helm install -n <your_name_space> onos-config onos-config
Installing the chart with debug.
onos-config offers the capability to open a debug port (4000) to the image. To enable the debug capabilities please set the debug flag to true in
values.yaml or pass it to
helm install -n micro-onos onos-config onos-config --set debug=true
If your chart does not install or the pod is not running for some reason and/or you modified values Helm offers two flags to help you debug your chart:
--dry-runcheck the chart without actually installing the pod.
--debugprints out more information about your chart
helm install -n micro-onos onos-config --debug --dry-run onos-topo
Also to verify how template values are expanded, run:
helm install template onos-config
Uninstalling the chart
To remove the
onos-config pod issue
helm delete -n micro-onos onos-config
Including configuration model plugins
To include specific configuration model plugins as part of the
onos-config pod, list their names, their image name and the desired gRPC port in the
modelPlugins section of the
values.yaml file of the
onos-config chart. See below:
modelPlugins: - name: devicesim-1 image: onosproject/devicesim:0.5.5-devicesim-1.0.0 endpoint: localhost port: 5152 - name: testdevice-1 image: onosproject/testdevice:0.5.5-testdevice-1.0.0 endpoint: localhost port: 5153 - name: testdevice-2 image: onosproject/testdevice:0.5.5-testdevice-2.0.0 endpoint: localhost port: 5154
This value map will be processed during deployment time and will start each given model plugin as a sidecar in the
onos-config pod, with the appropriate gRPC port number.
To view the pods that are deployed, run
kubectl -n micro-onos get pods:
> kubectl -n micro-onos get pods NAME READY STATUS RESTARTS AGE ... onos-config-655964cbf5-tkcfb 1/1 Running 0 52s
You can view more detailed information about the pod and other resources by running
> kubectl -n micro-onos describe pod onos-config-655964cbf5-tkcfb Name: onos-config-655964cbf5-tkcfb Namespace: default Priority: 0 PriorityClassName: <none> Node: minikube/10.0.2.15 Start Time: Tue, 14 May 2019 18:56:39 -0700 ...
The onos-config pods are reached through a
Service which load balances requests to the application. To view the services, run
kubectl get services:
> kubectl -n micro-onos get svc NAME DATA AGE ... onos-config-config 5 86s
The application's configuration is stored in a
ConfigMap which can be viewed by running
kubectl get configmaps:
> kubectl -n micro-onos get cm NAME DATA AGE ... onos-config-config 5 97s
And TLS keys and certs are stored in a
> kubectl -n micro-onos get secrets NAME TYPE DATA AGE ... onos-config-secret Opaque 4 109s