In this article we're going to observe creation of a Plant Shop. In my working area at my home I have a couple of plants: Majesty Palm and Monstera Deliciosa. Imagine we want starting a new business for selling plants, so we need to create a website.
We're going to create a Proof-of-Concept, a solution we can
productionalized later. Our plant shop will be running on a VM,
with minikube, a single node Kubernetes cluster.
The minikube can utilize several drivers, and we're
going to use `docker(1)` for isolation.
Let's start with the installation of the useful cluster
and infrastructure tools. To make the solution simple, I'm
going to install the utilities on an Ubuntu 24.04.3 LTS,
amd64 virtual machine.
It's important to install docker software,
minikube uses it as driver to run an one node
Kubernetes cluster.
% sudo apt-get update
% sudo apt-get install ca-certificates curl
% sudo install -m 0755 -d /etc/apt/keyrings
% sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
% sudo chmod a+r /etc/apt/keyrings/docker.asc
% echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$( . /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
% sudo apt-get update
% sudo apt-get install docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
There's an optional step to make unpriveleged user work with
docker container:
% sudo usermod -aG docker $USER
Download necessary files, unpack, where it's necessary, and deploy into
$HOME/bin directory:
% mkdir ~/bin && cd bin
% wget https://dl.k8s.io/release/v1.34.0/bin/linux/amd64/kubectl \
&& chmod 755 kubectl
% wget -qO- https://get.helm.sh/helm-v3.19.1-linux-amd64.tar.gz | \
tar xvzf - -C . --strip-components=1 linux-amd64/helm \
&& chmod 755 helm
% wget -qO minikube https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64 \
&& chmod 755 minikube
terraform
% sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
% wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
% gpg --no-default-keyring \
--keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
--fingerprint
% echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release \
|| lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
% sudo apt update
% sudo apt-get install terraform
We have successfully installed necessary components for our feature work with a Kubernetes cluster.