Настройка Kubernetes-кластера из 1-го мастера и 2-х нод на виртуальных машин c Ubuntu 18.04 Для практической работы были взяты виртуалки в Digital Ocean(2Gb, 2СPU) с бесплатным бонусом в размере 100$ в течение 60 дней при регистрации на Digital Ocean. Алгоритм действий состоит из следующих шагов 1.Подготовка к запуску кластера(отключение swap, настройка /etc/hosts-файла серверов, установка имени […]
Архивы рубрики ‘DevOps’
Установка Kubernetes-кластера с помощью kubeadm на виртуальных машинах c Ubuntu18.04
Настройка Cloud Nat для приватного Kubernetes кластера в Google Cloud
Cloud NAT позволяет виртуальным машинам и подам выходить в Интернет, используя общий публичный IP-адрес. Приватный Google Kubernetes-кластер, ноды которого не имеют публичных IP-адресов используются в случае: — с точки зрения безопасности,чтобы невозможно было подключиться к ним снаружи — необходимо,чтобы все ноды/поды выходили в Интернет с одного(или нескольких) IP-адреса/ов(например, для добавления этих одного/нескольких IP-адресов в white-листы […]
Настройка pipeline авто-деплоя в Kubernetes-кластер с помощью Gitlab и Helm
Имеются два окружения staging и production(так же будут называться и namespace-ы в Kubernetes-кластере) Настраиваем автоматический deploy в Kubernetes кластер при коммите в одну из веток При коммите в ветку develop – деплой приложений в namespace staging При коммите в ветку staging – деплой приложений в namespace production С помощью GitlabCI выполняется деплой,в котором используется Helm-чарт […]
Мониторинг Kubernetes кластера с помощью Prometheus
За основу был взят стек мониторинга Prometehus с помощью Prometheus operator отсюда https://github.com/helm/charts/tree/master/stable/prometheus-operator https://coreos.com/operators/prometheus/docs/latest/user-guides/getting-started.html Все параметры, которые необходимо было переопределить указаны в файле custom-values.yaml Мониторинг стек запускается с помощью Helm-чарта
1 |
# helm install --name monitoring-stack stable/prometheus-operator --set grafana.adminPassword="mygrafanapassword" -f custom-values.yaml |
Обновление стека выполняется командой
1 |
# helm upgrade monitoring-stack stable/prometheus-operator --set grafana.adminPassword="mygrafanapassword" -f custom-values.yaml |
Установка Helm клиента https://docs.helm.sh/using_helm/#installing-helm https://docs.helm.sh/using_helm/
1 |
# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.3-linux-amd64.tar.gz |
Последняя версия доступная здесь https://github.com/helm/helm/releases
1 |
# tar -zxvf helm-v2.12.3-linux-amd64.tar.gz |
1 |
# sudo mv linux-amd64/helm /usr/local/bin/helm |
Проверка текущего контекста,куда будет установлен […]
Установка и базовая настройка Google Cloud SDK для работы с Google Kubernetes кластером
Установка gcloud Перед использованием необходимо создать проект и включить биллинг для этого проекта в Google Console Экспорт переменной окружения с корректным дистрибутивом
1 |
# export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" |
Добавление репозитария Googl SDK
1 |
# echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list |
Импортирование Google Cloud публичного ключа
1 |
# curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - |
Обновление локального кеша пакетов и установка google-cloud-sdk
1 |
# sudo apt-get update && sudo apt-get install google-cloud-sdk |
Базовая инициализация конфигурации
1 |
# gcloud init |
— разрешаем доступ для gcloud в Google-аккаунте — выбираем […]
Запуск локального Kubernetes кластера с помощью Minikube c KVM2-драйвером
Minikube позволяет запускать одно-нодовый Kubernetes кластер внутри виртуальной машины на локальном компьютере Проверка поддержки процессором виртуализации
1 |
# egrep --color 'vmx|svm' /proc/cpuinfo |
Установка minikube https://kubernetes.io/docs/tasks/tools/install-minikube/ Загрузка бинарника minikube,установка бита исполнения на него и копирование в /usr/local/bin для того,чтобы minikube был доступен в переменной PATH
1 |
# curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube |
1 |
# cp minikube /usr/local/bin && rm minikube |
Для использования minikube предварительно необходимо установить kubectl и kvm2-драйвер Установка и настройка […]
Мониторинг Docker контейнеров, Docker-хостов в Docker Swarm и в ECS-кластерах с помощью Prometheus+Grafana+AlertManager+Node-exporter+Cadvisor
За основу был взять стек мониторинга отсюда https://github.com/stefanprodan/swarmprom В наличие 3 ноды в Docker Swarm-кластере: одна нода — manager и две ноды — worker
1 |
# docker node ls |
1 2 3 4 |
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION yxbot7la1mh84zdg6c4ca9mgy * lxc Ready Active Leader 18.06.1-ce x2uq0iyuxob9lu2wa59s0kt9t ubuntu161 Ready Active 18.06.1-ce t64s951d2pm5c8xejfv2uwkmc ubuntu162 Ready Active 18.09.1 |
Например, мониторинг стек будем запускать на мастере(на продакшен для этого нужно выделить отдельную ноду, которую нужно добавить в Swarm-кластер и именно на этой ноде запускать мониторинг) А также имеется […]
Использование AWS Parameter Store для безопасного хранения credentials для ECS-tasks
Использование AWS Parameter Store для хранения credentials, ключей и другой sensitive данных, которые нежелательно хранить в открытом виде в репозитарии или в образе. В ECS-кластере на основе EC2-инстанса запускаем Task CouchDB-prometheus-exporter, в котором происходит подключение к CouchDB-серверу для снятия статистики и предоставления метрик для мониторинг сервера(Prometheus) В Task definition будем использовать переменные, значения которых будут […]
Jenkins: создание pipeline Continuous Delivery процесса с деплоем на Docker Swarm Cluster для нескольких окружений
Предположим, у нас есть два окружения Staging и Production На Staging окружении деплоится ветка c именем staging, а на Produсtion – с именем master Тип сборки в Jenkins – pipeline multibranch Запуск сборки выполняется автоматически при коммите в репозитарий(Bitbucket) Настройка автоматического запуска сборки при коммите в репозитарий Bitbucket описана здесь https://kamaok.org.ua/?p=2833 При использовании типа сборки […]
Jenkins: Настройка агента на основе Amazon EC2-инстанса
Ранее рассматривалась настройка Jenkins агентов(slave) на основе отдельного Linux-сервера и Docker контейнера В данной статье рассмотрим настройку Jenkins-агента(slave) на основе динамического создания(и удаления) Amazon EC2-инстанса В AWS-консоли В IAM-вкладке 1.Создать группу jenkins,присодинить к этой группе роль AmazonEC2FullAccess 2.Создать пользователя jenkins(тип c Access/Secret key), включить его в группу Jenkins,сохранить Access/Secret ключи 3.В EC2-вкладке Создать пару SSH-ключей […]