Tipi.Work Creating A Plant Shop PoC. Infrastructure

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.

Installing docker

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
    
    

Installing necessary components

  1. helm is the best way to find, share, and use software built for Kubernetes
  2. kubectl controls the Kubernetes cluster manager
  3. minikube, a one node Kubernetes cluster
  4. terraform helps deploy infrastructure, IaC

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
     
     

Installing 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

Conclusion

We have successfully installed necessary components for our feature work with a Kubernetes cluster.