commit b087d1864f9a0730f3da01e8d2261cb4c55d23ce Author: shadowlegend Date: Mon Apr 14 20:59:17 2025 +0700 chore: add laws management deployment diff --git a/laws_management/k8s/base/config.yml b/laws_management/k8s/base/config.yml new file mode 100644 index 0000000..422770e --- /dev/null +++ b/laws_management/k8s/base/config.yml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: laws-management + namespace: default +data: + PHX_SERVER: 'true' + ERL_MAX_PORTS: '64' + NODE_HOST: laws_management + RELEASE_DISTRIBUTION: sname + DATABASE_HOST: laws-management-pg-rw.default.svc.cluster.local diff --git a/laws_management/k8s/base/deployment.yml b/laws_management/k8s/base/deployment.yml new file mode 100644 index 0000000..266c316 --- /dev/null +++ b/laws_management/k8s/base/deployment.yml @@ -0,0 +1,57 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: laws-management-server + namespace: default + annotations: + reloader.stakater.com/match: 'true' +spec: + selector: + matchLabels: + app: laws-management-server + template: + metadata: + labels: + app: laws-management-server + spec: + containers: + - name: laws-management-server + image: laws-management-server + command: + - sh + - -c + - './bin/laws_management eval LawsManagement.Release.migrate && ./bin/laws_management start' + + resources: + limits: + cpu: 500m + memory: 512Mi + + ports: + - name: http + containerPort: 4000 + + env: + - name: IS_DATABASE_USE_SSL + value: 'yes' + - name: DATABASE_SSL_VERIFY_MODE + value: verify_none + - name: DATABASE_NAME + value: laws_management + - name: DATABASE_USERNAME + valueFrom: + secretKeyRef: + key: username + name: laws-management-postgres + - name: DATABASE_PASSWORD + valueFrom: + secretKeyRef: + key: password + name: laws-management-postgres + + envFrom: + - configMapRef: + name: laws-management + - secretRef: + name: laws-management diff --git a/laws_management/k8s/base/kustomization.yml b/laws_management/k8s/base/kustomization.yml new file mode 100644 index 0000000..6d59fb1 --- /dev/null +++ b/laws_management/k8s/base/kustomization.yml @@ -0,0 +1,10 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- config.yml +- service.yml +- deployment.yml +- postgresql.yml +- pg-pooler.yml diff --git a/laws_management/k8s/base/pg-pooler.yml b/laws_management/k8s/base/pg-pooler.yml new file mode 100644 index 0000000..1d32188 --- /dev/null +++ b/laws_management/k8s/base/pg-pooler.yml @@ -0,0 +1,19 @@ +--- +apiVersion: postgresql.cnpg.io/v1 +kind: Pooler +metadata: + name: laws-management-pg-rw + namespace: default +spec: + type: rw + instances: 1 + + cluster: + name: laws-management-pg + + pgbouncer: + poolMode: transaction + + parameters: + max_client_conn: "1024" + default_pool_size: "32" diff --git a/laws_management/k8s/base/postgresql.yml b/laws_management/k8s/base/postgresql.yml new file mode 100644 index 0000000..3fa903a --- /dev/null +++ b/laws_management/k8s/base/postgresql.yml @@ -0,0 +1,30 @@ +--- +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: laws-management-pg + namespace: default +spec: + instances: 1 + + storage: + size: 2Gi + + walStorage: + size: 4Gi + + bootstrap: + initdb: + database: laws_management + dataChecksums: true + owner: laws_management + secret: + name: laws-management-postgres + + postgresql: + parameters: + min_wal_size: 1GB + max_wal_size: 2GB + shared_buffers: 256MB + hot_standby_feedback: "on" + effective_io_concurrency: "200" diff --git a/laws_management/k8s/base/secrets.example.yml b/laws_management/k8s/base/secrets.example.yml new file mode 100644 index 0000000..936aea3 --- /dev/null +++ b/laws_management/k8s/base/secrets.example.yml @@ -0,0 +1,18 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: laws-management + namespace: default +data: + SECRET_KEY_BASE: SW0yaDZTYVZ3TC9kdzNEd0hBS1B1RURHMmNqekZKS1FzZTNPSFNUbjR5TzYzcVFnRUlxSVNCcFdlcHQ2NnJGKwo= + +--- +apiVersion: v1 +kind: Secret +metadata: + name: laws-management-postgres + namespace: default +data: + username: bGF3c19tYW5hZ2VtZW50 + password: bGF3c19tYW5hZ2VtZW50 diff --git a/laws_management/k8s/base/service.yml b/laws_management/k8s/base/service.yml new file mode 100644 index 0000000..4ff2aa2 --- /dev/null +++ b/laws_management/k8s/base/service.yml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: laws-management-server + namespace: default +spec: + selector: + app: laws-management-server + ports: + - name: http + port: 80 + targetPort: http diff --git a/laws_management/k8s/dev/kustomization.yml b/laws_management/k8s/dev/kustomization.yml new file mode 100644 index 0000000..9dc15e6 --- /dev/null +++ b/laws_management/k8s/dev/kustomization.yml @@ -0,0 +1,20 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: laws-management + +resources: +- ../base +- secrets.sealed.yml + +images: +- name: laws-management-server + newName: ghcr.io/ekycsolutions/laws_management + newTag: dev + +configMapGenerator: +- name: laws-management + behavior: merge + literals: + - DATABASE_HOST=laws-management-pg-rw.laws-management.svc.cluster.local