Helm-чарт көмегімен Hub-ты Kubernetes-кластерде орналастыру

Kubernetes / Helm арқылы орнату

Инфрақұрылымыңыз Kubernetes-те құрылған болса, осы әдісті пайдаланыңыз.

Талаптар

  • Kubernetes 1.26+
  • Helm 3.8+ (OCI қолдауымен)

1-қадам. values-client.yaml файлын жасаңыз

Hub чарты OCI-артефакт ретінде таратылады — репозиторийді клондаудың немесе helm dependency update іске қосудың қажеті жоқ, реестрде авторизация талап етілмейді. Сізге қажеттінің бәрі — мәндер файлы.

Келесі мазмұнмен values-client.yaml файлын жасаңыз:

yaml
# Құпиялар (existingSecret бос болғанда пайдаланылады).
# Дайын Kubernetes Secret-ті алу үшін existingSecret-ті беріп, secret блогын жойыңыз.
existingSecret: ""
secret:
  dbPassword: ""           # PostgreSQL құпия сөзі — сенімдісін ойлап табыңыз
  adminUsername: "admin"   # алғашқы әкімшінің логині
  adminPassword: ""        # әкімші құпия сөзі — сенімдісін ойлап табыңыз
  cipherSalt: ""           # шифрлау тұзы: openssl rand -hex 32

app:
  jvm:
    opts: "-Xmx512m -Xms256m -XX:+UseG1GC -Duser.timezone=UTC"
  configVars:
    HUB_NAME: "My Company Hub"             # Hub-тің көрсетілу атауы
    CORE_GRPC_HOST: "grpc.bidder-box.ru"   # Core мекенжайы — толтырылған
    CORE_PORTAL_URL: "app.bidder-box.ru"   # Портал URL-і — толтырылған

# Hub образы чарт нұсқасына байланысты (--version X.Y.Z) — қайта анықтаудың қажеті жоқ.
# image:
#   tag: ""

# Домен бойынша сыртқы қолжетімділік (қосымша) — «Ingress баптау» қадамын қараңыз.
# ingress:
#   enabled: true
#   className: nginx
#   hosts:
#     - host: hub.mycompany.com
#       paths:
#         - path: /
#           pathType: Prefix

Core мекенжайы мен портал URL-і толтырылған — тек secret блогындағы құпияларды енгізу қалды (келесі қадам).

2-қадам. Құпияларды толтырыңыз

values-client.yaml файлының secret блогында мәндерді толтырыңыз:

ПараметрНе жазу керек
secret.dbPasswordPostgreSQL құпия сөзі
secret.adminPasswordHub-тің алғашқы әкімшісінің құпия сөзі
secret.cipherSaltШифрлау тұзы (генерациялаңыз: openssl rand -hex 32)
i

CORE_GRPC_HOST және CORE_PORTAL_URL үлгіде толтырылған — оларды өзгертудің қажеті жоқ.

Міндетті емес параметрлер

ПараметрӘдепкі бойыншаСипаттамасы
app.configVars.HUB_NAMEHubHub-тің көрсетілу атауы
app.jvm.opts-Xmx512m -Xms256m -XX:+UseG1GCJVM параметрлері
resources.requests.memory512MiСұралатын жад
resources.limits.memory1GЖад шегі
postgresql.primary.persistence.size10GiPostgreSQL диск өлшемі
i

Ескертпе: Core gRPC порты мен TLS-келісім түрі қолданба образында қатаң берілген (443 порт, TLS) және values.yaml арқылы қайта анықталмайды.

3-қадам. Ingress баптау (қосымша)

Helm-чарт Docker-мен бірдей bidder-hub образын (8082 порт) орналастырады. Образ REST API мен веб-интерфейсті қамтиды — чартта жеке фронтенд-контейнер жоқ, интерфейсті Hub өзі береді. Helm арқылы орнатқаннан кейін веб-интерфейс API-мен бірдей 8082 портта қолжетімді.

Егер Hub-қа (веб-интерфейс пен API) домендік атау бойынша сыртқы қолжетімділік қажет болса, values-client.yaml-ге қосыңыз:

