Frequently Asked Questions#
I want to..#
Add a new project to SKA organisation#
Develop a Tango device#
A sample PyTango device project that can be forked can be found at ska-telescope/ska-tango-examples/
Documentation for it can be found at /projects/ska-tango-examples/en/latest/?badge=latest
Containerise my solution#
A summary of our containerisation standards can be found in the Container Standards CheatSheet.
- Verify Docker installation
$ docker -v
Docker version 1.7.0, build 0baf609
Incorporate my project into the integration environment#
We use Kubernetes as an orchestration layer - refer to our Orchestration Guidelines.
Once a project is ready to form part of the integrated solution, we need to verify that all prerequisites are installed and working properly.
- Verify kubectl installation
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892",
GitTreeState:"clean", BuildDate:"2019-07-18T09:18:22Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
- Verify Minikube installation
$ minikube
Minikube is a CLI tool that provisions and manages single-node Kubernetes clusters optimized for development workflows...
- Launch Kubernetes.
Look out for kubectl is now configured to use βminikubeβ near the end:
$ sudo -E minikube start --vm-driver=none --extra-config=kubelet.resolv-conf=/var/run/systemd/resolve/resolv.conf
π minikube v0.34.1 on linux (amd64)
π€Ή Configuring local host environment ...
β οΈ The 'none' driver provides limited isolation and may reduce system security and reliability.
β οΈ For more information, see:
π https://gitlab.com/kubernetes/minikube/blob/master/docs/vmdriver-none.md
β οΈ kubectl and minikube configuration will be stored in /home/ubuntu
β οΈ To use kubectl or minikube commands as your own user, you may
β οΈ need to relocate them. For example, to overwrite your own settings:
βͺ sudo mv /home/ubuntu/.kube /home/ubuntu/.minikube $HOME
βͺ sudo chown -R $USER /home/ubuntu/.kube /home/ubuntu/.minikube
π‘ This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
π₯ Creating none VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
πΆ "minikube" IP address is 192.168.86.29
π³ Configuring Docker as the container runtime ...
β¨ Preparing Kubernetes environment ...
βͺ kubelet.resolv-conf=/var/run/systemd/resolve/resolv.conf
π Pulling images required by Kubernetes v1.13.3 ...
π Launching Kubernetes v1.13.3 using kubeadm ...
π Configuring cluster permissions ...
π€ Verifying component health .....
π kubectl is now configured to use "minikube"
π Done! Thank you for using minikube
Test that the connectivity in the cluster works
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-86c58d9df4-5ztg8 1/1 Running 0 3m24s
...
- Verify Helm installation
$ helm version
version.BuildInfo{Version:"v3.1.2", GitCommit:"d878d4d45863e42fd5cff6743294a11d28a9abce", GitTreeState:"clean", GoVersion:"go1.13.8"}
...
Note
Until recently, we have been using Helm 2 in all our Ansible Playbooks for provisioning machines and development environments. Helm 2 used Tiller as a deployment service, and would be started in your environment by running the helm init
command. This is no longer the case with Helm 3. More info here .
Use this ansible playbook to upgrade your existing Helm 2 to Helm 3.
Once Helm is installed, develop a helm chart for the project. Refer to Helm instructions for guidelines.
Install Helm charts from our own repository#
The SKAMPI repository is in essence a configuration management repository, which basically just consists of a number of Helm charts and instructions for installing them on a kubernetes cluster.
Installing Helm charts from our own Helm Chart Repository is another option, specifically that enables installing different charts during run-time.
To add the SKA Helm chart repo to your local Helm, simply run
$ helm repo add skao https://artefact.skao.int/repository/helm-internal
Working with the Helm chart repository, including how to package and upload charts to our repository, is described here in detail.
Deploy the TMC prototype and Webjive in kubernetes#
The integration gitlab repository can be found at ska-telescope/ska-skampi.
Documentation on deployment can be found at /projects/skampi/en/latest/README.html
Add the helm chart to the skampi repository: Integrating a chart into the SKAMPI repo.
- Verify k8s integration
Launch the integration environment
$ make deploy_all KUBE_NAMESPACE=integration
and verify that the pods are able to startup without any errors
$ watch kubectl get all,pv,pvc,ingress -n integration
Every 2.0s: kubectl get all,pv,pvc -n integration osboxes: Fri Mar 29 09:25:05 2019
NAME READY STATUS RESTARTS AGE
pod/databaseds-integration-tmc-webui-test-0 1/1 Running 3 117s
pod/rsyslog-integration-tmc-webui-test-0 1/1 Running 0 117s
podtangodb-integration-tmc-webui-test-0 1/1 Running 0 117s
pod/tangotest-integration-tmc-webui-test 1/1 Running 2 117s
pod/tmcprototype-integration-tmc-webui-test 4/5 CrashLoopBackOff 2 117s
pod/webjive-integration-tmc-webui-test-0 4/4 Running 0 117s
...