Portainer is an interesting piece of software that allows you to manage running containers in Docker, Docker Swarm and of course, Kubernetes. There are instructions on how to run the server part on your system, but as usual, I like to have my own twist on things.
While I am no big fan of helm, we are going to use it here. So let’s add the repository:
helm repo add portainer https://portainer.github.io/k8s/
helm repo update
Now you can peek at the helm values and decide on how to install the thing:
helm upgrade --install portainer portainer/portainer \
--create-namespace -n portainer \
--set image.tag=lts \
--set service.type=ClusterIP \
--set persistence.size=8G
You will notice that I do not have helm install an Ingress too. I do this because we may be running different ingress controllers for different things and we might want to do stuff that goes outside what the default Ingress object constructed by the helm chart does. In my case this is using cert-manager:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: portainer
namespace: portainer
annotations:
nginx.ingress.kubernetes.io/service-upstream: "true"
cert-manager.io/issuer: "letsencrypt-portainer"
cert-manager.io/duration: "2160h"
cert-manager.io/renew-before: "360h"
spec:
ingressClassName: nginx
tls:
- hosts:
- portainer.example.com
secretName: portainer-example-com-tls
rules:
- host: portainer.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: portainer
port:
number: 9000
I hope this helps into starting your Portainer journey.