Updates rtfm.co.ua 🇺🇦 – Telegram
Updates rtfm.co.ua 🇺🇦
720 subscribers
35 photos
456 links
Канал @rtfm - новые посты на https://rtfm.co.ua.
Обсуждения - группа @rtfmco https://t.me./rtfmco
Download Telegram
Между прочим, рекомендую присоединиться к DevOps-комьюнити - UkrOps:

https://ukrops.club/

Людей много, всегда можно что-то спросить или подсмотреть полезностей.

Не реклама - сам не первый год уже там обитаю)
Всем привет. Сейчас я собираюсь разыграть билет на вебинары DevOps stage и заодно поразбираться с Pulumi
Кому интересно - присоеденяйтесь к стриму, буду рад вас видеть и поболтать 🙂
https://www.twitch.tv/darkctrlok
Helm: Kubernetes package manager – обзор, начало работы

На официальной странице Helm называет сам себя “The package manager for Kubernetes“, но на деле Helm нечто большее, чем просто менеджер пакетов для Kubernetes – скорее это система управления приложениями в Kubernetes, позволяющая выполнять их установку, отслеживать состояние, выполнять обновление, удаление. В этом посте рассмотрим основные понятия и компоненты Helm, работу с чартами, шаблонами, переменными…

https://rtfm.co.ua/helm-kubernetes-package-manager-obzor-nachalo-raboty/
Books: моя библиотека – books.setevoy.org.ua

Решил открыть в общий доступ всю мою библиотеку – https://books.setevoy.org.ua Библиотека собиралась… Сложно даже сказать – года с 2008, наверно, так что книг достаточно много – порядка 500, и совершенно разных – см. Категории и Авторы. Далеко не все стоят внимания и прочтения, но стоящие экземпляры есть – и по психологии, и DevOps, и Программированию,…

https://rtfm.co.ua/books-moya-biblioteka-books-setevoy-org-ua/
Jira: фильтры и почтовые уведомления о тикетах

Начал сейчас больше вникать в работу с Atlassian Jira, узнавать новые плюшки. Одна из приятных возможностей – подписаться на почтовую рассылку о текущих/будущих задачах. Собственно, у тикета есть поле Due Date. По нашим процессам – девелоперы задают в это поле значение, дату, на которую им от нас, devops-тимы, требуется реализация какой-то фичи или фикс бага.…

https://rtfm.co.ua/jira-filtry-i-pochtovye-uvedomleniya-o-tiketax/
Helm: пошаговое создание чарта и деплоймента из Jenkins

Продолжаем трогать Kubernetes и Helm. Сам Хельм в общих чертах рассмотрели в посте Helm: Kubernetes package manager — обзор, начало работы – теперь надо прикрутить его в Jenkins. И не просто прикрутить его вызов – а создать чарт, потому что сейчас приложение деплоится через “голые” манифест-файлы Kubernetes, в котором sed проставляет теги Докер-образа и значения переменных…

https://rtfm.co.ua/helm-poshagovoe-sozdanie-charta-i-deplojmenta-iz-jenkins/
Helm: helm-secrets – шифрование sensitive данных с AWS KMS и деплой из Jenkins

