[K8s] Helm 과 Ingress 웹서버 통합 라우팅 구성

2025. 4. 22. 11:54·DevOps/K8s

쿠버네티스 패키지 매니저 설치

wget https://get.helm.sh/helm-v3.17.3-linux-amd64.tar.gz
tar -zxvf helm-v3.17.3-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

 

#helm 통해 ingress controllor 설치

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

kubectl get all -n ingress-nginx
-n : 특정 네임 스페이스만 보기

 

 

#ingress-nginx-controller 서비스를 수정

 

kubectl edit svc ingress-nginx-controller -n ingress-nginx



 

쿠버네티스 웹 Pod 생성

(httpd, nginx, Tomcat) Pod 생성 및 Service 생성, Ingress 리소스를 통해 외부에 접근할 수 있도록 전체 프로젝트 구성

 

생성파일.yaml

더보기

# [1] NGINX Deployment: Nginx 웹 서버를 2개의 Pod로 실행
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 2  # 파드 2개 생성하여 부하분산 가능하게 함
  selector:
    matchLabels:
      app: nginx  # 파드 선택 조건 (서비스와 연결될 label)
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx  # 공식 Nginx 이미지 사용
---
# [2] NGINX Service: ClusterIP 방식으로 NGINX 파드 묶음에 접근 가능하게 설정
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx  # nginx 파드 선택
  ports:
    - port: 80  # 서비스 포트 (클러스터 내부용)
---
# [3] HTTPD Deployment: Apache HTTP Server 파드를 2개 실행
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: httpd
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
        - name: httpd
          image: httpd  # Apache HTTP Server 이미지
---
# [4] HTTPD Service: ClusterIP 방식으로 HTTPD 파드에 접근 가능
apiVersion: v1
kind: Service
metadata:
  name: httpd-service
spec:
  selector:
    app: httpd
  ports:
    - port: 80
---
# [5] Tomcat Deployment: Tomcat 서버 파드를 2개 실행
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
        - name: tomcat
          image: tomcat  # 공식 Tomcat 이미지 (8080 포트 사용)
---
# [6] Tomcat Service: 클러스터 내부에서 Tomcat 접근 (포트 매핑 필요)
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
spec:
  selector:
    app: tomcat
  ports:
    - port: 80        # 서비스로 접근 시 사용하는 포트
      targetPort: 8080  # 실제 Tomcat 컨테이너가 사용하는 포트
---
# [7] Ingress: 클라이언트의 요청 경로에 따라 백엔드 서비스로 연결
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: project-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /  # 요청 경로를 '/'로 재작성
spec:
  ingressClassName: nginx  # NGINX Ingress Controller를 사용할 것
  rules:
    - http:
        paths:
          - path: /4glnginx  # /4glnginx 경로로 들어오면
            pathType: Prefix
            backend:
              service:
                name: nginx-service  # nginx-service로 연결
                port:
                  number: 80
          - path: /4glhttpd  # /4glhttpd 경로 → httpd-service로 연결
            pathType: Prefix
            backend:
              service:
                name: httpd-service
                port:
                  number: 80
          - path: /4gltomcat  # /4gltomcat 경로 → tomcat-service로 연결
            pathType: Prefix
            backend:
              service:
                name: tomcat-service
                port:
                  number: 80  # Tomcat은 실제로 8080이지만, 서비스가 80으로 노출됨

Router 53 호스트 연결

일전에 생성 해 두었던 도메인을 내가 가진 웹 서버에 연결하고자 한다

순서 :

  1. 로드밸런서 및 대상그룹 설정
  2. 접속 하려는 레코드 생성
  3. HTTPS 통한 접근을 위한 인증서 생성
  4. 로드밸런서에 HTTPS 인증서 연

 

1.로드밸런서 생성

2.레코드 생성

레코드 생

3.ACM을 통한 인증서 생성

4. 로드밸런서에 HTTPS 연결

 

5. 성공적으로 연결 확인


삭제

#생성 pod 삭제
kubectl delete -f 4glingress.yaml

#helm ingress controller 삭제
helm uninstall ingress-nginx -n ingress-nginx 
#
kubectl delete ns ingress-nginx

 

'DevOps > K8s' 카테고리의 다른 글

[k8s] Pods 구성 및 도메인 연동 실습  (0) 2025.04.22
[k8s] 쿠버네티스 연결 담당 서비스  (0) 2025.04.09
[K8s] 쿠버네티스 기초  (0) 2025.04.02
'DevOps/K8s' 카테고리의 다른 글
  • [k8s] Pods 구성 및 도메인 연동 실습
  • [k8s] 쿠버네티스 연결 담당 서비스
  • [K8s] 쿠버네티스 기초
cumo
cumo
  • cumo
    이것저것
    cumo
  • 전체
    오늘
    어제
    • 분류 전체보기 (87) N
      • 보안뉴스 (14)
      • Project (4)
        • Network (0)
        • Linux (0)
        • Cloud (1)
      • wargame (1)
      • DevOps (8)
        • K8s (4)
      • 네트워크 (49)
        • Secuerity (1)
        • Cloud (6)
        • Linux (20)
        • Network (22)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 도구모음 사이트
  • 공지사항

  • 인기 글

  • 태그

    1
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
cumo
[K8s] Helm 과 Ingress 웹서버 통합 라우팅 구성
상단으로

티스토리툴바