Preparing the Ubicloud Environment
To prepare the Ubicloud environment for running Windmill, follow the steps outlined in the Ubicloud documentation:- Setup your Ubicloud account and enter your billing details.
- Create a Managed PostgreSQL server: Start with a hobby tier option and scale your database as needed.
- Set up a Managed Kubernetes cluster: Configure one control plane node and three worker nodes as a good initial setup.
Preparing Your Environment
Step 0: Ensure that your shell environment has kubectl and helm installed.
Use the commands to verify thatkubectl and helm are installed:
Step 1: Obtain the kubeconfig File
- Download the kubeconfig: Access the Kubernetes cluster in the Ubicloud console and download the kubeconfig file.
- Copy the file to the default kubeconfig location (
$HOME/.kube/config) or set theKUBECONFIGenvironment variable to configure your Kubernetes client (e.g., kubectl).
Step 2: Create a Namespace for Windmill
Create a namespace for the Windmill deployment:Step 3: Store the Database Connection String in a Secret
Retrieve the connection string for your PostgreSQL database from the Ubicloud console and create a secret:Deploying Windmill
Add Windmill Helm repo:values.yaml file for the Windmill chart:
values.yaml:
Exposing Windmill to the Internet
By default, Windmill chart restricts the windmill-app service to internal cluster access. To access the Windmill UI via a browser, expose the service externally using a load balancer:Connecting to Windmill
The application will be accessible via your cluster’s load balancer URL at port 8000 a few minutes after theEXTERNAL-IP is assigned. Run the following command to retrieve the address for your Windmill deployment.
Configuring TLS for Secure Access
To expose Windmill securely via HTTPS, we’ll employ Nginx Gateway Fabric, cert-manager, and Let’s Encrypt using the Kubernetes Gateway API.Installing NGINX Gateway Fabric & cert-manager
Use the following commands to install the Gateway API CRDs, NGINX Gateway Fabric, and cert-manager:Configuring HTTPS with Gateway API
To expose Windmill securely, you first need the external domain for your cluster. You can find this “Service URL” (e.g.,mycluster-services-0b1c1.k8s.ubicloud.com) in the Overview page of your Kubernetes cluster in the Ubicloud console. Alternatively, you can use the address retrieved in the previous step:
If you prefer using a custom domain like
windmill.yourdomain.com, create a CNAME record with your DNS provider pointing it to the Service URL mentioned above.Updating Windmill Chart Values
Update the domain values and disable the built-in ingress invalues.yaml, as we will manage the Gateway API resources manually:
Reverting Service Type
Since external traffic will now be handled by the Gateway, revert thewindmill-app service back to ClusterIP: