DevOps/K8s

[k8s] Pods 구성 및 도메인 연동 실습

cumo 2025. 4. 22. 15:33

문제

wordpress 이미지를 3개의 파드로 구성된 디플로이먼트로 생성하시오. 이후 해당 파드의 내용물이 https://mydomain.click/wp 라는 URL로 외부에 출력되도록 만드시오.

 

 

1. NameSpace 생성

kubectl create namespace wordpress

 

2. Ingress Controller 설치

외부 요청을 클러스터 내부의 여러 서비스로 "경로 기반' "호스트기반"으로 라우팅 하기 위해 설치

helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace --set controller.admissionWebhooks.enabled=false

 

3. Deployment, Ingress, Service 생성

 

yaml 구성

더보기

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  replicas: 3
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress-con
        image: wordpress:latest
        ports:
          - containerPort: 80   # ✅ 오타 수정
---
apiVersion: v1
kind: Service
metadata:
  name: wordpress-service       # ✅ 밑줄 제거
spec:
  selector:
    app: wordpress
  ports:
    - port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: wordpress-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - http:
        paths:
          - path: /wordpress
            pathType: Prefix
            backend:
              service:
                name: wordpress-service
                port:
                  number: 80