Kubernetes
OpenCore was designed to run on kubernetes. You can still deployed in other ways, but for most production setups, that is the recommend platform to run it on, at least for the primary site.
We use helm to deploy different deployments to kubernetes, so first install helm simply drop this some where and add it to the path, so you can reference it from cmd/powershell. Also, make sure you have kubectl installed and configured to access your kubernetes cluster.
note: OpenCore requires a premium license to run on Kubernetes. Read mere here
OpenCore depends on traefik as ingress controller. It’s beyond the scope of this guide on how to install this in non-clouded environments, but if you are using GKE, aWS, Azure, Alibaba or some of the other cloud providers that has out of the box external loadbalencers, you can simpy deploy trafik with the service with type: LoadBalancer, and from here on everything “just works”.
You can find an example on how to deploy traefik using help on this page
I also go though this process in the video
So first we need to add OpenIAP’s helm repo and update this and other repos you might have installed
helm repo add openiap https://open-rpa.github.io/helm-charts/
helm repo update
Next create a values file. To avoid confusen i recomend you name this file the same as your namespace and the “instance” you are creating. So imaging you want to deploy an OpenCore instance responding to demo.mydomain.com then create a file named demo.yaml
There is a ton of different settings you can fine tune, you can always find all the settings in the OpenCore values file here but you only need to add the values you want to override. So as a good starting point, add the following to your demo.yaml file
# this will be the root domain name hence your OpenCore url will now be http://demo.mydomain.com
domainsuffix: mydomain.com # this will be added to all domain names
domain: demo
# if using a reverse procy that add ssl, uncomment below line.
# protocol: https
OpenCore:
# external_mongodb_url: mongodb+srv://user:pass@cluster0.gcp.mongodb.net?retryWrites=true&w=majority
rabbitmq:
default_pass: supersecret
# if you are using mpongodb atlas, or has mongodb running somewhere else
# uncomment below line, and external_mongodb_url in OpenCore above
# mongodb:
# enabled: false
So first we need to create a namespace. Namespaces allow us to segregate multiple installations from each other, and ensure they run completely independently of each other.
kubectl create namespace demo
and now we can create our first OpenCore installation inside that namespace
helm install openflow openiap/openflow -n demo --values ./demo.yaml
If you update the demo.yaml values file, you can update the installation with
helm upgrade openflow openiap/openflow -n demo --values ./demo.yaml
For more help and guides, check out my youtube channel, here is a few more about kubernetes Utilizing multiple node pools
After install, this will help you getting started with monitoring (premium OpenCore only!)
Performance tuning and/or troubleshooting workflows or the platform (premium OpenCore only!)