The recommended way to install Keep on Kubernetes is via Helm Chart.
Follow these steps to set it up.
Prerequisites
Helm CLI
See the Helm documentation for instructions about installing helm.
Ingress Controller (Optional)
You can skip this step if:
- You already have ingress-nginx installed.
- You don’t need to expose Keep to the internet/network.
Overview
An ingress controller is essential for managing external access to services in your Kubernetes cluster. It acts as a smart router and load balancer, allowing you to expose multiple services through a single entry point while handling SSL termination and routing rules.
Keep works best with both ingress-nginx and HAProxy Ingress controllers, but you can customize the helm chart for other ingress controllers too.
Nginx Ingress Controller
Check ingress-nginx Installed
You check if you already have ingress-nginx installed:
kubectl -n ingress-nginx get pods
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-d49697d5f-hjhbj 1/1 Running 0 4h19m
kubectl get ingressclass
NAME CONTROLLER PARAMETERS AGE
nginx k8s.io/ingress-nginx <none> 4h19m
Install ingress-nginx
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--set controller.config.allow-snippet-annotations=true \
--namespace ingress-nginx --create-namespace
Verify installation:
kubectl get ingressclass
NAME CONTROLLER PARAMETERS AGE
nginx k8s.io/ingress-nginx <none> 4h19m
Verify if snippet annotations are enabled:
kubectl get configmap -n ingress-nginx ingress-nginx-controller -o yaml | grep allow-snippet-annotations
allow-snippet-annotations: "true"
HAProxy Ingress Controller
Install ingress-haproxy
helm upgrade --install haproxy-ingress haproxy-ingress \
--repo https://haproxy-ingress.github.io/charts \
--namespace ingress-haproxy --create-namespace
Verify installation:
kubectl get ingressclass
NAME CONTROLLER PARAMETERS AGE
haproxy haproxy-ingress.github.io/controller <none> 4h19m
Verify if controller is running:
kubectl get pods -n ingress-haproxy -l app.kubernetes.io/instance=haproxy-ingress
NAME READY STATUS RESTARTS AGE
haproxy-ingress-controller-x4n2z 1/1 Running 0 4h19m
Installation
With Ingress-NGINX (Recommended)
helm repo add keephq https://keephq.github.io/helm-charts
helm install keep keephq/keep -n keep --create-namespace
With Ingress-HAProxy (Recommended)
helm repo add keephq https://keephq.github.io/helm-charts
helm install keep keephq/keep -n keep --create-namespace --set global.ingress.className=haproxy
Without Ingress (Not Recommended)
helm repo add keephq https://keephq.github.io/helm-charts
helm install keep keephq/keep -n keep --create-namespace \
--set global.ingress.enabled=false
Accessing Keep
Ingress
If you installed Keep with ingress, you should be able to access Keep.
kubectl -n keep get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
keep-ingress nginx * X.X.X.X 80 4h16m
Keep is available at http://X.X.X.X :)
Without Ingress (Port-Forwarding)
Use the following commands to access Keep locally without ingress:
kubectl port-forward svc/keep-frontend 3000:3000 -n keep &
kubectl port-forward svc/keep-backend 8080:8080 -n keep &
kubectl port-forward svc/keep-websocket 6001:6001 -n keep &
Keep is available at http://localhost:3000 :)
Configuring HTTPS
Prerequisites
- Domain Name: Example - keep.yourcompany.com
- TLS Certificate: Private key (tls.key) and certificate (tls.crt)
Create the TLS Secret
Assuming:
tls.crt
contains the certificate.
tls.key
contains the private key.
kubectl create secret tls keep-tls --cert=./tls.crt --key=./tls.key -n keep
Update Helm Values for TLS
helm upgrade -n keep keep keephq/keep \
--set "global.ingress.hosts[0]=keep.example.com" \
--set "global.ingress.tls[0].hosts[0]=keep.example.com" \
--set "global.ingress.tls[0].secretName=keep-tls"
Alternatively, update your values.yaml
:
...
global:
ingress:
hosts:
- host: keep.example.com
tls:
- hosts:
- keep.example.com
secretName: keep-tls
...
Uninstallation
To remove Keep and clean up:
helm uninstall keep -n keep
kubectl delete namespace keep