Установка Predicate в Yandex Cloud
Создание Managed Service for Kubernetes и его настройка
Для последующей работы с кластером, установите Yandex CLI, Helm, kubectl
Используя инструкцию создайте кластер Managed Service for Kubernetes.
Важно
При создании сервисного аккаунта для кластера (пункт 8), необходимо дополнительно добавить роль load-balancer.admin
.
Страница сервисного аккаунта:
Страница созданного кластера:
После создания кластера, используя ту же инструкцию, создайте один узел с рекомендованными ресурсами.
Далее, выполните команду для получения учётных данных кластера, заменив CLUSTER_NAME
на имя созданного кластера:
yc managed-kubernetes cluster get-credentials $CLUSTER_NAME --external
Чтобы узнать имя контекста кластера, выполните команду. После чего запомните имя созданного ранее контекста, которое будет использоваться в переменной CONTEXT_NAME
:
kubectl config get-contexts
Установка NFS сервера
Важно
Если у вас уже есть NFS сервер, то пропустите этот шаг.
Установка будет производиться на базе провизора Ganesha. Для установки необходимо выполнить следующие шаги:
- Добавить репозиторий
helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner
- Установить NFS сервер, указав параметр
CONTEXT_NAME
- имя контекста кластераhelm upgrade --install nfs-ganesha \ nfs-ganesha-server-and-external-provisioner/nfs-server-provisioner \ --set persistence.enabled=true \ --set persistence.storageClass="yc-network-hdd" \ --set persistence.size=70Gi \ --set service.nameOverride='nfs-ganesha-svc' \ --set rbac.serviceAccount.name='nfs-ganesha-sa' \ --set fullnameOverride='nfs-ganesha' \ --namespace default \ --kube-context $CONTEXT_NAME
- После установки необходимо проверить, что был создан StorageClass с именем
nfs
. Для этого выполните команду:kubectl config use-context $CONTEXT_NAME kubectl get sc
Установка Ingress Controller
Важно
Если у вас уже есть Ingress Controller, то пропустите этот шаг.
На данный момент, дефолтная поставка в YC не включает в себя поддержку Cert Manager, т.к. для его работы необходимо наличие доступа к DNS-серверу, а в поставке используется сервис nip.io для обеспечения доступа к сервисам.
Если у вас имеется собственное доменное имя, то вы можете использовать дополнительные шаги из следующей инструкции для установки Cert Manager. Для установки только Ingress Controller, выполните следующий шаг:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx && \
helm repo update && \
helm install ingress-nginx ingress-nginx/ingress-nginx \
--set controller.allowSnippetAnnotations=true \
--namespace default \
--kube-context $CONTEXT_NAME
После установки Ingress Controller, необходимо узнать IP-адрес балансировщика, который будет использоваться для доступа к сервисам. Для этого выполните команду и запомните значение в поле EXTERNAL-IP:
kubectl config use-context $CONTEXT_NAME
kubectl get svc ingress-nginx-controller
Создание S3 хранилища и настройка доступа к нему
Для создания бакета в Yandex Object Storage, воспользуйтесь инструкцией. Рекомендованный размер бакета - 100Gb.
Для дальнейшего доступа к бакету, создайте сервисный аккаунт с ролью storage.editor
или storage.admin
(GET/UPDATE/DELETE объектов). Для этого выполните следующие шаги:
-
В консоли управления выберите каталог.
-
Перейдите в раздел
Сервисные аккаунты
и нажмитеСоздать сервисный аккаунт
. -
Введите имя, добавьте роль
storage.editor
и нажмитеСоздать
. -
После создания сервисного аккаунта, нажмите на него и нажмите
Создать новый ключ -> Создать статический ключ доступа
. -
Ведите необходимое описание (например s3-cred) и нажмите
Создать
. -
Сохраните полученные данные (идентификатор ключа и секретный ключ) для дальнейшего использования.
Страница созданного ключа доступа для сервисного аккаунта S3:
Установка Keycloak и настройка доступа к нему
Установка Predicate
Важно
Перед установкой необходимо убедиться, что все предыдущие шаги были выполнены успешно.
Пример заполнения полей в форме установки приложения. Подробное описание полей можно узнать при наведении на знак вопроса рядом с названием поля: