Осваиваю кубер: GKE + cloud sql | OTUS
🔥 Что нужно, чтобы писать чистый код?
Курс «Архитектура и шаблоны проектирования». Спеццена для сдавших тест!
Подробнее

Курсы

Программирование
Подготовка к сертификации Oracle Java Programmer (OCAJP)
-8%
Алгоритмы и структуры данных
-12%
Backend-разработчик на PHP
-8%
Web-разработчик на Python
-11%
Архитектура и шаблоны проектирования
-14%
JavaScript Developer. Basic Интенсив «Оптимизация в Java»
-16%
Python Developer. Professional
-13%
Разработчик Golang
-17%
iOS Developer. Professional
-13%
Scala-разработчик
-21%
Java Developer. Professional
-12%
Разработчик Node.js
-15%
React.js Developer
-12%
Android Developer. Professional
-7%
Software Architect
-12%
Программист С MS SQL Server Developer Cloud Solution Architecture Reverse-Engineering. Professional CI/CD Agile Project Manager Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер-практикум по использованию и настройке GIT Symfony Framework Супер-интенсив "Tarantool"
Инфраструктура
PostgreSQL
-10%
Administrator Linux. Professional
-11%
Базы данных
-19%
Administrator Linux.Basic
-18%
Супер-интенсив «СУБД в высоконагруженных системах»
-18%
IoT-разработчик
-12%
Супер-интенсив "SQL для анализа данных"
-16%
Highload Architect
-9%
MS SQL Server Developer Безопасность Linux Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Infrastructure as a code in Ansible Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+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 комментариев
Для комментирования необходимо авторизоваться