minikube-cli.sh¶
Command line interface to run Minikube and Helm commands.
Overview¶
This script controls the local minikube instance. This setup includes Minikube and a Docker Compose stack. This script exclusively manages Minikube. Helm and all related Compose stacks. Minikube will not fail if the Docker Compose stacks are not running.
Initial implementation issue took place with https://github.com/sommerfeld-io/configs-homelab/issues/5
About minikube and Helm¶
minikube is a tool that simplifies running Kubernetes clusters locally. It allows developers to set up a single-node Kubernetes cluster on their local workstation, which is useful for development, testing, and learning purposes. minikube supports various hypervisors (like VirtualBox, KVM, Hyper-V) and container runtimes (like Docker, Podman, containerd, and CRI-O). By providing a local Kubernetes environment, minikube helps developers emulate the behavior of a production cluster, enabling them to test Kubernetes applications in a controlled, local setup before deploying them to a larger, more complex cluster.
Helm is a package manager for Kubernetes, designed to streamline the deployment, management, and scaling of applications on Kubernetes clusters. It uses "charts", which are packages of pre-configured Kubernetes resources, to define, install, and upgrade Kubernetes applications. Helm helps automate the deployment process, manage dependencies, and simplify updates and rollbacks, making it easier to manage Kubernetes applications consistently and reproducibly.
Prerequisites¶
A local Docker and a local minikube installation is required. To deploy applications to the cluster, Helm is also required.
Keep in mind, that the Ansible playbook creates a kubectl
alias which points to
minikube kubectl
so this might conflict with other kubectl
installations.
Usage¶
This script allows to start, stop and expose the dashboard (among others). Common commands
are available as options. The script is interactive and will prompt the user to select an
action. More specific actions need to be executed directly with minikube
, kubectl
or
helm
.
# Start the script from its location in the filesystem
./minikube-cli.sh
# Start the script through a bash alias (written by ansible playbook)
minikube-cli
The script does not accept any parameters.
Deployments¶
Installing and uninstalling apps is done with helm
or ArgoCD. This script can handle some
helm
charts, but not all. All supported Helm charts can be selected from the menu.
Portainer¶
Portainer is deployed into Minikube to offer an additional method for inspecting and monitoring the Minikube cluster, complementing the existing Dashboard plugin.
To deploy Portainer in the Minikube cluster, you can select the respective action in the
minikube-cli
or deploy directly with helm
.
cd components/minikube/admin-charts
helm install portainer ./portainer
helm uninstall portainer
With this Portainer setup, a service account with cluster-admin
permissions is used to enable
Portainer to interact with the Kubernetes API. This high-level permission is necessary because
it allows Portainer to query detailed information about the cluster, manage resources, and
perform administrative tasks.
This could be a security risk, so it is recommended to use Portainer in a controlled environment. This minikube setup is intended for development and testing purposes only. It is not recommended for production use.
For more information, see the Portainer Helm Chart in the portainer/k8s GitHub repository.
Increasing the NodePort range¶
By default, minikube only exposes ports 30000-32767
. If this does not work for you, you can
adjust the range by using: minikube start --extra-config=apiserver.service-node-port-range=1024-65535
Index¶
startup¶
Utility function to startup minikube.
shutdown¶
Utility function to shutdown minikube.
dashboard¶
Utility function to expose the minikube dashboad.
pods¶
Utility function to list pods.
services¶
Utility function to list services from all namespaces.
status¶
Utility function to display minikube status and some metadata.
help¶
Utility function to display the minikube help.
destroy¶
Utility function to delete the minkube instance and clean everything up.
deploy¶
Utility function to deploy a Helm chart.
Arguments¶
- $1 (string): The folder name containing the Helm charts (based in
components/homelab/src/main/minikube
). - $2 (string): The sub folder name containing the actual deployment configuration.
undeploy¶
Utility function to undeploy a Helm chart.
Arguments¶
- $1 (string): The sub folder name (= the release name) of the actual deployment configuration.