04 01 install portainer - kropachev/1c-devops-jr GitHub Wiki
Portainer - это веб-интерфейс для управления контейнерными средами (в том числе Kubernetes).
Portainer не нужен для выполнения пайплайна, но в нем удобно смотреть статус подов, логи и т.д.
На этом шаге мы установим Portainer в кластер k3s через Helm-чарт.
Официальная документация Portainer по установке в Kubernetes:
- Deploy Portainer using Helm Chart: https://portainer.github.io/k8s/charts/portainer/
- Install Portainer CE on Kubernetes (Bare Metal): https://docs.portainer.io/start/install-ce/server/kubernetes/baremetal
Создаем папку для конфигов portainer.
mkdir -p /k3s-1c-ci/portainer
cd /k3s-1c-ci/portainerNamespace (namespace - пространство имен) - это механизм Kubernetes, который логически разделяет ресурсы внутри одного кластера.
kubectl create namespace portainer --dry-run=client -o yaml | kubectl apply -f -Создаем TLS Secret в namespace portainer:
kubectl create secret tls onecci.lan.tls \
--cert=/k3s-1c-ci/tls/tls.crt \
--key=/k3s-1c-ci/tls/tls.key \
-n portainer \
--dry-run=client -o yaml | kubectl apply -f -Проверка:
kubectl get secret onecci.lan.tls -n portainerОписываем установку декларативно через values.yaml.
Создаем файл:
nano portainer-values.yamlimage:
tag: lts
service:
type: ClusterIP
ingress:
enabled: true
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
hosts:
- host: portainer.onecci.lan
paths:
- path: /
pathType: Prefix
tls:
- secretName: onecci.lan.tls
tls:
force: falseДобавляем официальный репозиторий Portainer для Helm-чарта:
helm repo add portainer https://portainer.github.io/k8s/
helm repo updateВыполняем команду установки.
helm upgrade --install portainer portainer/portainer \
--namespace portainer \
-f portainer-values.yaml⚠️ Ошибка Error: Kubernetes cluster unreachable
Здесь может появиться ошибка
Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version": dial tcp 127.0.0.1:8080: connect: connection refusedЭта ошибка почти всегда означает что Helm не видит kubeconfig, поэтому пытается подключиться к “кластеру по >умолчанию” localhost:8080 Самый простой способ решения указать kubeconfig k3s:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl get nodesПосле этого повторите попытку установки.
Проверяем, что поды работают:
kubectl -n portainer get podsСмотрим колонку READY. 0/1, говорит о том что под запускается, а 1/1 означает что сервис готов и можно его использовать.
Проверяем сервис (тип ClusterIP):
kubectl -n portainer get svcPortainer будет доступен по доменному имени через Traefik Ingress.
Откройте в браузере:
https://portainer.onecci.lan
⚠️ Важно! Если не успеть открыть страницу Portainer за 5 минут, Portainer заблокирует UI до перезапуска, при открытии страницы будет выдаваться ошибкаYour Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer.Решается просто - перезапуском командойkubectl -n portainer rollout restart deployment/portainer.
После создания пароля отображается мастер первоначальной настройки (Environment Wizard).
Portainer запущен внутри кластера k3s, поэтому он автоматически обнаружил локальное Kubernetes-окружение.
Это подтверждается сообщением на экране:
We have connected your local environment of Kubernetes to Portainer.
На экране мастера отображаются две кнопки:
Get Started Использовать локальный Kubernetes-кластер, в котором запущен Portainer (наш k3s).
Add Environments Подключение дополнительных окружений (другие Kubernetes-кластеры, Docker, Swarm и т.д.).
Для текущего сценария выбираем Get Started - локальный кластер.
Готово.