Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions k8s/README.md
Original file line number Diff line number Diff line change
@@ -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://<minikube INTERNAL-IP>:30000/app/` |
| **Docker Desktop / kind** | 별도 적재 불필요 (로컬 Docker 이미지 그대로 사용) | `http://localhost:30000/app/` |

### minikube 내 도커 이미지 로드 (minikube 사용 시)
- 대상 이미지 --> egovframe-web:5.0.0
- 대상 이미지 확인 명령어 ``` docker image ls ```
- minikube 내 이미지 로드
Expand Down
41 changes: 40 additions & 1 deletion k8s/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,56 @@ 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
template:
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/<org>/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
16 changes: 10 additions & 6 deletions k8s/service.yaml
Original file line number Diff line number Diff line change
@@ -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