Осваиваю кубер: GKE + cloud sql | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Backend-разработчик на PHP Алгоритмы и структуры данных Team Lead Архитектура и шаблоны проектирования Разработчик IoT C# Developer. Professional HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Symfony Framework Unity Game Developer. Basic JavaScript Developer. Professional Android Developer. Basic JavaScript Developer. Basic Java Developer. Professional Highload Architect Reverse-Engineering. Professional Java Developer. Basic Web-разработчик на Python Framework Laravel Cloud Solution Architecture Vue.js разработчик Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK Administrator Linux. Professional Дизайн сетей ЦОД Разработчик IoT PostgreSQL Экспресс-курс "Версионирование и командная работа с помощью Git"
-30%
Microservice Architecture Highload Architect MS SQL Server Developer Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик голосовых ассистентов и чат-ботов Administrator Linux. Advanced Infrastructure as a code Супер-практикум по использованию и настройке GIT Administrator Linux.Basic Экспресс-курс «IaC Ansible» Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Основы Windows Server
Корпоративные курсы
Безопасность веб-приложений IT-Recruiter Дизайн сетей ЦОД Компьютерное зрение Разработчик IoT Вебинар CERTIPORT Machine Learning. Professional
-6%
NoSQL Пентест. Практика тестирования на проникновение Java QA Engineer. Базовый курс Руководитель поддержки пользователей в IT
-8%
SRE практики и инструменты Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Infrastructure as a code Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» BPMN: Моделирование бизнес-процессов Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Осваиваю кубер: GKE + cloud sql

Kuber_Deep_14.11-5020-32b599.png

Задача перехода на облачную инфраструктуру в последнее время появляется уже практически в любой компании. Появилась такая задача и у меня.

Суть моего маленького проекта сводилась к следующему: — развернуть кубернетес кластер; — определиться с размещением базы. База — mysql; — организовать поддержку версионности структуры БД; — запустить контейнер с приложением, которое будет цепляться и работать с БД.

В качестве облака был выбран gcloud.

Какое-то время я выбирал между развёртыванием mysql HA от Presslabs и gcloud sql.

В итоге победил gcloud sql, т. к работа с ним оказалась проще, понятнее и дешевле.

Чтобы создать инстанс базы, есть два пути: — web-консоль; — командная строка через gcloud.

GKE может подключаться к sql-инстансу двумя путями: — на публичный адрес через proxy-контейнер; — на приватный адрес через VPC.

Я выбрал второй вариант, потому что не люблю, когда база торчит публичным IP-адресом в сеть.

Для начала подготавливаемся к работе с командной строкой: — авторизуемся; — выставляем нужный проект; — выбираем географическую зону, в которой будем работать.

gcloud auth
gcloud projects list
gcloud config set project <your_project_id>
gcloud config set compute/zone europe-north1-a

Создаём VPC-сеть:

gcloud compute networks create my-network \
    --subnet-mode=auto \
    --bgp-routing-mode=regional

Создаём инстанс базы c репликой, которая подключена к нужной сети. Опция --no-assign-ip отключает публичный адрес. Включаем servicenetwroking:

gcloud beta sql instances create my-master   --failover-replica-name my-slave  \
--tier db-n1-standard-1  --enable-bin-log --no-assign-ip \
--network=my-network

gcloud services enable servicenetworking.googleapis.com     --project=< ид проекта>

Данная команда отрабатывает, но не активировалась VPC. В итоге, инстанс я создал через веб-консоль с нужной сетью. Затем я создал пользователя и базу для коннекта:

gcloud sql users set-password root --host % --instance my-master  --password myPASS
gcloud sql users create myuser --host=% --instance=my-master --password=User#19
gcloud sql databases create mydb --instance=my-master

Затем я создал gke-кластер в той же сети: — создаём кластер (из одной ноды); — устанавливаем kubectl; — прописываем доступы для kubectl; — смотрим информацию по кластеру.

gcloud container clusters create my-cluster \
  --network=my-network  --num-nodes=1 \
  --enable-ip-alias \
  --cluster-ipv4-cidr=/16 \
  --services-ipv4-cidr=/22
gcloud container cluster list
gcloud components install kubectl
gcloud container clusters  get-credentials my-cluster 
kubectl cluster-info
kubectl get nodes
kubectl get pods
kubectl get services

Смотрим выданный IP-адрес:

gcloud beta sql instances list

Ну и запускаем тестовый pod в кубере для проверки работы коннекта к базе:

kubectl run -it my-client --image=arey/mysql-client -- -h <instance private ip> -u \ 
myuser -p'User#19'

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться