Kubernetes CronJob Cloud SQL proxy sidecar

Злостный перфикционист внутри меня каждый раз склоняется к реализации лучших практик (best practices) в работе. К счастью, это не клинический случай, поэтому экстраполяция за пределы рабочего процесса происходит крайне редко. Я просто люблю, когда специалист (specialist) (неважно, в какой сфере) делает свою работу хорошо!

Это я к тому, что отдельно стоящий в нашем кластере (cluster) Kubernetes сервис (service) Cloud SQL proxy меня жутко раздражал. Мы его держали лишь потому, что повторяющиеся по расписанию задачи (Cron Jobs) приложения (application) должны были иметь возможность соединяться с базой данный (database) в Google Cloud SQL и завершаться без ошибок, то есть по красоте (graceful).

Рекомендации Google только усугубляли внутреннее недовольство по этому поводу. Именно поэтому моему счастью не было предела, когда я обнаружил в репозитории (repository) cloud-sql-proxy релиз (release) от 16 февраля 2023 года v2.1.0 с поддержкой фичи (feature) quitquitquit endpoint.
Читать далее »

Bash script on startup to set the default network route

Потребность возникает, когда у Вас на сервере несколько сетевых интерфейсов (network interfaces). В моём случае, это виртуальная машина (virtual machine) VMWare, у которой есть сетевые интерфейсы (network interfaces) как локальной (local), так и глобальной (global) сетей (networks). Если ничего дополнительно не настраивать, то я подозреваю, что выбор маршрута по умолчанию (default route) происходит исходя из того, какой сетевой интерфейс (network interface) быстрее инициализировался. Например, у меня глобальный интерфейс (global interface): iface ens192 inet dhcp, а локальный интерфейс (local interface): iface ens224 inet static, и каждый раз при загрузке интерфейс (interface) со статическим (static) IP-адресом (IP address), очевидно, инициализируется быстрее.

Для того, чтобы не терять наш сервер (server) в глобальной сети (global network), мы напишем bash-скрипт (bash script) автозапуска (startup), чтобы вручную определить на каком сетевом интерфейсе (network interface) будет маршрут по умолчанию (default gateway).
Читать далее »

Google Calendar API using OAuth 2.0

Для добавления новой функциональности в Telegram бота сообщества радиостанции Web 3.0 экосистемы MarsDAO понадобилось реализовать интеграцию с Google календарём, чтобы вытаскивать расписание сетки вещания эфира радиостанции на текущую неделю.

Процесс вкратце описан в README.md соответствующего Github репозитория, но я решил описать его более подробно.
Читать далее »

Turkish Airlines promotion code (discount)

Собрал несколько промо кодов (promo code) до конца 2022 года, которые дают скидку (discount) 10% на авиабилеты туда-обратно (round trips) в Турцию (Turkey) авиакомпанией Turkish Airlines. Может кому-то пригодится…

Форма проверки промо кода (promo code) на официальном сайте авиакомпании Turkish Airlines:
https://www.turkishairlines.com/en-tr/flights/booking/promocode/
Читать далее »

Debian WSL gcloud auth command open Windows 11 default browser

Для работы с Google Cloud Platform (GCP) чаще всего используется программный пакет Google Cloud SDK, в который входит набор различных библиотек (libraries) и инструментов командной строки (command line tools). Набор инструментов gcloud CLI предназначен для создания и управления ресурсами Google Cloud c помощью консольных команд.

Для того, чтобы начать пользоваться gcloud CLI, помимо установки и инициализации его конфигурации gcloud init (настройки деталей для работы с конкретным проектом в GCP), вам нужно авторизоваться: gcloud auth login — для доступа к созданию и управлению ресурсами Google Cloud или gcloud auth application-default login — для API доступа вашей локальной программы к ресурсам Google Cloud.
Читать далее »

Nginx proxy for the domains in Cloudflare

В какой-то момент для владельца нескольких сайтов возникает задача настроить проксирование, то есть программного посредника для загрузки контента на свой конкретный сайт из других источников — не обязательно своих. Причины могут быть разными, но результат сводится к тому, чтобы показывать по определённому пути сайта контент из стороннего источника, как в буквенном виде (URL), так и в цифровом (IP). Cloudflare — это крупнейший провайдер таких сервисов, как сеть доставки содержимого (CDN), защита от распределённых атак (DDoS) и обслуживание доменных имён (DNS). В нашем случае, инструментом для проксирования выбран веб-сервер Nginx.
Читать далее »

Docker containers monitoring in Zabbix

В Интернет я нашёл готовый вариант для расширенного мониторинга контейнеров Docker в Zabbix, который c помощью программы на С позволяет получать через Zabbix-агента такие данные, как статус конкретного контейнера, используемые им ресурсы системы, сетевые характеристики и многое другое. Более того, весь функционал упакован в отдельный контейнер и не зависит от окружения (MonitoringArtist). Мне же необходима была базовая информация от Zabbix-агента, установленного на хост-машине, без лишних сообщений (сигналов) и оповещений. Например, статус конкретного контейнера, время его работы, когда был создан и т.п. Что-то подобное, реализованное на Python, я нашёл здесь, но решил сделать свой скрипт на bash.
Читать далее »

Docker TeamCity internal DB migration to MySQL

Я использую Docker вместе с Docker Compose для удобства работы с несколькими Docker-контейнерами. Начал изучать приложение TeamCity от JetBrain, много чего настроил и понял, что буду его использовать как удобный инструмент Continuous Integration. Разработчики настоятельно рекомендуют не использовать встроенную базу данных TeamCity сервера для продакшена, поэтому решил мигрировать на внешнюю СУБД. В наших проектах используется PostgreSQL, но так как я люблю зоопарк, решил разнообразить и без того перегруженный контейнерами Docker Compose и создать ещё одну конфигурацию для Docker-контейнера MySQL сервера. Такой уж я DevOps со странностями.
Читать далее »

Remove invalid virtual machine from VMWare ESXi (SSH)

Бывает такая ситуация, когда например конфигурация виртуальной машины была удалена некорректно или диск, на котором она находилась, отключили или отформатировали. В таком случае, во вкладке с виртуальными машинами будет отображаться конфигурация, с которой через web-интерфейс вы ничего не сможете сделать. Практически все действия для конфигурации виртуальной машины будут недоступны.

Читать далее »

VMWave ESXi (web interface) add (create) user and assign role (permissions)

На первый взгляд задача является тривиальной, но на практике возникают определённые трудности, так как назначение роли для пользователей находится совершенно в другом месте. Чтобы добавить пользователя и назначить ему определённую существующую или новую роль (например, добавить ещё одного администратора системы), необходимо выполнить несколько действий в разных местах web-интерфейса.
Читать далее »