This tutorial provides instructions for installing and configuring three popular Kubernetes distributions - Minikube, Microk8s, and K3s - with Futurex-specific TLS certificates and cert-manager integration. Follow these steps to set up a local Kubernetes environment for development and testing purposes.Documentation Index
Fetch the complete documentation index at: https://docs.futurex.com/llms.txt
Use this file to discover all available pages before exploring further.
Workflow Overview
- Install Core Dependencies: Install Docker, Kubectl, Helm, and cmctl as required.
- Select Kubernetes Distribution: Choose between Minikube, Microk8s, or K3s based on your use case.
- Install Selected Distribution: Follow the specific installation steps for your chosen Kubernetes distribution.
- Configure TLS Certificates: Install Futurex-specific TLS certificates for secure communication with the Futurex Docker registry.
- Install cert-manager: Deploy the cert-manager operator to handle TLS certificate provisioning.
- Install Futurex cert-manager Plugin: Deploy the Futurex-specific cert-manager issuer plugin.
- Validation: Verify all components are running correctly using kubectl commands.
Minikube
Minikube is a tool designed to run a single-node Kubernetes cluster locally on your machine, including Linux systems. It is primarily used by developers and those new to Kubernetes for learning, development, and testing purposes.Libraries needed
- cert-manager: A cloud-native certificate management service for Kubernetes. It automates the provisioning and management of Transport Layer Security (TLS) certificates by integrating with various certificate authorities (CAs).
cert-managerensures that certificates are automatically renewed before they expire, and it stores them as Kubernetes Secrets for applications to use. - Docker: An open-source platform designed to simplify the creation, deployment, and management of applications using containerization. Essentially, Docker allows you to package an application and all its dependencies (libraries, configurations, etc.) into a self-contained unit called a Docker container.
- Kernel-based Virtual Machine (KVM): A virtualization technology built into the Linux kernel that turns a Linux machine into a hypervisor—allowing a single physical server to run multiple VMs.
- Kubectl: A command-line tool for controlling Kubernetes clusters. It allows users to run commands against Kubernetes clusters, performing various operations.
- Helm: A package manager for Kubernetes, a container orchestration system, that simplifies deploying and managing complex applications. It packages application resources into a single, reusable unit called a
chart, which contains all the necessary configuration files to define, install, and upgrade an application. Very similar to Linux’saptoryumsoftware package manager. - cmctl: A command-line interface (CLI) tool designed to manage and configure cert-manager resources within a Kubernetes cluster.
- curl: A command-line tool and library used for transferring data to or from a server using a variety of internet protocols, such as HTTP, HTTPS, FTP, and more. It is commonly used by developers for tasks like testing APIs, downloading files, and automating web requests because it is versatile, widely available, and efficient.
Installation Steps
Confirm virtualization supportCheck if the computer that will be running Minikube has virtualization support:
Bash
If the number is less than 1, then the computer doesn’t support virtualization.If Minikube is running on a VM, most likely, there is a virtualization feature that needs to be enabled. For example, in Oracle VirtualBox, the VM needs to be shut down. In the main VirtualBox menu, go to the Settings for that VM and select Expert at the top left. Then, under System > Processor, select the Enable PAE/NX and Enable Nest VT-x/AMD-V options.
Install DockerUpdate the system’s local package index:Install the following dependencies:Add Docker’s official GPG key:Add Docker’s official repository:Install Docker Engine:The user must be added to
Bash
Bash
Bash
Bash
Bash
docker group:Bash
Install Futurex’s Docker TLS certificates for Minikube environmentDownload the certificates to a local directory.Make a Minikube certificate directory (if there isn’t one already):Copy the certificates to the newly created directory:
Bash
Bash
Run Minikube with the required flags and addonsIf you run into issues with enabling the Docker registry, try pulling the images manually:
Bash
Bash
Microk8s
Microk8s is a lightweight, production-grade, and conformant Kubernetes distribution developed by Canonical. It is designed to simplify the deployment and management of Kubernetes, making it accessible for a wide range of use cases, including local development, edge computing, IoT devices, and small-scale production environments.Libraries needed
- cert-manager: A cloud-native certificate management service for Kubernetes. It automates the provisioning and management of Transport Layer Security (TLS) certificates by integrating with various certificate authorities (CAs).
cert-managerensures that certificates are automatically renewed before they expire, and it stores them as Kubernetes Secrets for applications to use. - Kubectl: A command-line tool for controlling Kubernetes clusters. It allows users to run commands against Kubernetes clusters, performing various operations.
- Helm: A package manager for Kubernetes, a container orchestration system, that simplifies deploying and managing complex applications. It packages application resources into a single, reusable unit called a
chart, which contains all the necessary configuration files to define, install, and upgrade an application. Very similar to Linux’saptoryumsoftware package manager. - curl: A command-line tool and library used for transferring data to or from a server using a variety of internet protocols, such as HTTP, HTTPS, FTP, and more. It is commonly used by developers for tasks like testing APIs, downloading files, and automating web requests because it is versatile, widely available, and efficient.
Installation steps
Install Futurex’s Docker TLS certificates for Microk8s environmentDownload the certificates to a local directory.Make a directory containing the Futurex docker-registry hostname:Copy the certs and change the file extensions from
Bash
.pem to .crt in the newly-created directory:Bash
K3s
A lightweight, certified Kubernetes distribution for managing containers that is optimized for resource-constrained environments like IoT and edge computing. It is packaged as a single binary and includes all necessary components, such as a container runtime, network, and DNS, making it much simpler to install and run than standard Kubernetes. K3s uses a simplified architecture, with the control plane and worker node components built into single binaries. There are 2 ways to setup K3s:- Local testing setup: Run K3s on a single device using Docker containers to simulate multiple cluster nodes. This is ideal for quick testing and development without extra hardware.
- Multi-device setup: Install K3s as a service on multiple physical or virtual machines. This configuration mirrors a real distributed cluster and can be used for staging or production deployments, especially in edge, IoT, or lightweight server environments.
Single device testing (using Docker)
Libraries needed
- Docker: An open-source platform designed to simplify the creation, deployment, and management of applications using containerization. Essentially, Docker allows you to package an application and all its dependencies (libraries, configurations, etc.) into a self-contained unit called a Docker container.
- Kubectl: A command-line tool for controlling Kubernetes clusters. It allows users to run commands against Kubernetes clusters, performing various operations.
- cmctl: A command-line interface (CLI) tool designed to manage and configure
cert-managerresources within a Kubernetes cluster. - Helm: A package manager for Kubernetes, a container orchestration system, that simplifies deploying and managing complex applications. It packages application resources into a single, reusable unit called a
chart, which contains all the necessary configuration files to define, install, and upgrade an application. Very similar to Linux’saptoryumsoftware package manager. - curl: A command-line tool and library used for transferring data to or from a server using a variety of internet protocols, such as HTTP, HTTPS, FTP, and more. It is commonly used by developers for tasks like testing APIs, downloading files, and automating web requests because it is versatile, widely available, and efficient.
Installation steps
Install DockerUpdate the system’s local package index:Install the following dependencies:Add Docker’s official GPG key:Add Docker’s official repository:Install Docker Engine:The user must be added to
Bash
Bash
Bash
Bash
Bash
docker group:Bash
Install Futurex’s Docker TLS certificates for K3s environmentDownload the certificates to a local directory.Change the file extensions from Take note of the full path to the
.pem to .crt:Bash
.crt file as this will be needed for the next command.Set up the K3s server
Bash
-d: Runs the container in detached mode, runs the container in the background.--name: Name of the container so that it can be easily referenced by Docker.--privileged: Gives the container extended privileges. Needed for K3s to access system resources like network interfaces, cgroups, and mount points in the container.-p: Maps host port to the container port. (Note: Port 6443 is the default Kubernetes API server port.)-v: Mounts a Docker volume with a specified name (e.g., k3s-data) into the container at a specified location (e.g., /var/lib/rancher/k3s). This is where K3s store persistent data like etcd or kubelet data. The second-vline mounts the Futurex TLS certificate into the proper place for k3s-server.--network:Connects the container to a user-defined Docker network (e.g., k3s-net) so other containers can communicate with it.--hostname: Sets the hostname inside the container (e.g., k3s-server). (Note: K3s uses this as the node name if you don’t override it.)--node-name: Sets the node name that appears in Kubernetes.
Configure Kubectl accessThis copies the Run the command to find out if the server node is active:
k3s.yaml configuration file to the current directory and then sets the kubectl environmental variable to that file.Bash
Bash
If the node is ready, the output should look similar to below:
None
Set up the K3s workerRetrieve the server node token. Agents require a token to authenticate with the server. To extract it from the server container:Copy that token as the value for the
Bash
It should look similar to:
--token flag:Bash
-d: Runs the container in detached mode, runs the container in the background.--name: Name of the container so that it can be easily referenced by Docker.--privileged: Gives the container extended privileges. Needed for K3s to access system resources like network interfaces, cgroups, and mount points in the container.--network: Connects the container to a user-defined Docker network (e.g., k3s-net) so other containers can communicate with it.--hostname: Sets the hostname inside the container (e.g., k3s-agent-1). Note: K3s uses this as the node name if you don’t override it.--server: Specifies the address of the K3s server that this agent should connect to. (Note: Use the hostname or IP of the K3s server reachable from this container.)--token: The node registration token uses to authenticate this agent with the K3s server.--node-name: Sets the node name that appears in Kubernetes.
If the node is ready, running the command
kubectl get nodes should provide an output similar to belowNone
DownloadAfter waiting about 10 seconds, check if
cert-managerBash
cert-manager was installed correctly.Bash
The output should look similar to below:
None
Download the Futurex Helm install the Futurex
cert-manager plugin into the local directoryBash
cert-manager.Bash
-n cert-manager puts the Futurex cert-manager plugin in the same namespace as the previously downloaded cert-manager.To check if the install was successful, run:The output should look similar to below:
Shell
None
Multi-device testing
Libraries Needed
- Kubectl: A command-line tool for controlling Kubernetes clusters. It allows users to run commands against Kubernetes clusters, performing various operations.
- cmctl: A command-line interface (CLI) tool designed to manage and configure
cert-managerresources within a Kubernetes cluster. - Helm: A package manager for Kubernetes, a container orchestration system, that simplifies deploying and managing complex applications. It packages application resources into a single, reusable unit called a
chartwhich contains all the necessary configuration files to define, install, and upgrade an application. Very similar to Linux’saptoryumsoftware package manager. - curl: A command-line tool and library used for transferring data to or from a server using a variety of internet protocols, such as HTTP, HTTPS, FTP, and more. It is commonly used by developers for tasks like testing APIs, downloading files, and automating web requests because it is versatile, widely available, and efficient.
Installation steps
k3s.yaml is a Kubernetes kubeconfig file that K3s generates for the cluster. It is originally owned by root user. It is recommended to copy the configuration file to a secure location and change the permissions to only allow the specified user read and write access.The
k3s.yaml contains sensitive information about the cluster. Follow best security practices to secure this file.Bash
KUBECONFIG environment variable so that the current user can use kubectl and helm.Bash
Install Futurex’s Docker TLS certificates for K3s environmentDownload the certificates to a local directory.Change the file extensions from Move the
.pem to .crt:Bash
.crt file to:Bash
DownloadAfter about 10 seconds, check if it is installed correctly:
cert-managerBash
Bash
The output should be similar to the below:
None
Download the Futurex Helm install the Futurex
cert-manager plugin to the local directoryBash
cert-manager.-n cert-manager puts the Futurex cert-manager plugin in the same namespace as the previously downloaded cert-manager.Bash
To check if the install was successful, run:The output should look similar to below:
Shell
None
Download and install K3s for the worker deviceObtain the server token on the server device:Obtain the server’s IP address. One of the ways to do so is shown below:Paste the server’s token and IP address in the following command on the worker device:
Bash
The output will look similar to below:
None
Bash
Bash

