This demo will show you how to install OpenProject on a Kubernetes cluster using Helm. Attachments will be stored on an S3-compatible Object Storage, and a TLS certificate will be automatically generated with Let's Encrypt.
We assume that you have already created a Kubernetes cluster and are able to connect to it using kubectl
.
- Add OpenProject helm chart repository:
helm repo add openproject https://charts.openproject.org
helm repo update
-
Install ingress-nginx and cert-manager for automatic Let's Encrypt certificate generation:
Note that you should only do this if you do not yet have another way of generating TLS certificates in your cluster.
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace \
--set controller.replicaCount=2
helm upgrade cert-manager cert-manager --install \
--repo https://charts.jetstack.io \
--namespace cert-manager \
--create-namespace \
--set installCRDs=true
- Create the
openproject
namespace:
kubectl create namespace openproject
- Create the issuer for Let's Encrypt, in the
cp config/issuer.example.yaml config/issuer.yaml
Edit config/issuer.yaml
with your email address, then apply:
kubectl apply -f config/issuer.yaml --namespace openproject
- Find your ingress-nginx ingress controller's external IP address:
kubectl get service ingress-nginx-controller -n ingress-nginx
You can then use the result to configure an A record for your domain in your DNS provider. In this demo I will point demo-k8s.openproject-edge.eu
at the IP 51.158.59.132
.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.45.50.118 51.158.59.132 80:30341/TCP,443:32421/TCP 62m
Copy the example values file:
cp config/values.example.yaml config/values.yaml
Edit the file and set:
- The domain name to use.
- Your object storage credentials.
Once the prerequisites and your config/values.yaml
file are in place, you can now deploy OpenProject:
helm upgrade \
--wait \
--namespace openproject \
--install openproject \
--values config/values.yaml \
openproject/openproject
At the end of the installation, your OpenProject URL will be displayed, and you can now connect using the default admin credentials:
- username:
admin
- password:
admin
You can simply remove the entire openproject
namespace:
kubectl delete namespace openproject
Output the generated YAML files:
helm template --debug --create-namespace --namespace openproject \
--values config/values.yaml \
openproject openproject/openproject