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
AWS: Glue – ошибка AWS S3 connect timed out, и cross-region connections

Есть AWS Glue job, которая должна загрузить данные в AWS S3 в другом регионе. Джоба падает с ошибкой: ERROR [Executor task launch worker for task 39] executor.Executor (Logging.scala:logError(91)): Exception in task 6.1 in stage 2.0 (TID 39) com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to projectname-dwh.s3.eu-west-1.amazonaws.com:443 [projectname-dwh.s3.eu-west-1.amazonaws.com/52.218.112.104] failed: connect timed out Причину искал долго, потому…

https://rtfm.co.ua/aws-glue-oshibka-aws-s3-connect-timed-out-i-cross-region-connections/
Kubernetes: запуск SQL-миграций – Kubernetes Job и Helm hook

Имеется проект, которому во время деплоя надо выполнить SQL-миграции. Для запуска миграций надо склонировать репозиторий из Github, и затем выполнить собственно миграции, которые в нём хранятся. Сейчас у нас для этого используются Kubernetes initContainers, причём два – сначала один, с git, клонирует репозиторий с миграциями в Kubernetes Volume, второй с sql-migrate – запускает из этого…

https://rtfm.co.ua/kubernetes-zapusk-sql-migracij-kubernetes-job-i-helm-hook/
Kubernetes: Service, балансировка нагрузки, kube-proxy и iptables

Задался я вопросом – а как вообще в Kubernetes происходит балансировка нагрузки между подами? Т.е, есть у нас внешний Load Balancer. За ним – Service. За ним – Pod. Что происходит, когда мы из мира получаем пакет, а у нас несколько подов – как пакеты между ними распределяются? Contents kube-proxyUser space proxy modeiptables proxy modeIPVS…

https://rtfm.co.ua/kubernetes-service-balansirovka-nagruzki-kube-proxy-i-iptables/
Linux: настройка LEMP – NGINX, PHP, MySQL, SSL, мониторинг, логи, и миграция RTFM

Собрался наконец-то перенести RTFM а Debian 10, решил делать без автоматизации – будем поднимать стандартный LEMP для хостинга WordPress руками. Что-то похожее последний раз писалось в 2016 – Debian: установка LEMP — NGINX + PHP-FPM + MariaDB, на этот раз получился более полный обзор процесса. Когда-то делал автоматизацию для настройки сервера под RTFM, но последний раз…

https://rtfm.co.ua/linux-nastrojka-lemp-nginx-php-mysql-ssl-monitoring-logi-i-migraciya-rtfm/
Kubernetes: Ingress, ошибка 502, readinessProbe и livenessProbe

Имеется приложение на Go, API-бекенд. Периодически начинает возвращать 502 ошибку, хотя сам под работает и в статусе Running. Что бы рассмотреть, как и почему Ingress и Service могут возвращать 502, и как работают readinessProbe и livenessProbe в Kubernetes Deployment – напишем простой веб-сервер на Go, в котором опишем два ендпоинта – один будет возвращать нормальный…

https://rtfm.co.ua/kubernetes-ingress-oshibka-502-readinessprobe-i-livenessprobe/
Kubernetes: обновление DNS в Route53 при создании Ingress

Задача: при создании Ingress ресурса – создавать запись на DNS, которая будет привязана к URL создаваемого Ingress, потому что сейчас это приходится делать руками для каждого нового Application Load Balancer, который создаётся из Ingress через ALB Ingress controller. Для решения – используем ExternalDNS, который будет ходить в наш AWS Route53, и добавлять записи. Документация на…

https://rtfm.co.ua/kubernetes-obnovlenie-dns-v-route53-pri-sozdanii-ingress/
Kubernetes: ServiceAccounts, JWT-токены, аутентификация и RBAC-авторизация

Для аутентицикации и авторизации в Kubernetes имеются такие понятия как User Accounts и Service Accounts. User Accounts – профили обычных пользователей, используемые для доступа к клатеру снаружи кластера, тогда как Service Accounts используются для аутентификации сервисов внутри кластера. ServiceAccounts предназначены для предоставления идентификатора, используя который Kubernetes Pod, а точнее контейнер(ы) в нём, могут быть аутенифицированы…

https://rtfm.co.ua/kubernetes-serviceaccounts-jwt-tokeny-autentifikaciya-i-rbac-avtorizaciya/
ArgoCD: обзор, запуск, настройка SSL, деплой приложения

ArgoCD помогает деплоить приложения в Kubernetes, используя GitOps подход, т.е. когда приложения, конфиги, манифесты и тому подобные данных хранятся в Git-репозитории. Поддерживает работу с “голыми” манифестами Kubernetes, kustomize, ksonnet, jsonnet и то, чем пользуемся мы – Helm-шаблонами. ArgoCD запускает свой контроллер в Kubernetes-кластере, и отслеживает изменения в Git-репозиториях, синхронизируя приложения в кластере с их манифестами…

https://rtfm.co.ua/argocd-obzor-zapusk-nastrojka-ssl-deploj-prilozheniya/
ArgoCD: деплой Helm-чарта и работа с Helm Secrets через AWS KMS

В предыдущем посте ArgoCD: обзор, запуск, настройка SSL, деплой приложения потрогали ArgoCD, запустили тестовый инстанс, и задеплоили приложение из его готовых примеров. Но наша цель – деплоить наши Helm-чарты, а потому посмотрим, как это можно сделать. Самое интересное ожидаемо коснулось работы с Helm secrets. Пришлось покостылить, но в результате всё заработало так, как и ожидалось.…

https://rtfm.co.ua/argocd-deploj-helm-charta-i-rabota-s-helm-secrets-cherez-aws-kms/
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/