С помощью этого руководства вы сконфигурируете Managed Redis® для хранения пользовательских сессий в сервисе, работающем в кластере Managed Kubernetes на платформе Cloud.ru Evolution.
Для организации взаимодействия между Managed Kubernetes и сервисом Managed Redis® будет использована виртуальная сеть VPC и подсети.
Вы будете использовать следующие сервисы:
Artifact Registry для хранения, совместного использования и управления Docker-образами, Deb-пакетами, RPM-пакетами, Helm-чартами и файлами любого типа (generic).
Managed Kubernetes — сервис управления кластерами Kubernetes на вычислительных ресурсах облака.
Managed Redis — хранилище данных в оперативной памяти.
«sNAT-шлюзы» — сервис управления сетевыми шлюзами облака.
«Публичные IP» — сервис для организации доступа к сервису через интернет.
VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.
Шаги:
Если вы уже зарегистрированы, войдите под своей учетной записью.
Создайте VPC с названием redis-kubernetes-lab-vpc.
Название: redis-kubernetes-lab-subnet.
VPC: redis-kubernetes-lab-vpc.
Адрес: 10.10.1.0/24.
Убедитесь, что в личном кабинете на странице сервиса VPC:
отображается сеть redis-kubernetes-lab-vpc;
количество подсетей — 1;
подсеть redis-kubernetes-lab-subnet доступна.
Создайте виртуальную машину со следующими параметрами:
Название: redis-kubernetes-lab-jump-server.
Публичные → Образ: Ubuntu 22.04.
Гарантированная доля vCPU: 10%.
vCPU: 1.
RAM: 1.
Подсеть с публичным IP.
VPC: redis-kubernetes-lab-vpc.
Подсеть: redis-kubernetes-lab-subnet.
Группы безопасности: SSH-access_ru.AZ-1. Если такой группы безопасности нет, создайте ее и разрешите подключение по SSH.
Метод аутентификации: публичный ключ и пароль.
Публичный ключ: публичная часть вашего SSH-ключа из сервиса «SSH-ключи».
Пароль: ваш пароль.
Имя хоста: redis-kubernetes-lab-jump-server.
Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины» отображается виртуальная машина redis-kubernetes-lab-jump-server в статусе «Запущена».
Создайте кластер Managed Redis со следующими параметрами:
Название кластера: redis-kubernetes-lab.
Версия Redis: v7.2.11.
vCPU: 2.
RAM: 4.
Сохранять данные на диске: включено.
Подсеть: redis-kubernetes-lab-subnet.
Убедитесь, что в личном кабинете на странице сервиса «Managed Redis» отображается кластер redis-kubernetes-lab в статусе «Доступен».
Создайте sNAT-шлюз со следующими параметрами:
Название: redis-kubernetes-lab.
VPC: redis-kubernetes-lab-vpc.
Убедитесь, что в личном кабинете на странице сервиса «sNAT-шлюзы» отображается шлюз redis-kubernetes-lab в статусе «Создан».
Создайте кластер Managed Kubernetes со следующими параметрами:
Название: redis-kubernetes-lab.
Зона доступности: совпадает с зоной доступности остальных сервисов.
Адрес подсети мастер-узлов: redis-kubernetes-lab-subnet.
Публичный IP-адрес: включено.
Группы узлов –> Адрес подсети узлов: redis-kubernetes-lab-subnet.
Убедитесь, что в личном кабинете на странице сервиса «Managed Kubernetes» отображается кластер redis-kubernetes-lab в статусе «Запущено».
Соберите и загрузите образ в реестр Artifact Registry:
Используйте наше демонстрационное приложение evo-managed-redis-sessions-management-lab.
Для сборки и тегирования образа на локальном компьютере в Docker CLI или любом удобном терминале выполните команду:
docker build --tag <registry_name>.cr.cloud.ru/evo-managed-redis-sessions-management-lab https://github.com/cloud-ru/evo-managed-redis-sessions-management-lab.git#main --platform linux/amd64
Для загрузки образа выполните команду:
docker push <registry_name>.cr.cloud.ru/evo-managed-redis-sessions-management-lab:latest
Убедитесь, что в реестре появился репозиторий evo-managed-redis-sessions-management-lab с артефактами образа.
Создайте .env и откройте его для редактирования:
nano .env
Добавьте содержимое файла конфигурации:
REDIS_URL=redis://:<REDIS_PASSWORD>@<REDIS_IP>:6379
Где:
<REDIS_IP> — IP-адрес сервиса Managed Redis®.
<REDIS_PASSWORD> — пароль от кластера Managed Redis®.
Создайте объект из файла конфигурации:
kubectl create secret generic containerapp-secret --from-env-file=.env
Создайте containerapp-deployment.yaml и откройте его для редактирования:
nano containerapp-deployment.yaml
Добавьте содержимое манифеста:
apiVersion: apps/v1kind: Deploymentmetadata:name: containerappspec:replicas: 1selector:matchLabels:app: lab-apptemplate:metadata:labels:app: lab-appspec:containers:- name: containerappimage: <registry_name>.cr.cloud.ru/evo-managed-redis-sessions-management-lab:latestports:- containerPort: 3000imagePullPolicy: AlwaysenvFrom:- secretRef:name: containerapp-secret
Где <registry_name> — название реестра Artifact Registry.
Примените манифест при помощи команды:
kubectl apply -f containerapp-deployment.yaml
Чтобы создать внешний балансировщик нагрузки для доступа к приложению из интернета, создайте containerapp-lb.yaml и откройте его для редактирования:
nano containerapp-lb.yaml
Добавьте содержимое манифеста:
apiVersion: v1kind: Servicemetadata:name: containerapp-lbannotations:loadbalancer.mk8s.cloud.ru/type: "external"loadbalancer.mk8s.cloud.ru/health-check-timeout-seconds: "5"loadbalancer.mk8s.cloud.ru/health-check-interval-seconds: "5"loadbalancer.mk8s.cloud.ru/health-check-unhealthy-threshold-count: "4"loadbalancer.mk8s.cloud.ru/health-check-healthy-threshold-count: "4"spec:type: LoadBalancerselector:app: lab-appports:- port: 80name: httptargetPort: 3000
Создайте балансировщик нагрузки при помощи команды:
kubectl apply -f containerapp-lb.yaml
Посмотрите созданные сервисы в кластере при помощи команды:
kubectl get svc
После создания внешнего балансировщика нагрузки платформа начнет создание объекта LoadBalancer. После того как балансировщик будет создан и получит публичный IP, IP-адрес отобразится в поле EXTERNAL-IP. Это займет 5–10 минут.
После получения IP-адреса проверьте доступность приложения — введите в адресную строку браузера: http://<EXTERNAL-IP>. Попробуйте зарегистрироваться в приложении и войти с вашим email и паролем.
Вы сконфигурировали Managed Redis® как хранилище сессий и связали его с сервисом, развернутом в кластере Managed Kubernetes.