Updates rtfm.co.ua 🇺🇦 – Telegram
Updates rtfm.co.ua 🇺🇦
723 subscribers
35 photos
457 links
Канал @rtfm - новые посты на https://rtfm.co.ua.
Обсуждения - группа @rtfmco https://t.me./rtfmco
Download Telegram
Ansible: модуль community.kubernetes и установка Helm-чарта с ExternalDNS

В посте Kubernetes: обновление DNS в Route53 при создании Ingress выполнили ручную установку ExternalDNS, и посмотрели, как он работает – пора добавить автоматизацию его установки на кластера. В роли Configuration Management Tool у нас используется Ansible, для которого существует модуль community.kubernetes – используем его. Вообще, есть много модулей для работы с Helm, например – helm…

https://rtfm.co.ua/ansible-modul-community-kubernetes-i-ustanovka-helm-charta-s-externaldns/
ArgoCD: CIOps vs GitOps и деплой приложения из TravisCI

Штош, пришло время подумать о том, как мы будем деплоить наши приложения. Сейчас у нас используются Github-репозитории с кодом и Helm-шаблонами, и Jenkins. Билд в Jenkins в большинстве проектов запускается вручную, после чего: Jenkins-джоба клонирует репозиторий с кодом и манифестами, билдит Docker-образ пушит его в Docker Hub вызывает helm upgrade --install, которому через --set передаёт…

https://rtfm.co.ua/argocd-ciops-vs-gitops-i-deploj-prilozheniya-iz-travisci/
Prometheus: Alertmanager Web UI и Silence алертов

Частота отправки активных алертов из Alertmanager определяется параметром repeat_interval в файле /etc/alertmanager/config.yml. У нас этот интервал задан в 15 минут, в результате чего в Slack каждые 15 минут приходят уведомления обо всех активных алертах в системе. Но некоторые алерты это такие себе “known issue”, когда о проблеме мы знаем, девелоперы её взяли в работу для…

https://rtfm.co.ua/prometheus-alertmanager-web-ui-i-silence-alertov/
Logz.io: сбор логов из Kubernetes – fluentd vs filebeat

У нас для сбора логов из Kubernetes-кластера и их просмотра используется Logz.io (есть и локальный Loki). Конкретно сбором и отправкой логов занимается Fluentd-под на каждой WorkerNode, которые деплоятся из DaemonSet в его дефотной конфигурации, см. документацию logzio-k8s. Столкнулся с проблемой, что эти поды используют слишком много CPU – до 3000 millicpu, при том, что на…

https://rtfm.co.ua/logz-io-sbor-logov-iz-kubernetes-fluentd-vs-filebeat/
Linux: Mutt и Neomutt – консольный почтовый клиент

Mutt, и его “наследник” Neomutt – консольный почтовый клиент, MUA – Mail User Agent. Поддерживает чтение и получение почты по IMAP/POP3, отправку по SMTP. Ниже рассмотрим настройку IMAP и SMTP для обычного почтового сервера (не Gmail, хотя принципиальной разницы нет) на примере Freehost.com.ua, плюс примеры настроек для отображения списка каталогов в ящике и цветовой схемы.…

https://rtfm.co.ua/linux-mutt-i-neomutt-konsolnyj-pochtovyj-klient/
Yandex.Tank: нагрузочное тестирование

Кроме горячолюбимых Apache Bench и JMeter имеется интересная утилита Yandex Tank. Ей давно пользуются наши QA, пришло время и мне его потрогать для проверки одной проблемы с Kubernetes, о которой поговорим в следующем посте. В этом – посмотрим на базовые возможности Yandex.Tank. Из особенно приятного – в отличии от Apache Bench выводит статистику по кодам…

https://rtfm.co.ua/yandex-tank-nagruzochnoe-testirovanie/
Kubernetes: NGINX/PHP-FPM graceful shutdown – избавляемся от 502 ошибок

Имеется PHP-приложение, работает в Kubernetes в подах с двумя контейнерами – NGINX и PHP-FPM. Проблема: во время скейлинга приложения начинают проскакивать 502 ошибки. Т.е. при остановке подов – некорректно отрабатывает завершение подключений. Рассмотрим процесс остановки подов вообще, и особенности NGINX и PHP-FPM в частности. Тестировать будем приложение в AWS Elastic Kubernetes Service с помощью Yandex.Tank.…

