# Prerequisites to develop and test Helm Charts ## Kubernetes Cluster You will need to create a Kubernetes cluster locally using [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube), [microk8s](https://microk8s.io), [kind](https://kind.sigs.k8s.io), [k3s](https://k3s.io) or other tools. Or use Kubernetes cluster in [EKS](https://aws.amazon.com/eks), [GKE](https://cloud.google.com/kubernetes-engine), [AKS](https://docs.microsoft.com/en-us/azure/aks), [DOKS](https://www.digitalocean.com/products/kubernetes) or other cloud provider. ## Install Docker-CE Follow instructions of page for install Docker-CE. * Ubuntu: https://docs.docker.com/install/linux/docker-ce/ubuntu/ * Debian: https://docs.docker.com/install/linux/docker-ce/debian/ * CentOS: https://docs.docker.com/install/linux/docker-ce/centos/ * MacOS: https://docs.docker.com/docker-for-mac/install/ Start the Docker service, configure Docker to boot up with the OS and add your user to the Docker group. ```bash # Start the Docker service sudo systemctl start docker # Configure Docker to boot up with the OS sudo systemctl enable docker # Add your user to the Docker group sudo usermod -aG docker $USER sudo setfacl -m user:$USER:rw /var/run/docker.sock ``` Source: https://docs.docker.com/engine/install/linux-postinstall/#configure-docker-to-start-on-boot ## Install Kubectl Simple shell function for Kubectl installation in Linux 64 bits. Copy and paste this code: ```bash sudo su VERSION=v1.22.2 KUBECTL_BIN=kubectl function install_kubectl { if [ -z $(which $KUBECTL_BIN) ]; then curl -LO https://storage.googleapis.com/kubernetes-release/release/$VERSION/bin/linux/amd64/$KUBECTL_BIN chmod +x ${KUBECTL_BIN} sudo mv ${KUBECTL_BIN} /usr/local/bin/${KUBECTL_BIN} sudo ln -sf /usr/local/bin/${KUBECTL_BIN} /usr/bin/${KUBECTL_BIN} else echo "Kubectl is most likely installed" fi } install_kubectl which kubectl kubectl version --client exit ``` Kubectl documentation: https://kubernetes.io/docs/reference/kubectl/overview/ **Credits:** Juan Pablo Perez - https://www.linkedin.com/in/juanpabloperezpeelmicro/ https://github.com/peelmicro/learn-devops-the-complete-kubernetes-course ## Helm Docs Run the following commands to install ``helm-docs``. ```bash HELM_DOCS_VERSION=1.5.0 HELM_DOCS_PACKAGE=helm-docs_``$HELM_DOCS_VERSION``_linux_x86_64.tar.gz cd /tmp wget https://github.com/norwoodj/helm-docs/releases/download/v$HELM_DOCS_VERSION/$HELM_DOCS_PACKAGE tar xzvf $HELM_DOCS_PACKAGE sudo mv helm-docs /usr/local/bin/ sudo chmod +rx /usr/local/bin/helm-docs helm-docs --version ``` Documentation: https://github.com/norwoodj/helm-docs The documentation generated by ``helm-docs`` is based on the contents of the ``values.yaml``, ``README.md.gotmpl`` and ``Chart.yaml`` file. It tries to overwrite the contents of the ``README.md`` file within the chart directory. ## Install Helm 3 Execute these commands to install helm 3.14+. ```bash sudo su HELM_TAR_FILE=helm-v3.15.3-linux-amd64.tar.gz HELM_URL=https://get.helm.sh HELM_BIN=helm3 function install_helm3 { if [ -z $(which $HELM_BIN) ]; then wget ${HELM_URL}/${HELM_TAR_FILE} tar -xvzf ${HELM_TAR_FILE} chmod +x linux-amd64/helm sudo cp linux-amd64/helm /usr/local/bin/$HELM_BIN sudo ln -sfn /usr/local/bin/$HELM_BIN /usr/local/bin/helm rm -rf ${HELM_TAR_FILE} linux-amd64 echo -e "\nwhich ${HELM_BIN}" which ${HELM_BIN} else echo "Helm 3 is most likely installed" fi } install_helm3 which $HELM_BIN $HELM_BIN version exit ``` Documentation: https://helm.sh/docs/ **Credits**: Juan Pablo Perez - https://www.linkedin.com/in/juanpabloperezpeelmicro/ https://github.com/peelmicro/learn-devops-the-complete-kubernetes-course