REFACTOR(k8s): reorganize to base/overlays pattern

- Add k8s/base/ with deployment and service
- Add k8s/overlays/prod/ with environment config
This commit is contained in:
2025-12-23 22:49:06 +09:00
parent 9eec298fb3
commit 9d3a7656d4
14 changed files with 119 additions and 88 deletions

View File

@@ -1,7 +1,7 @@
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata: metadata:
name: mas name: mas-prod
namespace: argocd namespace: argocd
finalizers: finalizers:
- resources-finalizer.argocd.argoproj.io - resources-finalizer.argocd.argoproj.io
@@ -10,7 +10,7 @@ spec:
source: source:
repoURL: https://gitea0213.kro.kr/bluemayne/mas.git repoURL: https://gitea0213.kro.kr/bluemayne/mas.git
targetRevision: main targetRevision: main
path: deploy/k8s path: deploy/k8s/overlays/prod
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: mas namespace: mas

View File

@@ -2,9 +2,9 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization kind: Kustomization
resources: resources:
# App of Apps Application # App of Apps Application (self-managing)
- application.yaml - application.yaml
# MAS Application # Application deployments
- mas.yaml - application-prod.yaml

View File

@@ -0,0 +1,15 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
commonLabels:
app.kubernetes.io/name: mas
app.kubernetes.io/component: platform
images:
- name: harbor.mayne.vcn/mas/platform
newTag: latest

View File

@@ -1,14 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: mas
resources:
- namespace.yaml
- deployment.yaml
- service.yaml
- ingress.yaml
- mas-api-keys.yaml
- mas-postgres.yaml
- postgresql-root-password.yaml

View File

@@ -1,31 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: mas-api-keys
namespace: mas
spec:
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: vault-backend
target:
name: mas-api-keys
creationPolicy: Owner
data:
- secretKey: anthropic-api-key
remoteRef:
key: mas/api-keys
property: ANTHROPIC_API_KEY
- secretKey: groq-api-key
remoteRef:
key: mas/api-keys
property: GROQ_API_KEY
- secretKey: openai-api-key
remoteRef:
key: mas/api-keys
property: OPENAI_API_KEY
- secretKey: google-api-key
remoteRef:
key: mas/api-keys
property: GOOGLE_API_KEY

View File

@@ -1,19 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: mas-postgres
namespace: mas
spec:
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: vault-backend
target:
name: mas-postgres
creationPolicy: Owner
data:
- secretKey: password
remoteRef:
key: mas/postgres
property: PASSWORD

View File

@@ -0,0 +1,66 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: mas-api-keys
spec:
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: vault-backend
target:
name: mas-api-keys
creationPolicy: Owner
data:
- secretKey: anthropic-api-key
remoteRef:
key: mas/api-keys
property: ANTHROPIC_API_KEY
- secretKey: groq-api-key
remoteRef:
key: mas/api-keys
property: GROQ_API_KEY
- secretKey: openai-api-key
remoteRef:
key: mas/api-keys
property: OPENAI_API_KEY
- secretKey: google-api-key
remoteRef:
key: mas/api-keys
property: GOOGLE_API_KEY
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: mas-postgres
spec:
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: vault-backend
target:
name: mas-postgres
creationPolicy: Owner
data:
- secretKey: password
remoteRef:
key: mas/postgres
property: PASSWORD
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: postgresql-root-password
spec:
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: vault-backend
target:
name: postgresql-root-password
creationPolicy: Owner
data:
- secretKey: password
remoteRef:
key: databases/postgresql
property: PASSWORD

View File

@@ -0,0 +1,20 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: mas
resources:
- ../../base
- namespace.yaml
- resourcequota.yaml
- externalsecret.yaml
- ingress.yaml
commonLabels:
environment: production
# 이미지 태그 설정 (ArgoCD Image Updater가 자동으로 업데이트)
images:
- name: harbor.mayne.vcn/mas/platform
newTag: latest

View File

@@ -4,4 +4,5 @@ metadata:
name: mas name: mas
labels: labels:
name: mas name: mas
environment: production

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: ResourceQuota
metadata:
name: mas-quota
spec:
hard:
requests.cpu: "4"
requests.memory: 8Gi
limits.cpu: "8"
limits.memory: 16Gi
persistentvolumeclaims: "5"

View File

@@ -1,19 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: postgresql-root-password
namespace: mas
spec:
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: vault-backend
target:
name: postgresql-root-password
creationPolicy: Owner
data:
- secretKey: password
remoteRef:
key: databases/postgresql
property: PASSWORD