https://rtfm.co.ua/kubernetes-nginx-php-fpm-graceful-shutdown-izbavlyaemsya-ot-502-oshibok/
Jenkins: запуск slaves в Kubernetes и билд Docker-образов

Имеется у нас Jenkins, который запускает в Docker-контейнерах свои задачи. Со временем столкнулись с тем, что инстанс t2.2xlarge (8 CPU, 32 RAM) при пиковых нагрузках уже не справляется – забиваются и память, и процессорное время. Варианты – либо продолжать вертикальный скейлинг одного мастер-инстанса, и на нём дальше в Docker запускать джобы – или вынести запуск…

https://rtfm.co.ua/jenkins-zapusk-slaves-v-kubernetes-i-bild-docker-obrazov/
OpsGenie: настройка Incidents и Incidents Management проекта в целом

Со временем в проекте пришли к тому, что пора бы записывать все инциденты, влияющие на работу сервисов и приложний. Раньше вели документ в Confluence, который заполняли руками – но решение так себе, ибо 90% инцидентов просто решали без добавления записей о них. Захотелось как-то навести порядок, ввести более адекватный Incidents Management (IcM), и вообще автоматизировать…

https://rtfm.co.ua/opsgenie-nastrojka-incidents-i-incidents-management-proekta-v-celom/
Kubernetes: что такое Endpoints

Практически все знают, что такое Kubernetes Service, но не все могут быть в курсе, что такое Endpoint, так как обычно он работает “за кулисами”, и мы его не видим, аналогично тому, как мы пользуемся Deployment, но редко видим ReplicaSet-ы. Contents Kubernetes ServiceKubernetes EndpointsCustom EndpointexternalName Kubernetes Service Итак, Service – это абстракция Kubernetes, которая, используя labels,…

https://rtfm.co.ua/kubernetes-chto-takoe-endpoints/
Istio: обзор и запуск service mesh в Kubernetes

Istio- одна из реализацией концепии Service Mesh, позволяющая реализовать Service Discovery, Load Balancing, контроль над трафиком, canary rollouts и blue-green deployments, мониторить трафик между приложениями. Мы будем использовать Istio в AWS Elastic Kubernetes Service для мониторинга трафика, в роли API gateway, разграничения трафика и, возможно, для реализации различных deployment strategies. В этом посте рассмотрим что…

https://rtfm.co.ua/istio-obzor-i-zapusk-service-mesh-v-kubernetes/
Istio: интеграция Inrgress Gateway с AWS Application LoadBalancer

В предыдущем посте – Istio: обзор и запуск service mesh в Kubernetes – запустили Istio в AWS Elastic Kubernetes Service, познакомились с основными компонентами. Следующая задача – добавить AWS Application Load Balancer (ALB) перед Istio Inrgress Gateway, так как Istio Gateway Service с типом LoadBalancer создаёт AWS Classic LoadBalancer, к которому можно подключить только один…

https://rtfm.co.ua/istio-integraciya-inrgress-gateway-s-aws-application-loadbalancer/
Istio: установка с Ansible и Helm

В первом посте серии – Istio: обзор и запуск service mesh в Kubernetes – мы деплоили Istio с помощью istioctl. Теперь, используем Ansible и Helm, что бы запустить Istio и настроить его сервисы. Не нашёл Хельм-репозитория с чартом, судя по всему его и нет, хотя обсуждения есть, см. Proposal: Publish Helm chart to a chart repository.…

https://rtfm.co.ua/istio-ustanovka-s-ansible-i-helm/
DevOpsDays Kyiv 2021

20–22 апреля присоединяйтесь к DevOpsDays Kyiv 2021 – бесплатной онлайн конференции о культуре и процессах, на которых строится работа инженеров. Вас ждут три вечера со спикерами из Google, VMWare, PagerDuty, Dojo and Co, Datadog, fireside чат с одним из создателей Kubernetes – Joe Beda, и не только. 💻 В программе: 5 докладов о культуре DevOps;…

https://rtfm.co.ua/devopsdays-kyiv-2021/
Istio: общий Ingress/AWS ALB, Helm-чарт с условиями, Istio и ExternalDNS

