Minikube
Before you can perform a ForgeOps deployment on a Kubernetes cluster running on Minikube, you must complete these prerequisite tasks:
forgeops
repository
Before you can perform a ForgeOps deployment, you must first get the
forgeops
repository and check out the release/7.5-20240618
branch:
-
Clone the
forgeops
repository. For example:$ git clone https://github.com/ForgeRock/forgeops.git
The
forgeops
repository is a public Git repository. You do not need credentials to clone it. -
Check out the
release/7.5-20240618
branch:$ cd forgeops $ git checkout
release/7.5-20240618
Depending on your organization’s repository strategy, you might need to clone
the repository from a fork. You might also need to create a working branch
from the release/7.5-20240618
branch. Learn more in
Repository Updates.
Third-party software
Before performing a ForgeOps deployment, obtain third-party software and install it on your local computer.
ForgeOps team recommends that you install third-party software using Homebrew on macOS and Linux[1] .
The versions listed in this section have been validated for ForgeOps deployments on Minikube. Earlier and later versions will probably work. If you want to try using versions that are not in the table, it is your responsibility to validate them.
Software | Version | Homebrew package |
---|---|---|
Python 3 |
3.12.4 |
|
Bash |
5.2.26 |
|
Docker client |
26.1.4 |
|
Kubernetes client (kubectl) |
1.30.2 |
|
Kubernetes context switcher (kubectx) |
0.9.5 |
|
Kustomize |
5.4.2 |
|
Helm |
3.15.2 |
|
JSON processor jq |
1.7.1 |
|
Six (Python compatibility library) |
1.16.0 |
|
Setup tools (Python) |
70.1.1 |
|
Minikube |
1.33.1 |
|
PyYaml |
6.0.1 |
|
Hyperkit |
0.20210107_1 |
|
Docker engine
In addition to the software listed in the preceding table, you’ll need to start a virtual machine that runs Docker engine.
-
On macOS systems, use Docker Desktop or an alternative, such as Colima.
-
On Linux systems, use Docker Desktop for Linux, install Docker machine from your Linux distribution, or use an alternative, such as Colima.
For more information about using Colima when performing ForgeOps deployments, refer to this article.
Minimum requirements for the virtual machine:
-
4 CPUs
-
10 GB RAM
-
60 GB disk space
For users running Microsoft Windows
ForgeOps deployments are supported on macOS and Linux. If you have a Windows computer, you’ll need to create a Linux VM. We tested the following configurations:
-
Hypervisor: Hyper-V, VMWare Player, or VMWare Workstation
-
Guest OS: Current Ubuntu LTS release with 12 GB memory and 60 GB disk space
-
Nested virtualization enabled in the Linux VM.
Perform all the procedures in this documentation within the Linux VM. In this documentation, the local computer refers to the Linux VM for Windows users.
The Minikube implementation on Windows Subsystem for Linux (WSL2) has networking issues. As a result, consistent access to the ingress controller or the apps deployed on Minikube is not possible. This issue is tracked here. Do not attempt to perform ForgeOps deployments on WSL2 until this issue is resolved. |
Minikube cluster
Minikube software runs a single-node Kubernetes cluster in a virtual machine.
The cluster/minikube/forgeops-minikube start command creates a Minikube cluster with a configuration that’s adequate for a ForgeOps deployment.
-
Determine which virtual machine driver you want Minikube to use. By default, the forgeops-minikube command, which you run in the next step, starts Minikube with:
-
The Hyperkit driver on Intel x86-based macOS systems
-
The Docker driver on ARM-based macOS systems[2]
-
The Docker driver on Linux systems
The default driver option is fine for most users. For more information about Minikube virtual machine drivers, refer to Drivers in the Minikube documentation.
If you want to use a driver other than the default driver, specify the
--driver
option when you run the forgeops-minikube command in the next step. -
-
Set up Minikube:
$ cd /path/to/forgeops/cluster/minikube $ ./forgeops-minikube start Running: "minikube start --cpus=3 --memory=9g --disk-size=40g --cni=true --kubernetes-version=stable --addons=ingress,volumesnapshots,metrics-server --driver=hyperkit" 😄 minikube v1.32.0 on Darwin 13.6 ✨ Using the hyperkit driver based on user configuration 💿 Downloading VM boot image … > minikube-v1.32.1-amd64.iso….: 65 B / 65 B [---------] 100.00% ? p/s 0s > minikube-v1.32.1-amd64.iso: 292.96 MiB / 292.96 MiB 100.00% 6.66 MiB p/ 👍 Starting control plane node minikube in cluster minikube 💾 Downloading Kubernetes v1.28.3 preload … > preloaded-images-k8s-v18-v1…: 403.35 MiB / 403.35 MiB 100.00% 8.60 Mi 🔥 Creating hyperkit VM (CPUs=3, Memory=9216MB, Disk=40960MB) … 🐳 Preparing Kubernetes v1.28.3 on Docker 24.0.7 … ▪ Generating certificates and keys … ▪ Booting up control plane … ▪ Configuring RBAC rules … 🔗 Configuring CNI (Container Networking Interface) … 🔎 Verifying Kubernetes components… ▪ Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0 ▪ Using image registry.k8s.io/sig-storage/snapshot-controller:v6.1.0 ▪ Using image registry.k8s.io/ingress-nginx/controller:v1.9.4 ▪ Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0 ▪ Using image registry.k8s.io/metrics-server/metrics-server:v0.6.4 ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5 🔎 Verifying ingress addon… 🌟 Enabled addons: storage-provisioner, metrics-server, default-storageclass, volumesnapshots, ingress 🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
-
Verify that your Minikube cluster is using the expected driver. For example:
Running: "minikube start --cpus=3 --memory=9g --disk-size=40g --cni=true --kubernetes-version=stable --addons=ingress,volumesnapshots --driver=hyperkit" 😄 minikube v1.32.0 on Darwin 13.6 ✨ Using the hyperkit driver based on user configuration ...
If you are running Minikube on an ARM-based macOS system and the forgeops-minikube output indicates that you are using the qemu driver, you probably did not start the virtual machine that runs your Docker engine.
Hostname resolution
Set up hostname resolution for the Ping Identity Platform servers you’ll deploy in your namespace:
-
Determine the Minikube ingress controller’s IP address:
-
If Minikube is running on an ARM-based macOS system[2] , use
127.0.0.1
as the IP address. -
If Minikube is running on an x86-based macOS system or on a Linux system, get the IP address by running the minikube ip command:
$ minikube ip 192.168.64.2
-
-
Choose an FQDN (referred to as the deployment FQDN) that you’ll use when you deploy the Ping Identity Platform, and when you access its GUIs and REST APIs. Ensure that the FQDN is unique in the cluster you will be deploying the Ping Identity Platform.
Examples in this documentation use
forgeops.example.com
as the deployment FQDN. You are not required to useforgeops.example.com
; you can specify any FQDN you like. -
Add an entry to the /etc/hosts file to resolve the deployment FQDN:
ingress-ip-address forgeops.example.com
For
ingress-ip-address
, specify the IP address from step 1.