diff --git a/k8s/README.md b/k8s/README.md index 3f47905..c8f0882 100644 --- a/k8s/README.md +++ b/k8s/README.md @@ -1,9 +1,22 @@ ## K-Pass(Kubernetes) 배포 설정 - web-sample 프로젝트를 kubernetes 환경에 배포하기 위한 설정파일 -- 로컬PC에 minikube가 구성된 환경을 가정 +- 로컬PC에 minikube 또는 Docker Desktop / kind가 구성된 환경을 가정 --- -### minikube 내 도커 이미지 로드 +### 도커 이미지 빌드 +- 프로젝트 루트 디렉토리(Dockerfile 위치)에서 아래 명령어로 이미지를 생성 + - ```docker build -t egovframe-web:5.0.0 .``` +- 빌드된 이미지 확인 + - ```docker image ls | grep egovframe-web``` + +### 실행 환경별 이미지 적재 및 접속 방법 + +| 환경 | 이미지 적재 | 웹 접속 URL | +|---|---|---| +| **minikube** | `minikube image load egovframe-web:5.0.0` 필요 | `http://:30000/app/` | +| **Docker Desktop / kind** | 별도 적재 불필요 (로컬 Docker 이미지 그대로 사용) | `http://localhost:30000/app/` | + +### minikube 내 도커 이미지 로드 (minikube 사용 시) - 대상 이미지 --> egovframe-web:5.0.0 - 대상 이미지 확인 명령어 ``` docker image ls ``` - minikube 내 이미지 로드 diff --git a/k8s/deployment.yaml b/k8s/deployment.yaml index 659de23..daeb875 100644 --- a/k8s/deployment.yaml +++ b/k8s/deployment.yaml @@ -4,7 +4,15 @@ metadata: name: egovframe-web labels: app: egovframe-web + app.kubernetes.io/name: egovframe-web + app.kubernetes.io/part-of: egovframe-sample spec: + replicas: 1 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 selector: matchLabels: app: egovframe-web @@ -12,9 +20,40 @@ spec: metadata: labels: app: egovframe-web + app.kubernetes.io/name: egovframe-web + app.kubernetes.io/part-of: egovframe-sample spec: containers: - name: egovframe-web + # Replace with your registry/tag, e.g. ghcr.io//egovframe-web:5.0.0 image: egovframe-web:5.0.0 + imagePullPolicy: IfNotPresent ports: - - containerPort: 8080 + - name: http + containerPort: 8080 + resources: + requests: + cpu: "250m" + memory: "512Mi" + limits: + cpu: "1000m" + memory: "1Gi" + readinessProbe: + httpGet: + path: /app/ + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + failureThreshold: 6 + livenessProbe: + httpGet: + path: /app/ + port: http + initialDelaySeconds: 90 + periodSeconds: 20 + failureThreshold: 3 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL diff --git a/k8s/service.yaml b/k8s/service.yaml index c9b4f11..f0485f7 100644 --- a/k8s/service.yaml +++ b/k8s/service.yaml @@ -1,13 +1,17 @@ apiVersion: v1 kind: Service metadata: - name: egovframe-web-sample + name: egovframe-web + labels: + app: egovframe-web + app.kubernetes.io/name: egovframe-web + app.kubernetes.io/part-of: egovframe-sample spec: + type: NodePort selector: - app: egovframe-web-sample + app: egovframe-web ports: - - port: 8080 - targetPort: 8080 + - name: http + port: 8080 + targetPort: http nodePort: 30000 - type: NodePort - \ No newline at end of file