Продолжаем баловаться с Istio. Предыдущие части: Istio: обзор и запуск service mesh в Kubernetes Istio: интеграция Ingress Gateway с AWS Application LoadBalancer Кроме Istio, мы будем настраивать ExternalDNS, см. Kubernetes: обновление DNS в Route53 при создании Ingress. Всё описанное ниже пока в статусе Proof of Concept, и деплоится на единый Dev-кластер AWS Elastic Kubernetes Service.…

https://rtfm.co.ua/istio-obshhij-ingress-aws-alb-helm-chart-s-usloviyami-istio-i-externaldns/
AWS: оптимизация расходов – покупка и анализ RDS Reserved Instances

Сейчас активно внедряю решения по уменьшению расходов на инфрастуктуру AWS, решил закинуть пару постов на эту тему. Первым будет тема AWS RDS Reserved Instances. Суть проста: вы обязуетесь использовать определённые инстансы один или три года. При этом есть возможность как оплатить их использование сразу на весь период – тогда скидка будет больше, либо частично, либо…

https://rtfm.co.ua/aws-optimizaciya-rasxodov-pokupka-i-analiz-rds-reserved-instances/
Github: обзор Github Actions и деплой с ArgoCD

Github Actions уже достаточно давно и плотно используются нашими разработчиками, дошли и у меня руки, что бы поближе познакомиться с этим сервисом от горячолюбимого Microsoft, так как в Github они появились уже после покупки Github этой прекрасной компанией. По сути, Github Actions весьма схож с TravisCI, но более тесно интегрирован в сам Github, вплоть до того,…

https://rtfm.co.ua/github-obzor-github-actions-i-deploj-s-argocd/
ArgoCD: пользователи, доступы и RBAC

ArgoCD использует два типа пользователей – локальные, заданные в argocd-cm ConfigMap, и SSO. Ниже рассмотрим работу с локальными пользователями, а позже добавим SSO и группы, так как для локальных пользователей нельзя создавать группы, см. Local users/accounts. Разделение доступов выполняется с помощью ролей, которым подключаются политики, описывающие к чему есть доступ, и на какие операции. При…

https://rtfm.co.ua/argocd-polzovateli-dostupy-i-rbac/
ArgoCD: интеграция с Okta и группы пользователей

В предыдущем посте ArgoCD: пользователи, доступы и RBAC разобрались с пользователями и RBAC в целом, теперь настроим ArgoCD SSO. Идея заключается в том, что мы не заводим локальных пользователей в ArgoCD, а используем базу Okta, и она же выполняет их аутентификацию. На стороне же ArgoCD мы будем выполнять авторизацию, т.е. проверять уровни доступа. Плюс, используя…

https://rtfm.co.ua/argocd-integraciya-s-okta-i-gruppy-polzovatelej/
ArgoCD: декларативные Projects, Applications и деплой ArgoCD из Jenkins

Создать новое приложение, кластер или репозиторий в ArgoCD можно как используя WebUI, так и описав его в виде Kubernetes-манифеста, который потом можно передать kubectl для создания ресурса. Например, приложения являются CustomResources и описаны в Kubernets CRD applications.argoproj.io: kubectl get crd applications.argoproj.ioNAME                       CREATED ATapplications.argoproj.io   2020-11-27T15:55:29Z Которые потом доступны в неймспейсе ArgoCD в виде обычных Kubernetes-ресурсов: kubectl -n dev-1-18-devops-argocd-ns get applicationsNAME                              SYNC STATUS   HEALTH STATUSbackend-app                       OutOfSync     Missingdev-1-18-web-payment-service-ns   Synced        Healthyweb-fe-github-actions             Synced        Healthy Удобен этот подход тем, что при…

https://rtfm.co.ua/argocd-deklarativnye-projects-applications-i-deploj-argocd-iz-jenkins/
Kubernetes: типы Deployment Strategies и Argo Rollouts

Одна из целей, которые мы преследуем внедряя ArgoCD в Kubernetes – использование новых Deployment Strategies для наших приложений. Ниже рассмотрим типы деплойментов в Kubernetes, как работают Deployment в Kubernetes, и быстрый пример использования Argo Rollouts, который более детально будем рассматривать в следущих постах. Contents Deployment Strategies и KubernetesRecreateRolling UpdateKubernetes Canary DeploymentKubernetes Blue/Green DeploymentDeployment и ReplicaSetArgo…

https://rtfm.co.ua/kubernetes-tipy-deployment-strategies-i-argo-rollouts/