feat: Helm chart для shared-sqs deployment + thinking logs

This commit is contained in:
Naeel
2026-04-13 18:50:28 +03:00
parent 2a31de8562
commit 11d03d6b10
9 changed files with 129 additions and 19 deletions
+9
View File
@@ -0,0 +1,9 @@
# Chart.yaml — Helm chart для shared-sqs (multi-tenant SQS-compatible message queue)
# Created: 2026-04-11
# Updated: 2026-04-12 09:57 MSK — appVersion v0.1.22
apiVersion: v2
name: shared-sqs
description: Multi-tenant AWS SQS-compatible message queue service
type: application
version: 0.1.0
appVersion: "0.1.22"
@@ -0,0 +1,26 @@
{{/*
_helpers.tpl общие хелперы для shared-sqs Helm chart
Created: 2026-04-11
*/}}
{{/* Полное имя релиза */}}
{{- define "shared-sqs.fullname" -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/* Общие labels */}}
{{- define "shared-sqs.labels" -}}
app: shared-sqs
app.kubernetes.io/name: shared-sqs
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
{{- end }}
{{/* Selector labels */}}
{{- define "shared-sqs.selectorLabels" -}}
app: shared-sqs
app.kubernetes.io/name: shared-sqs
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
@@ -24,8 +24,8 @@ spec:
spec:
containers:
- name: shared-sqs
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
image: "naeel/shared-sqs:{{ .Values.image.tag }}"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 4100
name: http
@@ -66,12 +66,8 @@ spec:
- name: BILLING_PG_PASSWORD
valueFrom:
secretKeyRef:
{{- if .Values.billing.postgres.existingSecret }}
name: {{ .Values.billing.postgres.existingSecret }}
{{- else }}
name: shared-sqs-billing-pg
{{- end }}
key: {{ .Values.billing.postgres.secretKey | default "password" }}
key: password
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 10 }}
@@ -0,0 +1,7 @@
{{/*
namespace.yaml — не создаём namespace из чарта,
т.к. он может уже существовать (managed платформой или вручную).
Создавать namespace перед helm install:
kubectl create namespace {{ .Values.namespace }}
Created: 2026-04-11
*/}}
@@ -0,0 +1,12 @@
# secret-admin.yaml — Secret с admin токеном
# Created: 2026-04-11
apiVersion: v1
kind: Secret
metadata:
name: shared-sqs-admin
namespace: {{ .Values.namespace }}
labels:
{{- include "shared-sqs.labels" . | nindent 4 }}
type: Opaque
stringData:
token: {{ .Values.admin.token | quote }}
@@ -0,0 +1,14 @@
# secret-redis.yaml — Secret с Redis credentials (addr + user + password)
# Created: 2026-04-11
apiVersion: v1
kind: Secret
metadata:
name: shared-sqs-redis
namespace: {{ .Values.namespace }}
labels:
{{- include "shared-sqs.labels" . | nindent 4 }}
type: Opaque
stringData:
addr: {{ .Values.redis.addr | quote }}
user: {{ .Values.redis.user | quote }}
password: {{ .Values.redis.password | quote }}
+6 -12
View File
@@ -22,14 +22,13 @@
# Namespace в Kubernetes куда будет задеплоен сервис
namespace: shared-sqs
# Docker-образ сервиса
# Версия образа сервиса
image:
repository: naeel/shared-sqs
tag: "v0.1.24"
pullPolicy: IfNotPresent
# Redis — хранит все очереди и сообщения.
# addr: адрес в формате host:port (можно внутренний K8s DNS или внешний IP)
# addr: адрес в формате host:port (внутренний K8s DNS или внешний IP)
# user: Redis-пользователь (по умолчанию "default" — стандартный встроенный пользователь Redis)
redis:
addr: "rfrm-redisk8s.54467f74-67f5-4ca7-9b4a-bdd50e8c23d6.svc:6379"
user: "default"
@@ -41,7 +40,7 @@ redis:
admin:
token: "sqs-admin-7a7d8bd0c060a75c198d48680f34077a"
# Создать demo-тенанта при первом старте (удобно для проверки).
# Создать demo-тенанта при первом старте (удобно для проверки работы).
# В продакшне можно поставить false.
seedDemo: true
@@ -55,7 +54,7 @@ resources:
cpu: "500m"
# Ingress — открывает сервис наружу по домену.
# host: ваш домен, который должен указывать на IP ingress-контроллера кластера.
# host: ваш домен, должен указывать на IP ingress-контроллера кластера.
# После деплоя cert-manager автоматически выпустит TLS-сертификат.
ingress:
enabled: true
@@ -68,7 +67,6 @@ ingress:
nginx.ingress.kubernetes.io/proxy-send-timeout: "30"
tls:
enabled: true
# Имя Secret куда cert-manager положит TLS-сертификат
secretName: shared-sqs-tls
# Биллинг — запись статистики по всем SQS-операциям в PostgreSQL.
@@ -76,15 +74,11 @@ ingress:
billing:
enabled: true
postgres:
# Адрес PostgreSQL (внутренний K8s DNS или внешний хост)
host: "postgresqlk8s-master.dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5.svc.cluster.local"
port: "5432"
# База данных должна существовать заранее (CREATE DATABASE sqsdb)
database: "sqsdb"
user: "super"
password: "BQUF5ruECa1ZFlq4wYt3gPJUEmtBMkA9QNK4MM5Sd8al4ArMDlmT16DIKHYBPyif"
# disable — если PostgreSQL без SSL (например локальный)
sslmode: "require"
# Альтернатива паролю выше: указать имя уже существующего K8s Secret.
# Если задан — поле password выше игнорируется.
existingSecret: ""
secretKey: "password"