ELMA365 On-Premises > Подготовка инфраструктуры > Балансировщик нагрузки / Проксирование S3 в Kubernetes

Проксирование S3 в Kubernetes

S3-Gateway позволяет предоставить доступ к S3-хранилищу через единую точку входа в приложение ELMA365. Под единой точкой входа подразумевается домен (FQDN) или IP-адрес, по которому доступна ELMA365. S3-Gateway позволяет проксировать трафик до S3-хранилища, находящегося как вне, так и в Kubernetes-кластере.

Установка состоит из четырёх этапов:

  1. Скачивание Helm-чарта и конфигурационного файла.
  2. Заполнение конфигурационного файла.
  3. Установка с помощью Helm в Kubernetes-кластер чарта S3-Gateway.
  4. Подключение к S3.

Шаг 1: Скачивание Helm-чарта и конфигурационного файла

Для установки через интернет получите конфигурационный файл values-s3gateway.yaml, выполнив команду:

helm repo add elma365 https://charts.elma365.tech
helm repo update
helm show values elma365/s3gateway > values-s3gateway.yaml

Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

Шаг 2: Заполнение конфигурационного файла

Заполните конфигурационный файл values-s3gateway.yaml для установки S3-Gateway.

В параметре ingress.hostname укажите домен (FQDN) или IP-адрес, по которому доступно приложение ELMA365. В параметре ingress.path укажите наименование бакета (в хранилище S3), в котором приложение ELMA365 хранит файлы.

Наименование бакета в S3 должно соответствовать формату s3elma365*.

Начало примера

Пример:

  1. s3elma365
  2. s3elma365-dev
  3. s3elma365-prod

конец примера

Eсли web-интерфейс приложения ELMA365 доступен по HTTPS:

  • в параметре ingress.path укажите домен (FQDN);
  • включите поддержку TLS, установив значение true в параметре ingress.tls;
  • раскомментируйте параметры секции ingress.extraTls;
  • для параметра ingress.extraTls.hosts укажите домен (FQDN), по которому доступно приложение ELMA365;
  • для параметра ingress.extraTls.secretName укажите наименование secret типа tls для домена, указанного в ingress.extraTls.hosts.

Если нужно обеспечить отказоустойчивость, в параметре replicaCount укажите необходимое количество реплик.

В параметре configuration указана конфигурация HAProxy, с которой он запустится в Kubernetes-кластере. В секции backend s3_main конфигурации HAProxy укажите список серверов S3, на которые необходимо перенаправить пользовательский трафик.

Рассмотрим пример проксирования пользовательского трафика без поддержки SSL в хранилище S3 MinIO чартом elma365‑dbs без поддержки SSL в Kubernetes-кластере. Хранилище устанавливается согласно инструкции в статье «MinIO S3».

Пример:

## Настройки HAProxy для проксирования подключения к S3-хранилищу
haproxy:
  ingress:
    enabled: true
  ##включение поддержки HAProxy Ingress для работы на платформе OpenShift
  openshift: false
  ## домен (FQDN), по которому доступна система
  hostname: elma365-server.your_domain
  ## наименование bucket’а (в хранилище S3) для приложения ELMA365
  path: /s3elma365
  ## включение https
  tls: false
  #  extraTls:
  #  - hosts:
  #      - elma365-server.your_domain
  #  secretName: elma365-server.your_domain-tls
  ## количество реплик для обеспечения высокой доступности
  replicaCount: 1
  containerPorts:
    - name: http
      containerPort: 8080
  ## конфигурация HAProxy
  configuration: |
    global
      log stdout format raw local0
      maxconn 1024
    defaults
      log global
      timeout client 60s
      timeout connect 60s
      timeout server 60s
    frontend s3_main
      bind :8080
      default_backend s3_main
    backend s3_main
      server s3_1 minio.elma365-dbs.svc.cluster.local:80 check inter 2s
  ## политики контекста безопасности
  podSecurityContext:
    enabled: true
    fsGroup: 1001
  containerSecurityContext:
    enabled: true
    runAsUser: 1001
    runAsNonRoot: true
  ## указание ресурсов
  resources:
    requests:
      memory: "64Mi"
      cpu: "50m"
    limits:
      memory: "512Mi"
      cpu: "500m"
...

Пример проксирования пользовательского трафика c поддержкой SSL на четыре сервера S3 (MinIO), расположенных вне кластера Kubernetes и развёрнутых согласно инструкции в статье «Кластер MinIO» c поддержкой SSL:

## Настройки HAProxy для проксирования подключения к S3-хранилищу
haproxy:
  ingress:
    enabled: true
  ## включение поддержки HAProxy Ingress для работы на платформе OpenShift
  openshift: false
  ## домен (FQDN), по которому доступна система
  hostname: elma365-server.your_domain
  ## наименование bucket’а (в хранилище S3) для приложения ELMA365
  path: /s3elma365
  ## включение https
  tls: true
    extraTls:
    - hosts:
        - elma365-server.your_domain
    secretName: elma365-server.your_domain-tls
  ## количество реплик для обеспечения высокой доступности
  replicaCount: 1
  containerPorts:
    - name: http
      containerPort: 8080
  ## конфигурация HAProxy
  configuration: |
    global
      log stdout format raw local0
      maxconn 100000
    defaults
      log global
      timeout client 60s
      timeout connect 60s
      timeout server 60s
    frontend s3_main
      bind :8080
      default_backend s3_main
    backend s3_main
      balance leastconn
      server s3_1 minio-server1.your_domain:9000 check-ssl ssl verify none check inter 2s
      server s3_2 minio-server1.your_domain:9000 check-ssl ssl verify none check inter 2s
      server s3_3 minio-server1.your_domain:9000 check-ssl ssl verify none check inter 2s
      server s3_4 minio-server1.your_domain:9000 check-ssl ssl verify none check inter 2s
  ## политики контекста безопасности
  podSecurityContext:
    enabled: true
    fsGroup: 1001
  containerSecurityContext:
    enabled: true
    runAsUser: 1001
    runAsNonRoot: true
  ## указание ресурсов
  resources:
    requests:
      memory: "64Mi"
      cpu: "50m"
    limits:
      memory: "512Mi"
      cpu: "500m"
...

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

Шаг 3: Установка с помощью Helm в Kubernetes-кластер чарта S3-Gateway

Выполните установку чарта S3-Gateway в namespace s3gateway.

Для установки через интернет:

helm upgrade --install s3gateway elma365/s3gateway -f values-s3gateway.yaml -n s3gateway --create-namespace 

Для установки без доступа в интернет:

helm upgrade --install s3gateway ./s3gateway -f values-s3gateway.yaml -n s3gateway --create-namespace 

Шаг 4: Подключение к S3

Параметры для подключения к S3:

  • address — укажите elma365-server.your_domain;
  • bucket, region, access key ID, secret access key, secret access key и enable SSL — укажите значения согласно параметрам S3-хранилища, для которого настраивается проксирование.

начало внимание

Подготовка инфраструктуры происходит до установки приложения ELMA365. Если была произведена установка чарта S3-Gateway, не забудьте изменить адрес подключения к S3 (elma365.s3.backend.address) в настройках приложения ELMA365. Подробнее об этом читайте в статье «Изменение параметров ELMA365 Enterprise».

конец внимание