Основные идеи поста:
- Установка Kubernetes приложений это не сложно.
- Можно использовать легкий Kubernetes у себя на компьютере для быстрого развертывания приложений.
- Можно использовать ingress (nginx) локально используя metallb
- Все действия и команды похожи на реальные команды, которые вы будете делать в облаке.
MicroK8s — это CNCF-сертифицированное развертывание локального кластера Kubernetes, он предназначен для быстрой и легкой установки потока Kubernetes, изолированной от вашей локальной среды. В качестве оснастки он запускает все службы Kubernetes (т.е. без виртуальных машин), упаковывая при этом весь необходимый набор библиотек и файлов. Эта изоляция достигается за счет упаковки всех двоичных файлов для Kubernetes, Docker.io, iptables и CNI в единый пакет Snap.
Преимущества microk8s:
- использует только необходимые ему ресурсы
- кластеризация нескольких microk8s
- легкая и простая установка в Ubuntu через snap, хваленая изоляция snap пакетов, возможность легкого отката на предыдущую версию
- наличие аддонов
Snaps являются кросс-дистрибутивными, независимыми и простыми в установке приложениями, упакованными со всеми их зависимостями для запуска во всех основных дистрибутивах Linux. Snaps безопасны — они ограничены и не ставят под угрозу всю систему. Они работают под разными уровнями содержания (то есть степень изоляции от базовой системы и друг от друга).
Apache Superset — это веб-приложение для поиска и визуализации данных.
Helm — это диспетчер пакетов для Kubernetes, упрощающий для разработчиков и операторов упаковку, настройку и развертывание приложений и служб в кластерах Kubernetes.
MetalLB — это реализация балансировщика нагрузки для кластеров Kubernetes на «голом железе» со стандартными протоколами маршрутизации. Он выделяет службы с отдельными выделенными адресами IP, выделенными из пула.
Операционная система: Ubuntu 18.04
Устанавливаем Snapd, git
sudo apt-get update && sudo apt-get install -y snapd git
Устанавливаем microk8s версии 1.18
sudo snap install microk8s --classic --channel=1.18/stable && sudo snap install helm --classic
Стартуем microk8s
sudo microk8s.start
Добавляем текущего пользователя в группу microk8s
sudo usermod -a -G microk8s $USER
Меняем права директории .kube в домашней директории текущего пользователя
sudo chown -f -R $USER ~/.kube
Выходим из сессии и заходим снова
exit
Делаем алиал kubectl на microk8s.kubectl
alias kubectl=microk8s.kubectl
Активируем дополнения microk8s. В опциях дополнения metallb указываем список IP с ваших сетевых карточек. Если у вас 1 сервер, то это два одинаковых IP адреса. Кластеризацию microk8s я не проверял, но по идее нужно указывать IP адреса обоих серверов. Для этого обязательна кластеризация microk8s. IP на сетевой карте — 192.168.22.7. У вас он будет другой.
microk8s enable dns ingress storage metallb:192.168.22.7-192.168.22.7
Смотрим что все поды у нас Running
kubectl get all --all-namespaces
Скачиваем репозиторий superset
git clone https://github.com/apache/superset.git
Переходим в директорию где хранится helm для superset
cd superset/helm/superset
Скачиваем зависимиости для текущего helm
helm dependency update
Сохраняем конфиг для подключения к Kubernetes
microk8s.kubectl config view --raw > $HOME/.kube/config
Запускаем установку superset с помощью helm используя конфиги в текущей директории
helm install --set persistence.enabled=true,service.type=LoadBalancer,ingress.enabled=true,ingress.hosts[0]=superset.192.168.22.7.xip.io superset ./
Если вы перейдет по ссылке superset.192.168.22.7.xip.io — то увидите вот такой экран.
Логин и пароль по умолчанию admin/admin. Superset настроен. Можно пользоваться.
Установка Harbor Registry используя helm
helm repo add harbor https://helm.goharbor.io
helm install --wait --set expose.ingress.hosts.core=harbor.192.168.22.8.sslip.io --set notary.enabled=false --set persistence.enabled=false --set externalURL=http://harbor.192.168.22.8.sslip.io --set harborAdminPassword=password harbor harbor/harbor
Логин admin, пароль тот, который указали в переменной harborAdminPassword. Harbor Registry настроен.
Если нужно удалить весь кластер Kubernetes в microk8s, то можно воспользоваться командой reset
microk8s reset --destroy-storage
Установка superset с помощью helm в Яндекс облако.
- Создаем, настраиваем kubernetes в Яндекс облаке.
- Резервируем IP адрес в Яндекс облаке.
- Запускаем установку Superset такой командой
helm install --atomic \ --set persistence.enabled=true \ --set service.type=LoadBalancer \ --set service.loadBalancerIP=130.193.44.125 \ --set ingress.enabled=true \ --set ingress.hosts[0]=superset.130-193-44-125.my.local-ip.co \ superset ./
В параметре service.loadBalancerIP указываем зарезервированный IP адрес.
В параметре ingress.hosts[0] указываем строку 'superset.130-193-44-125.my.local-ip.co', где superset — название вашего приложения, а строку 130-193-44-125 формируем из IP адреса заменяя точки на тире.
Получаем Superset в Яндекс облаке.