This commit is contained in:
ivan 2026-07-29 17:34:10 +05:00
parent d1b7fb65aa
commit 73ec054bba
5 changed files with 257 additions and 1 deletions

234
apps/iam/base/backend.yaml Normal file
View File

@ -0,0 +1,234 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: iam-backend
namespace: iam
spec:
interval: 10m
chart:
spec:
chart: universal-chart
version: "0.1.9"
sourceRef:
kind: HelmRepository
name: yc-oci-charts
namespace: flux-system
interval: 10m
install:
remediation:
retries: 3
upgrade:
remediation:
retries: 3
values:
global:
env: _default
services:
backend:
enabled: true
serviceAccount:
enabled:
_default: true
name:
_default: iam-vault
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/iams:production_c75b7b58
pullPolicy:
_default: IfNotPresent
deployment:
enabled: true
name:
_default: iam-backend
replicaCount:
_default: 1
production: 4
port:
_default: 8080
command:
_default: ["/bin/sh", "-ec"]
args:
_default:
- |
set -a
[ -f /vault/secrets/iam-db ] && . /vault/secrets/iam-db
[ -f /vault/secrets/iam-zitadel ] && . /vault/secrets/iam-zitadel
[ -f /vault/secrets/iam-kafka ] && . /vault/secrets/iam-kafka
[ -f /vault/secrets/iam-s3 ] && . /vault/secrets/iam-s3
set +a
exec ./server
probes:
liveness:
enabled: false
readiness:
enabled: false
service:
enabled: true
name:
_default: iam-backend
type:
_default: ClusterIP
port:
_default: 8000
targetPort:
_default: 8080
portName:
_default: http
imagePullSecrets:
enabled:
_default: true
name:
_default: regcred
labels:
monitoring: prometheus
# CA-сертификат Kafka, на него указывает KAFKA_SSL_CAFILE ниже.
# Схема volumes/secret не встречается больше нигде в репо (везде используется только configMap) —
# проверить соответствие values.schema.json чарта universal-chart перед выкаткой.
volumes:
_default:
- name: kafka-ca
mountPath:
_default: /etc/ca-certificates/Yandex/ca-cert
subPath:
_default: ca-cert
readOnly:
_default: true
secret:
secretName:
_default: ya-ca-secret
items:
- key: ca-cert
path:
_default: ca-cert
envs:
- name: ENVIRONMENT
value:
_default: "prod"
- name: LOG_LEVEL
value:
_default: "debug"
- name: AUTH_ENABLED
value:
_default: "true"
- name: HTTP_PORT
value:
_default: "8080"
- name: HTTP_READ_BUFFER_SIZE
value:
_default: "131072"
- name: DB_MIGRATIONS_PATH
value:
_default: "migrations"
- name: ZITADEL_ENABLED
value:
_default: "false"
- name: ZITADEL_HOST
value:
_default: "https://login.sarex.io"
- name: ZITADEL_ORG_RULES_FILE
value:
_default: "config/zitadel/org-rules-prod.json"
- name: S3_ENABLED
value:
_default: "true"
- name: S3_ENDPOINT_URL
value:
_default: "https://storage.yandexcloud.net"
- name: S3_BUCKET_NAME
value:
_default: "sarex-media-storage"
- name: S3_REGION
value:
_default: "ru-central1"
- name: S3_PRESIGN_EXPIRES
value:
_default: "1h"
- name: KAFKA_ENABLED
value:
_default: "false"
- name: KAFKA_SSL_CAFILE
value:
_default: "/etc/ca-certificates/Yandex/ca-cert"
- name: KAFKA_TOPIC_LEGACY_AMS_SYNC
value:
_default: "ams-sync"
podAnnotations:
_default:
traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200"
vault.hashicorp.com/agent-init-first: "true"
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-pre-populate-only: "true"
vault.hashicorp.com/auth-path: auth/kubernetes
vault.hashicorp.com/role: iam
vault.hashicorp.com/agent-inject-secret-iam-db: secrets/data/apps/iam/postgres
vault.hashicorp.com/agent-inject-template-iam-db: |-
{{- with secret "secrets/data/apps/iam/postgres" -}}
DB_DSN=postgres://{{ index .Data.data "username" }}:{{ index .Data.data "password" }}@{{ index .Data.data "host" }}:{{ index .Data.data "port" }}/{{ index .Data.data "database" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-iam-zitadel: secrets/data/apps/iam/zitadel
vault.hashicorp.com/agent-inject-template-iam-zitadel: |-
{{- with secret "secrets/data/apps/iam/zitadel" -}}
ZITADEL_ACCESS_TOKEN={{ index .Data.data "access_token" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-iam-kafka: secrets/data/kafka/apps/iam
vault.hashicorp.com/agent-inject-template-iam-kafka: |-
{{- with secret "secrets/data/kafka/apps/iam" -}}
KAFKA_SECURITY_PROTOCOL={{ index .Data.data.auth "security_protocol" }}
KAFKA_SASL_MECHANISM={{ index .Data.data.auth "sasl_mechanism" }}
KAFKA_BROKERS={{ index .Data.data.auth "bootstrap_servers" }}
KAFKA_SASL_PLAIN_USERNAME={{ index .Data.data "username" }}
KAFKA_SASL_PLAIN_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-iam-s3: secrets/data/minio/apps/iam
vault.hashicorp.com/agent-inject-template-iam-s3: |-
{{- with secret "secrets/data/minio/apps/iam" -}}
S3_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
S3_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
{{- end -}}
commitSha: ""
gitlabUri: ""
gitlabJobUrl: ""
owner: ""

View File

@ -0,0 +1,7 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: iam
resources:
- namespace.yaml
- backend.yaml

View File

@ -0,0 +1,8 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: iam
labels:
istio-injection: enabled
security.deckhouse.io/pod-policy: privileged

View File

@ -0,0 +1,6 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: iam
resources:
- ../base

View File

@ -29,4 +29,5 @@ resources:
- ../../apps/django/d8-ugmk-prod
- ../../apps/documentations/d8-ugmk-prod
- ../../apps/checklists/d8-ugmk-prod
- ../../apps/contracts/d8-ugmk-prod
- ../../apps/contracts/d8-ugmk-prod
- ../../apps/iam/d8-ugmk-prod