Для установки в kubernetes существуют 2 helm чарта:
- vk-infra - инфраструктурные сервисы;
- vk - приложение;
Для онлайн установки подключитесь к нашим репозиториям docker и helm.
Для оффлайн установки необходимо скачать комплекты поставки с docker образами vk_v4.x.y.tgz
и helm чартами vk_helm_4.x.y.tgz и vk_infra_helm_4.x.y.tgz.
Настройки по умолчанию заданы в файле values.yaml.
Создайте свой файл с параметрами values_vk_infra.yaml и добавьте минимальный набор параметров для установки.
global:# При необходимости замените на свой docker репозиторий с ранее загруженными образами из комплекта поставки.image:repository: "registry.example.com"# Секрет для доступа к docker репозиторию.imagePullSecrets:- name: vk-regcredminio:enabled: truepersistence:size: 10Gipostgres:enabled: truepersistence:size: 5Gipgbouncer:replicas: 1rabbitmq:enabled: truepersistence:size: 1Giredis:enabled: truepersistence:size: 1Gigotenberg:enabled: truereplicas: 1
Теперь можно установить vk-infra указав свой values_vk_infra.yaml.
# Для онлайн установкиhelm upgrade --install -n vk -f values_vk_infra.yaml --version VERSION --wait --create-namespace vk-infra vk/vk-infra# Для оффлайн установкиhelm upgrade --install -n vk -f values_vk_infra.yaml --wait --create-namespace vk-infra vk-infra/
# Секрет для доступа к docker репозиторию.imagePullSecrets:- name: vk-regcred# При использовании ingress-nginxingress:enabled: true# Укажите ingressClassNameclassName: nginx# Для https укажите сертификат, если нужен только 80 порт, то tls не указывается.tls:- secretName: tls-secrethosts:- projects.example.com# В глобальных настройках обязательно указываетсяglobal:# При необходимости замените на свой docker репозиторий с ранее загруженными образами из комплекта поставки.image:repository: "registry.example.com"# URL Проекты VK WorkSpaceurl: "https://projects.example.com"hostname: "projects.example.com"
Теперь можно установить vk указав свой values_vk.yaml.
# Для онлайн установкиhelm upgrade --install -n vk -f values_vk.yaml --version VERSION --wait --create-namespace vk vk/vk# Для оффлайн установкиhelm upgrade --install -n vk -f values_vk.yaml --wait --create-namespace vk vk/
Для каждого сервиса указана переменная resources с ресурсами по умолчанию.
Для того чтобы включить ограничение ресурсов, необходимо убрать комментарий с настройками выделения ресурсов для каждого сервиса.
resources:requests:cpu: 50mmemory: 128Milimits:cpu: 150mmemory: 256Mi
Для каждого сервиса учетные данные указаны по умолчанию. Их можно переопределить,
указав свои данные в переменной global.<service> или подключить существующие секреты.
Для использования существующих секретов необходимо:
- Указать имя секрета в параметре
existingSecret. - Убедиться, что в секрете присутствуют ключи, указанные в примере
values.yaml.
Приоритет загрузки учетных данных:
- Если указан
existingSecret, данные будут браться из него. - Если
existingSecretне задан, используются значения изvalues.yaml.
Пример:
Допустим, существует секрет с именем my-secret, содержащий пароль для rabbitmq с ключом rmqPassword.
Секрет задан в параметре global.rabbitmq.existingSecret
В этом случае приложение будет использовать пароль из my-secret для доступа к rabbitmq.
Для добавления CA сертификатов необходимо указать переменную global.cert.ca
или существующий секрет со списком сертификатов global.cert.existingSecretCA.
global:certs:ca:- name: ca.crtcert: |-----BEGIN CERTIFICATE-----MIIDWTCCAkGgAwIBAgIUWUGdGGsp/Au80+nYqQ2PNNbuOfswDQYJKoZIhvcNAQELBQAwPDETMBEGA1UEAwwKTXkgUm9vdCBDQTEYMBYGA1UECgwPTXkgT3JnYW5pemF0aW9uMQswCQYDVQQGEwJVUzAeFw0yNTA2MjQxMzM1MDJaFw0zNTA2MjIxMzM1MDJaMDwxEzARBgNVBAMMCk15IFJvb3QgQ0ExGDAWBgNVBAoMD015IE9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1HpRQN72sRFJtnE/XedAKnjwXfl1wBXXP9jlxWnFdRiqM6YGtt8Df4EzBmfzuhlfK8kYMQkCFZPUcsKs+7/DJFTczLm9APY004lSptcXpcDEtIW7w8bOcCFp+of4F4DAJGgYB3DNqucYkrZZHfmvoEeDnpBmR2uriJ4fmK1kSpcnLVqobc+CFP/d4hf3hV0Nnv3wKcJt1YeQ09/1RzoR/b9PYME9E5c5bY4q/k5yl7+JXv6LlO5mV7NTP6PP109qleXXjCLOIg2vzuNMt0mbK2uzyO/1Y0k0r60rX9ZDFNDnD1jzqbpsMBcS4o/RxZYHmVPcEWGAM6cCg9mCMYonxAgMBAAGjUzBRMB0GA1UdDgQWBBTgv3IIwoTAWOj8x2BTERXee9zsoDAfBgNVHSMEGDAWgBTgv3IIwoTAWOj8x2BTERXee9zsoDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAS44wcHHy2aJkQRiox2Ej1xEKZhn0GSIkMW6NOlztivsntfFJ7G2YJeY8QIC+bqxya9+yanoqF/IVnnqz5opht54qEgnPUuBmE7FM0OTNauQtjoFftfN2J9qTJmaaL1xUiex0ltJIYCw6XH0vKsd4spRWwpu/NEL9XSazr/52360BORT0bhM37YB7MXUbnY9CeYYaSBtYtlCTCqE0AvTpD/ZS71xHu+ojTEmfVI13/Gbq5mi/eIfZrNF2x9LPwT5v5hSiBkWqrvjK5rLqbcnXOL/B1lGnNDsHvPTaKswVRLOtJOMjxkW+8KkPZOmIeLwtqK9W0ljeND3Igg/NlXJoU-----END CERTIFICATE-----
Для включения метрик prometheus используется servicemonitor.
metrics:enabled: trueserviceMonitor:enabled: true
Настройки деплоя сервисов задаются в параметрах, соответствующих их именам. Дополнительно можно настроить переменные окружения или подключение файлов через монтирование.
frontend:extraEnv:- name: FOOvalue: "bar"extraEnvFrom:- secretRef:name: frontend-envvolumes:- name: certssecret:secretName: "ssl"volumeMounts:- mountPath: /certs/name: certs
Технический писатель: Белова Ирина