Проксирование S3 в Kubernetes через S3-Gateway
Проксирование трафика до S3‑хранилища — это один из этапов подготовки инфраструктуры для работы с ELMA365. Для этого можно использовать инструмент S3‑Gateway.
Он обеспечивает доступ к S3‑хранилищу, развёрнутому внутри или вне Kubernetes‑кластера, через единую точку входа — домен (FQDN) или IP‑адрес для ELMA365.
Установка S3‑Gateway состоит из нескольких этапов:
- Скачивание Helm-чарта и конфигурационного файла.
- Заполнение конфигурационного файла.
- Установка с помощью Helm в Kubernetes-кластер чарта S3-Gateway.
- Подключение к 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
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет
- На компьютере с доступом в интернет загрузите архив актуальной версии (latest) чарта S3-Gateway из репозитория elma365, выполнив команду:
helm repo add elma365 https://charts.elma365.tech
helm repo update
helm pull elma365/s3gateway
- Полученный архив чарта s3gateway-X.Y.Z.tgz скопируйте на сервер, где будет производиться установка.
- На сервере распакуйте чарт s3gateway-X.Y.Z.tgz и скопируйте конфигурационный файл по умолчанию
values.yaml в values-s3gateway.yaml :
tar -xf s3gateway-X.Y.Z.tgz
cp s3gateway/values.yaml values-s3gateway.yaml
|
Шаг 2: Заполнение конфигурационного файла
Заполните конфигурационный файл values-s3gateway.yaml
для установки S3‑Gateway:
- В параметре
ingress.hostname
укажите домен (FQDN) или IP-адрес, по которому доступно приложение ELMA365. - В параметре
ingress.path
укажите наименование бакета (в хранилище S3), в котором приложение ELMA365 хранит файлы.
Наименование бакета в S3 должно соответствовать формату s3elma365.
Начало примера
Пример:
- s3elma365
- s3elma365-dev
- s3elma365-prod
конец примера
- Следующие изменения нужно внести в конфигурационный файл, если веб‑интерфейс приложения 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, на которые необходимо перенаправить пользовательский трафик.
Пример проксирования пользовательского трафика в хранилище S3 MinIO чартом elma365 dbs без поддержки SSL в Kubernetes-кластере
В примере S3-хранилище устанавливается согласно инструкции в статье «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"
...
|
Пример проксирования пользовательского трафика в хранилище S3 MinIO с поддержкой SSL
В примере четыре сервера S3 (MinIO) расположены вне Kubernetes-кластера и развёрнуты согласно инструкции в статье «Кластер MinIO».
# Настройки 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"
...
|
- Если вы устанавливаете S3‑Gateway в закрытом контуре без доступа в интернет, заполните параметры подключения к приватному registry.
Пример заполнения параметров для подключения к приватному registry
- Задайте адрес в параметре
haproxy.image.registry . - Задайте путь в параметре
haproxy.image.repository . - Укажите наименование секрета с правами доступа к приватному registry в параметре
haproxy.image.pullSecrets . Приватный registry должен быть создан вручную и зашифрован в Base64.
# Настройки HAProxy для проксирования подключения к S3-хранилищу
haproxy:
...
# Параметры подключения к приватному registry
image:
# адрес и путь для приватного registry
registry: registry.example.com
repository: /bitnami/haproxy
# tag: 2.7.3-debian-11-r5
# секрет с правами доступа к приватному registry должен быть создан вручную и зашифрован в Base64
pullSecrets:
- myRegistryKeySecretName
|
Шаг 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».
конец внимание