Официальная инструкция по установке Portainer CE - тык
Перед установкой нужно определить в кластере StorageClass по умолчанию:
kubectl patch storageclass <storage-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Установка выполняется с помощью Helm:
helm repo add portainer https://portainer.github.io/k8s/
helm repo update
Есть несколько способов вывода Portainer в сеть:
Через NodePort через порт 30779:
helm upgrade --install --create-namespace -n portainer portainer portainer/portainer \
--set tls.force=true \
--set image.tag=lts
При использовании этого способа Portainer будет выведен через порт 30779 и доступен по IP адресу любой ноды кластера.
Через Ingress Controller:
helm upgrade --install --create-namespace -n portainer portainer portainer/portainer \
--set service.type=ClusterIP \
--set tls.force=true \
--set image.tag=lts \
--set ingress.enabled=true \
--set ingress.ingressClassName=<ingressClassName (eg: nginx)> \
--set ingress.annotations."nginx\.ingress\.kubernetes\.io/backend-protocol"=HTTPS \
--set ingress.hosts[0].host=<fqdn (eg: portainer.example.io)> \
--set ingress.hosts[0].paths[0].path="/"
Здесь нужно задать желаемый Ingress, fqdn по которому будет доступен Portainer и route.
Через выделенный IP балансировщика нагрузки:
helm upgrade --install --create-namespace -n portainer portainer portainer/portainer \
--set service.type=LoadBalancer \
--set tls.force=true \
--set image.tag=lts
При использовании этого способа Portainer будет доступен по назначенному IP-адресу балансировщика нагрузки на порту 9443
для HTTPS.