Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pip installing a package inside of a Kubernetes cluster

I have installed Apache Superset from its Helm Chart in a Google Cloud Kubernetes cluster. I need to pip install a package that is not installed when installing the Helm Chart. If I connect to the Kubernetes bash shell like this:

kubectl exec -it superset-4934njn23-nsnjd /bin/bash

Inside there's no python available, no pip and apt-get doesn't find most of the packages.

I understand that during the container installation process the packages are listed in the Dockerfile, I suppose that I need to fork the docker container, modify the Dockerfile, register the container to a container registry and make a new Helm Chart that will run this container.

But all this seems too complicated for a simple pip install, is there a simpler way to do this?

Links:

Docker- https://hub.docker.com/r/amancevice/superset/

Helm Chart - https://github.com/helm/charts/tree/master/stable/superset

like image 729
Ben Gosub Avatar asked Jan 28 '23 16:01

Ben Gosub


1 Answers

As @Murli mentioned, you should use pip3. However, one thing you should remember is, helm is for managing k8s, i.e. what goes into the cluster should be traceable. So I recommend you the following:

$ helm get stable/superset

modify the values.yaml. In my case, I added jenkins-job-builder to pip3:

initFile: |-
  pip3 install jenkins-job-builder
  /usr/local/bin/superset-init --username admin --firstname admin --lastname user --email [email protected] --password admin
  superset runserver

and just pass the values.yaml to helm install.

$ helm install --values=values.yaml stable/superset

Thats it.

 $ kubectl exec -it doltish-gopher-superset-696448b777-8b9c6 which jenkins-jobs
 /usr/local/bin/jenkins-jobs
 $
like image 50
Maniankara Avatar answered Jan 31 '23 08:01

Maniankara