lisovenko microservices repository
kubernetes-5
- Создана новая ветка kubernetes-5;
- Развернуты Prometheus и Grafana;
- Настроены сборы метрик;
- Развернут EFK стек.
kubernetes-4
-
Создана новая ветка kubernetes-4;
-
Установка пакетного менеджера helm;
-
Установка аддона tiller для обшения с API Kubernetes. Tiller является серверной частью helm-а; Создаем tiller.yml и запускаем tiller - сервер. helm init --service-account tiller Проверяем kubectl get pods -n kube-system --selector app=helm 12:35 $ kubectl get pods -n kube-system --selector app=helm NAME READY STATUS RESTARTS AGE tiller-deploy-6dbd4749b6-dk5hz 1/1 Running 1 6m19s tiller-deploy-6dbd4749b6-svkqt 0/1 Terminating 0 26m
-
Создаем директорию Chart;
-
Разработка Chart’а для компонента ui приложения в файле Chart.yaml; Перенос манифестов ui в ui/templates;
-
Шаблонизируем service.yaml, deployment.yaml, ingress.yaml и определим значения в values.yaml;
-
Установим несколько релизов ui и параметризируем значения;
-
Собираем пакеты для остальных компонентов;
-
Добавлен новый пул узлов для увеличения производительности;
-
Добавлен репозиторий Gitlab;
-
Запускаем gitlab и создаем новую группу с проектами ui, comment, post, reddit-deploy;
-
Переносим исходные коды в Gitlab_ci/ui , /comment, /post и пушим в gitlab;
-
Переносим содержимое директории Charts в Gitlab_ci/reddit-deploy и пушим в gitlab;
-
Создаем .gitlab-ci.yml и пушим из директорий ui/, comment/, post/;
-
Поправлены пайплайны сервисов comment и post.
kubernetes-3
- Создана новая ветка kubernetes-3;
- Рассмотрен плагин kube-dns, предоставляющий DNS сервис;
- Рассмотрен Ingress Controller;
- Настроен балансировщик нагрузки;
- Внедрение для приложения TLS;
- Настроен прием только HTTPS траффика;
- Рассмотрены network policy;
- Рассмотрен механизмы PersistentVolume и PersistentVolumeClaim.
kubernetes-2
- Создана ветка kubernetes-2;
- Установка и запуск Minikube; minikube start
- Проверка, что minikube-кластер развернут; kubectl get nodes
- Рассмотрена конфигурация kubectl, информацию можно посмотреть по ~/.kube/config; kubectl конфигурируется для подключения к разным кластерам, под разными пользователями. Текущий контекст: kubectl config current-context Список всех контекстов: kubectl config get-contexts
- Описание состояния приложения в yaml-манифестах в директории kubernetes/reddit; Основные объекты - ресурсы Deployment
- Рассмотрены возможности пробрасывания сетевых портов подов на локальную машину; kubectl port-forward local_port:pod_port
- Рассмотрен объект Service для связи компонентов между собой;
- Запуск и проверка kubectl apply -n dev -f reddit/;
- Рассмотрен тип сервиса NodePort для доступа к ui-сервису снаружи;
- Проверка через minikube service ui;
- Рассмотрен аддон dashboard и его возможности; Включить аддон: minikube addons enable dashboard Запуск: minikube dashboard
- Рассмотрены namespace;
- Разделение среды для разработки приложения от всего остального кластера;
- Разворачиваем кластер Kubernetes в GCP;
- Запускаем приложение в GCP.
kubernetes-1
- Создана новая ветка kubernetes-1;
- Пройден курс kubernetes-the-hard-way (3 контроллера, 1 воркер);
- Поды запустились; kubectl apply -f ui-deployment.yml kubectl apply -f post-deployment.yml kubectl apply -f mongo-deployment.yml kubectl apply -f comment-deployment.yml
Logging-1
- Создана новая ветка logging-1;
- Обновлен код приложения и созданы новые образы;
- Создан новый docker host в GCP;
- Создан отдельный compose-файл docker-compose-logging.yml;
- Создаем образ Fluentd;
- Запускаем и смотрим логи сервиса post;
- Определим драйвер для логирования для сервиса post внутри compose-файла;
- Поднятие инфрастуктуры централизованной системы логгирования;
- Настройка инструмента для визуализации и анализа логов - Kibana:
- Создание нового index pattern;
- Анализ графика, лог-сообщения, работа с поиском по полям;
- Создание фильтра для парсинга json логов для выделения в поля некоторых событий;
- Пересобираем образ и перезапускаем сервис fluentd;
- Проверяем поиск;
- Определяем драйвер логгирования для ui сервиса в compose-файле;
- Рассмотрены регулярные выражеия и grok-щаблоны для парсинга;
- Добавлен сервис логгирования Zipkin и рассмотрены его возможности.
Monitoring-2
- Создана новая ветка monitoring-2;
- Подготовка окружения, создание docker-host;
- Выделение мониторинга из docker-compose.yml в docker-compose-monitoring.yml;
- Запуск сервисов;
- Знакомство с cAdvisor ui;
- Внесение инструмента Grafana в docker-compose-monitoring.yml и выбор dashboard;
- Создание dashboards для Grafana;
- Настроил уведомление в slack от alertmanager.
- Запушил собранные вами образы на DockerHub
https://hub.docker.com/u/lisovenko
Monitoring-1
- Создана новая ветка monitoring-1;
- Создаем новые правила фаерволла для Prometheus и Puma;
- Создание docker хоста;
- Запуск готового образа Prometheus с DockerHub;
- Рассмотрены стандартные метрики;
- Рассмотрены targets;
- Собираем на основе готового образа из Dockerhub свой docker образ:
- Создаем Dockerfile, который будет копировать файл конфигурации с нашей машины внутрь контейнера;
- Определяем собираемые метрики в prometheus.yml;
- Собираем docker образ Prometheus;
- Собриаем docker образы при помощи скриптов docker_build.sh в каждой директории;
- Определяем в docker-compose.yml новый сервис - Prometheus;
- Удаляем директивы build в виду использования скрипта docker_build.sh для сборки образов docker;
- Добавлена секция networks для сервиса Prometheus в docker-compose.yml для общения по сети с другими сервисами;
- Поднятие сервисов, приложение и Prometheus - запустились.
- Настройка отслеживания состояния микросервисов;
- Использование Exporters.
https://hub.docker.com/u/lisovenko
Gitlab-ci-1
- Создана новая ветка gitlab-ci-1;
- Создан новый инстанс gitlab-ci;
- Запуск gitlab через omnibus-установку и отключаем регистрацию новых пользователей;
- Создание новой группы и проекта;
- Добавляем remote;
- Добавляем .gitlab-ci.yml;
- Регистрируем runner;
- После регистрации runner запустился;
- Добавили исходный код reddir в репозиторий и изменили описание пайплайна в .gitlab-ci.yml;
- Добавили simpletest.rb с тестом;
- Добавлена библиотека для тестирования в Gemfile;
- Изменяем пайплайн, чтобы deploy job стал определением окружения dev;
- Определяем два новых этапа : stage и production, далаем их manual;
- Добавление директивы only с регулярным выражением, описывающим версию тега;
- Push с тегом и без;
- Определение динамического окружения с помощью переменных;
Docker-4
- Создана новая ветнка docker-4;
- Подключаемся к ранее созданному docker-host;
- Работа с сетью none, host, bridge;
- Установка и работа с docker-compose;
- Внедрение переменных в docker-compose.yml;
- Базовое имя проекта зависит от директории, поменять можно с помощью COMPOSE_PROJECT_NAME.
Docker-3
- Создана новая ветка docker-3;
- На ранее созданном docker хосте установлено приложение из трех компонентов;
- Работа с Dockerfile;
- Оптимизация размера образа ui;
- Создаем docker volume reddit_db и подключаем его к MongoDB.
Docker-2
- Добавлен новый репозиторий;
- Установлен docker;
- Проведена работа с основными командами docker;
- Установлен docker-machine;
- Создан контейнер внутри инстанса;
- Произведена загрузка образа в Docker Hub и обратно;