В продолжение поста Helm: пошаговое создание чарта и деплоймента из Jenkins – теперь нам надо добавить шифрование данных, что бы не хранить пароли и различные приватные ключи в открытом виде в Github-репозиториях – даже пусть и приватных. Судя по гуглу, чуть ли не единственный вариант – это использование helm-secrets (а подскажите в комментариях – кто…

https://rtfm.co.ua/helm-helm-secrets-shifrovanie-sensitive-dannyx-s-aws-kms-i-deploj-iz-jenkins/
Kubernetes: ClusterIP vs NodePort vs LoadBalancer, Services и Ingress – обзор, примеры

Для сетевого взаимодействия Kubernetes предоставляет четыре типа Service-ресурсов – ClusterIP (дефолтный), NodePort, LoadBalancer и ExternalName, плюс ресурс Ingress. В этом посте разберём каждый из них, и попробуем их в работе. Документация по типам – Publishing Services (ServiceTypes). Рассматривается в основном AWS, потому учитываем, что сеть у нас – AWS VPC, балансировщики нагрузки – AWS ALB/CLB,…

https://rtfm.co.ua/kubernetes-clusterip-vs-nodeport-vs-loadbalancer-services-i-ingress-obzor-primery/
Kubernetes: мониторинг кластера с Prometheus Operator

В продолжение поста Kubernetes: мониторинг с Prometheus, в котором мы настроили мониторинг вручную, и более-менее разобрались с тем, как оно всё внутри работает – теперь попробуем прикрутить Prometheus Operator из Helm-репозитория. Напомню, задача – поднять Prometheus и все необходимые експортёры в AWS Elastic Kubernetes Cluster, и с него через /federation передавать метрики на наш “центровой”…

https://rtfm.co.ua/kubernetes-monitoring-klastera-s-prometheus-operator/
Prometheus: yet-another-cloudwatch-exporter – сбор метрик AWS CloudWatch

Сейчас в Prometehus мы собираем метрики из AWS CLoudWatch с помощью CloudWatch exporter от самого AWS, см. Prometheus: CloudWatch exporter — сбор метрик из AWS и графики в Grafana, однако, у него есть несколько недостатков: написан на Java, тяжёлый – грузит хост мониторнига не подтягивает все теги использует GetMetricStatistics для получения метрик умеет собирать метрики…

https://rtfm.co.ua/prometheus-yet-another-cloudwatch-exporter-sbor-metrik-aws-cloudwatch/
Neo4j: graph database – запуск в Docker и примеры работы с Cypher QL

В отличии от традиционной RDMS (Relational Database Management System – реляционная база данных), у которой в первую очередь играют роли данные, в Graph Database связи между данными имеют большее значение, и выделены в отдельные объекты, что даёт лучшую производительность, особенно при больших объёмах данных с множеством взаимосвязанных объектов, и делает управление такой базой более гибким.…

https://rtfm.co.ua/neo4j-graph-database-zapusk-v-docker-i-primery-raboty-s-cypher-ql/
Kubernetes: PersistentVolume и PersistentVolumeClaim – обзор и примеры

Для работы с дисками для данных, которые должны храниться постоянно, Kubenetes предоставляет два типа ресурсов – PersistentVolume и PersistentVolumeClaim. PersistentVolume – непосредственно система хранения, раздел на жёстком диске, например AWS EBS, подключенном к одному из EC2, и с точки зрения этого кластера является таким же ресурсом как, например, рабочая нода. PersistentVolumeClaim – запрос от пользователя…

https://rtfm.co.ua/kubernetes-persistentvolume-i-persistentvolumeclaim-obzor-i-primery/
Neo4j: запуск в Kubernetes

В предыдущем посте – Neo4j: graph database — запуск в Docker и примеры работы с Cypher QL – мы запустили Neo4j в Docker, и познакомлись с его архитекторой и языком запросов CQL. Следующая задача – запустить сервер баз данных в Kubernetes. Используем Neo4j Community Edition, запускать будем в виде одного инстанса (т.к. поддержка кластеризации только…

https://rtfm.co.ua/neo4j-zapusk-v-kubernetes/
Kubernetes: HorizontalPodAutoscaler – обзор и примеры

Kubernetes HorizontalPodAutoscaler, как видно из названия, предназначен для автоматического скейлинга Kubernetes Pods в кластере, которые управляются ReplicationController, Deployment или ReplicaSet контроллерами, основываясь на их метриках потребления ресурсов – CPU, память и т.д. Кратко его рассматривали в посте Kubernetes: запуск metrics-server в AWS EKS для Kubernetes Pod AutoScaler, теперь разберёмся с доступными метриками. Для HPA доступны…

https://rtfm.co.ua/kubernetes-horizontalpodautoscaler-obzor-i-primery/
Helm: dependencies aka subcharts – обзор и пример

Имеется Helm chart, который запускает API-бекенд нашего приложения, для работы которого требуется memcached. Что бы не создавать отдельный деплоймент и не добавлять в Jenkins вторую джобу с helm install – добавим memcached как dependency для нашего чарта: тогда при установке самого приложения, Helm загрузит архив с чартом memcached, и установит его вместе с чартом нашего…

https://rtfm.co.ua/helm-dependencies-aka-subcharts-obzor-i-primer/
Kubernetes: нагрузочное тестирование и high-load тюнинг – проблемы и решения

Вообще, этот пост планировался в виде небольшой заметки о том, как использовать NodeAffinity для Kubernetes Pod: Но, как это часто бывает – за одним потянулось другое, за другим третье – и в результате вышел очередной длиннопост в свободном стиле. Итак, собирался я написать про NodeAffinity, как вдруг подумал – а как будет себя вести Kubernetes…

https://rtfm.co.ua/kubernetes-nagruzochnoe-testirovanie-i-high-load-tyuning-problemy-i-resheniya/
AWS: Database Migration Service – обзор и пример миграции self-hosted MariaDB в AWS Aurora RDS

В общем-то – продолжение эпопеи с миграцией приложения из Digital Ocean в Amazon Web Services. В посте Kubernetes: нагрузочное тестирование и high-load тюнинг — проблемы и решения мы тестировали работу самого приложения в Kubernetes, следующая задача – перенести базу данных. Сейчас база данных проекта находится в Digital Ocean, на обычном дроплете с Linux и MariaDB.…

https://rtfm.co.ua/aws-database-migration-service-obzor-i-primer-migracii-self-hosted-mariadb-v-aws-aurora-rds/
AWS: Database Migration Service, часть 2 – нет AUTO_INCREMENT и индексов. Фиксы для “foreign key constraint fails” и логов CloudWatch

Продолжение поста AWS: Database Migration Service — обзор и пример миграции self-hosted MariaDB в AWS Aurora RDS. И всё было хорошо, пока мы не запустили первые тесты, которые начали отваливаться с ошибками: [2020-08-28 17:13:02] local.ERROR: SQLSTATE[HY000]: General error: 1364 Field ‘id’ doesn’t have a default value Начинаем проверять таблицы, и видим, что поле ID потеряло…

https://rtfm.co.ua/aws-database-migration-service-chast-2-net-auto_increment-i-indeksov-fiksy-dlya-foreign-key-constraint-fails-i-logov-cloudwatch/
Redis: Master-Slave репликация и запуск в Kubernetes

Задача – запустить Redis в Kubernetes. Используем Master-Slave репликацию и Sentinel для мониторинга и failover. См. Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel. Contents Redis cluster vs Redis replicationВарианты запуска Redis в KubernetesHelm chart deployRedis Options Redis cluster vs Redis replication См. Redis: репликация, часть 1 — обзор. Replication vs Sharding. Sentinel…

https://rtfm.co.ua/redis-master-slave-replikaciya-i-zapusk-v-kubernetes/
Kubernetes: Evicted поды и Quality of Service для подов

Имеется Kubernetes кластер, работает на AWS Elactic Kubernetes Service. В кластере запущено приложение, которое в целом работает без проблем, но система мониторинга периодически сообщает, что: Проверяем поды: kk -n eks-prod-1-web-projectname-admin-backend-ns get podNAME                                                   READY   STATUS    RESTARTS   AGEbttrm-web-projectname-admin-backend-64648597fc-9j29n   1/1     Running   0          43mbttrm-web-projectname-admin-backend-64648597fc-kptjj   1/1     Running   0          43mbttrm-web-projectname-admin-backend-7f4b5bdb4c-wlbjf   0/1     Evicted   0          12dbttrm-web-projectname-admin-backend-8478d778f9-5mrnc   0/1     Evicted   0          15d Два пода оказались в Evicted статусе – начинаем разбираться. Contents Kubernetes requests и limitsKubernetes pods QoS classesNode tolerationsСсылки по теме Kubernetes requests и limits В Kubernetes мы…

https://rtfm.co.ua/kubernetes-evicted-pody-i-quality-of-service-dlya-podov/
Helm: reusable чарт – named templates, и общий чарт для нескольких приложений

Проект активно развивается, Kubernetes прижился, и всё больше наших сайтов запускается в нём. И со временем возникла вполне ожидаемая проблема, которая уже озвучивалась в самом начале нашего “путешествия” в Helm: пошаговое создание чарта и деплоймента из Jenkins – как быть с манифестами Kubernetes и шаблонами Helm для нескольких приложений? Особенно остро она встала сейчас, когда…

https://rtfm.co.ua/helm-reusable-chart-named-templates-i-obshhij-chart-dlya-neskolkix-prilozhenij/