С помощью этого руководства вы сконфигурируете Managed Redis® для хранения пользовательских сессий в сервисе, работающем в кластере Managed Kubernetes на платформе Cloud.ru Evolution.
Для организации взаимодействия между Managed Kubernetes и сервисом Managed Redis® будет использована виртуальная сеть VPC и подсети.
Вы будете использовать следующие сервисы:
Artifact Registry для хранения, совместного использования и управления Docker-образами и Helm-чартами.
Managed Kubernetes — сервис управления кластерами Kubernetes на вычислительных ресурсах облака.
Managed Redis — хранилище данных в оперативной памяти.
sNAT-шлюзы — сервис управления сетевыми шлюзами облака.
Публичный IP-адрес — для доступа к сервису через интернет.
VPC-сеть — изолированная виртуальная сеть для создания безопасной инфраструктуры.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
1. Разверните необходимые ресурсы в облаке
Создайте 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.0.5.
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 в статусе «Запущено».
2. Создайте приватный реестр в Artifact Registry и загрузите в него образ контейнера
Соберите и загрузите образ в реестр 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 с артефактами образа.
3. Подключитесь с созданной ВМ к кластеру Managed Kubernetes
4. Разверните приложение в Managed Kubernetes
Создайте .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.
- Перед началом работы
- 1. Разверните необходимые ресурсы в облаке
- 2. Создайте приватный реестр в Artifact Registry и загрузите в него образ контейнера
- 3. Подключитесь с созданной ВМ к кластеру Managed Kubernetes
- 4. Разверните приложение в Managed Kubernetes
- Результат