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 файлын жасаңыз:
# Құпиялар (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.dbPassword | PostgreSQL құпия сөзі |
secret.adminPassword | Hub-тің алғашқы әкімшісінің құпия сөзі |
secret.cipherSalt | Шифрлау тұзы (генерациялаңыз: openssl rand -hex 32) |
CORE_GRPC_HOST және CORE_PORTAL_URL үлгіде толтырылған — оларды өзгертудің қажеті жоқ.
Міндетті емес параметрлер
| Параметр | Әдепкі бойынша | Сипаттамасы |
|---|---|---|
app.configVars.HUB_NAME | Hub | Hub-тің көрсетілу атауы |
app.jvm.opts | -Xmx512m -Xms256m -XX:+UseG1GC | JVM параметрлері |
resources.requests.memory | 512Mi | Сұралатын жад |
resources.limits.memory | 1G | Жад шегі |
postgresql.primary.persistence.size | 10Gi | PostgreSQL диск өлшемі |
Ескертпе: 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-ге қосыңыз:
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-ті автоматты түрде жасайды.
existingSecret: ""
B нұсқасы (production үшін): бар K8s Secret-ті пайдаланыңыз.
existingSecret: "bidder-hub-secret"
5-қадам. Чартты орнатыңыз
Вендордан алынған нұсқаны көрсетіңіз (мысалы, 1.0.8). Чарт, Hub образы және appVersion нұсқалары сәйкес келеді — бірыңғай бірлік ретінде жаңартылады.
helm install bidder-hub oci://cr.yandex/crph7576m5ukcpvf6o0t/helm/bidder-hub \
--version <version> -f values-client.yaml
6-қадам. Күйді тексеріңіз
kubectl get pods -l app.kubernetes.io/name=bidder-hub
kubectl logs -f deployment/bidder-hub
Подтар Running статусына өтуі керек. Hub веб-интерфейсін (8082 порт) ашу үшін портты жергілікті машинаға өткізіңіз:
kubectl port-forward svc/bidder-hub 8082:8082
Содан кейін браузерде http://localhost:8082/ мекенжайын ашыңыз — Hub беті ашылса, бәрі жұмыс істейді. Hub жауабын келесі командамен де тексеруге болады:
curl http://localhost:8082/public/api/v1/activation/status
Жаңарту
Чарт пен Hub образы нұсқалары бірге жаңартылады. Жаңа нұсқаны вендордан алыңыз да, орындаңыз:
# 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 подын табыңыз:
kubectl get pods -n <namespace> -l app.kubernetes.io/name=postgresql
Резервтік көшірме жасаңыз:
kubectl exec -n <namespace> bidder-hub-postgresql-0 -- \
pg_dump -U hub hub > backup_$(date +%Y%m%d_%H%M%S).sql
Қалпына келтіру:
kubectl exec -n <namespace> -i bidder-hub-postgresql-0 -- \
psql -U hub hub < backup_YYYYMMDD_HHMMSS.sql
Hub-ты жаңартар алдында әрқашан дерекқордың резервтік көшірмесін жасаңыз.
Алдыңғы нұсқаға қайту
Жылдам жол — алдыңғы Helm ревизиясына қайту:
helm rollback bidder-hub
Нақты нұсқаға қайту (толық қайталанатын):
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 арқылы ашуға болады.