yaml
ingress:
  enabled: true
  className: nginx
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
  hosts:
    - host: hub.mycompany.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: hub-tls
      hosts:
        - hub.mycompany.com

4-қадам. Құпияларды басқару

A нұсқасы (қарапайым): чарт Secret-ті автоматты түрде жасайды.

yaml
existingSecret: ""

B нұсқасы (production үшін): бар K8s Secret-ті пайдаланыңыз.

yaml
existingSecret: "bidder-hub-secret"

5-қадам. Чартты орнатыңыз

Вендордан алынған нұсқаны көрсетіңіз (мысалы, 1.0.8). Чарт, Hub образы және appVersion нұсқалары сәйкес келеді — бірыңғай бірлік ретінде жаңартылады.

bash
helm install bidder-hub oci://cr.yandex/crph7576m5ukcpvf6o0t/helm/bidder-hub \
  --version <version> -f values-client.yaml

6-қадам. Күйді тексеріңіз

bash
kubectl get pods -l app.kubernetes.io/name=bidder-hub
kubectl logs -f deployment/bidder-hub

Подтар Running статусына өтуі керек. Hub веб-интерфейсін (8082 порт) ашу үшін портты жергілікті машинаға өткізіңіз:

bash
kubectl port-forward svc/bidder-hub 8082:8082

Содан кейін браузерде http://localhost:8082/ мекенжайын ашыңыз — Hub беті ашылса, бәрі жұмыс істейді. Hub жауабын келесі командамен де тексеруге болады:

bash
curl http://localhost:8082/public/api/v1/activation/status

Жаңарту

Чарт пен Hub образы нұсқалары бірге жаңартылады. Жаңа нұсқаны вендордан алыңыз да, орындаңыз:

bash
# 1. Дерекқордың резервтік көшірмесін жасаңыз (төмендегі бөлімді қараңыз)

# 2. Жаңа нұсқаға жаңартыңыз
helm upgrade bidder-hub oci://cr.yandex/crph7576m5ukcpvf6o0t/helm/bidder-hub \
  --version <new-version> -f values-client.yaml

# 3. Күйді тексеріңіз
kubectl rollout status deployment/bidder-hub

Резервтік көшірме

Жаңартар алдында және пайдалану режимінде тұрақты түрде PostgreSQL дерекқорының резервтік көшірмесін жасаңыз.

PostgreSQL Bitnami StatefulSet ретінде орналастырылған — Deployment-ке емес, подтың өзіне тікелей жүгініңіз.

PostgreSQL подын табыңыз:

bash
kubectl get pods -n <namespace> -l app.kubernetes.io/name=postgresql

Резервтік көшірме жасаңыз:

bash
kubectl exec -n <namespace> bidder-hub-postgresql-0 -- \
  pg_dump -U hub hub > backup_$(date +%Y%m%d_%H%M%S).sql

Қалпына келтіру:

bash
kubectl exec -n <namespace> -i bidder-hub-postgresql-0 -- \
  psql -U hub hub < backup_YYYYMMDD_HHMMSS.sql
!

Hub-ты жаңартар алдында әрқашан дерекқордың резервтік көшірмесін жасаңыз.

Алдыңғы нұсқаға қайту

Жылдам жол — алдыңғы Helm ревизиясына қайту:

bash
helm rollback bidder-hub

Нақты нұсқаға қайту (толық қайталанатын):

bash
helm upgrade bidder-hub oci://cr.yandex/crph7576m5ukcpvf6o0t/helm/bidder-hub \
  --version <previous-version> -f values-client.yaml

Дерекқор сұлбасы өзгерген болса — чартты кері қайтарар алдында оны резервтік көшірмеден қалпына келтіріңіз.

Келесі қадам

Hub веб-интерфейсі орнатылғаннан кейін бірден 8082 портта қолжетімді (оны bidder-hub образы өзі береді) — оны Ingress немесе kubectl port-forward арқылы ашуға болады.

Енді Hub-ты белсендіріп, Core-ға қосыңыз.