디렉토리 구조

base/
	app-cm.yml
	app-ingress.yml
	app-deploy.yml
	app-service.yml
	kustomization.yml
overlay/
	kustomization.yml
	patches/
		app-deploy.yml
		app-service.yml

base/app-cm.yml

apiVersion: v1
kind: ConfigMap
metadata:
  name: oliveyoung-config
data:
  DB_USER: admin
  JWT_ACCESS_EXPIRATION: "5184000000"
  JWT_REFRESH_EXPIRATION: "15552000000"
  application.properties: |-
    spring.profiles.include=k8s
    spring.application.name=oliveyoung-fbu-server
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.jpa.database=mysql
    spring.jpa.show-sql=true
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.properties.hibernate.format_sql=true
    spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
    spring.datasource.username=admin
    jwt.access-expiration=5184000000
    jwt.refresh-expiration=15552000000

base/app-ingress.yml

kind: IngressClass
metadata:
  name: alb-ingress-class
spec:
  controller: ingress.k8s.aws/alb
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/healthcheck-path: /health
spec:
  ingressClassName: alb-ingress-class
  rules:
  #- host: nginx.example.com
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app-service
            port:
              number: 80

base/app-deploy.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: oliveyoung
  template:
    metadata:
      labels:
        app: oliveyoung
    spec:
      containers:
        - name: myapp
          image: 409492321037.dkr.ecr.ap-northeast-2.amazonaws.com/cicd-gitlab:f83c2540
          ports:
            - containerPort: 8080
          envFrom:
            #- configMapRef:
            #    name: oliveyoung-config
            - secretRef:
                name: oliveyoung-secret

base/app-service.yml

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: oliveyoung

base/kustomization.yml

resources:
 - app-deploy.yml
 - app-service.yml
 - app-ingress.yml
 - app-cm.yml

overlay/kustomization.yml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: default

resources:
- ../base

patches:
  - path: patches/app-deploy.yml
  - path: patches/app-service.yml
  - path: patches/app-ingress.yml

images:
- name: 409492321037.dkr.ecr.ap-northeast-2.amazonaws.com/cicd-gitlab
  newName: 409492321037.dkr.ecr.ap-northeast-2.amazonaws.com/cicd-gitlab
  newTag: f83c2540