Ingress 로 한번에 service 띄우기

알파로그·2023년 7월 4일
0

Kubernetes

목록 보기
12/15
  • ingress 를 사용하면 deployment, service 를 띄우고,
    ingress 와 연동까지 하나의 문서로 할 수 있다.

✏️ 적용하기

  • inginx 를 띄워서 접속까지 해볼 예정이다.

📍 디렉토리 생성

mkdir -p /kube/ingress-test && cd /kube/ingress-test

📍 설정파일 생성

  • deployment, service, ingress 연결까지 한번에 할 수 있는 설정파일이다.
vim ingress-test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy-main
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-main
  template:
    metadata:
      labels:
        app: nginx-main
    spec:
      containers:
      - image: nginx
        name: nginx
---

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: nginx-main
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: lldj.site
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: my-service
            port:
              number: 80
  • 설정파일 설명
## 디플로이먼트 ##

apiVersion: apps/v1
kind: Deployment
metadata:
  name: 디플로이먼트 이름
  labels:
    app: 디플로이, 서비스, 인그레스 패키지의 이름
spec:
  replicas: 복제 레플리카셋 수
  selector:
    matchLabels:
      app: nginx-main
  template:
    metadata:
      labels:
        app: 디플로이, 서비스 패키지의 식별값 (유지보수 용)
    spec:
      containers:
      - image: 도커허브 이미지명
        name: 컨테이너의 이름
          - containerPort: 파드의 포트
        env:
          - name: 환경변수 명
            value: 환경변수 값
          # 환경변수가 더 필요할 경우 아래에 같은 방식으로 적어주면 된다.
---

## 서비스 ##
# 별도 설정이 없기 때문에 Cluster ip 로 설정된다.

apiVersion: v1
kind: Service
metadata:
  name: 서비스 이름
spec:
  selector:
    app: 디플로이, 서비스 패키지의 식별값 (유지보수 용)
  ports:
    - protocol: 프로토콜 # spring boot 는 안적어도 됨
      port: 외부 포트
      targetPort: 내부 포트

---

## 인그레스 ##
# 원하는 경로에 대해 deployments 의 어떤 pod 로 라우팅 시킬건지 세세하게 설정이 가능함

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: 인그레스명
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    # kubernetes.io/ingress.class: nginx (spring boot 용)
spec:
  ingressClassName: nginx
  rules:
  - host: 호스트
    http:
      paths:
      - path: 호스트 하위 경로
        pathType: ImplementationSpecific
        backend:
          service:
            name: 라우팅 할 서비스 이름
            port:
              number: 라우팅 할 서버 포트

📍 설정파일 실행

  • 설정파일을 실행하면 한번에 생성이 된것을 확인할 수 있다.
kubectl apply -f ingress-test.yaml

✏️ Nginx 접속하기

  • 준비된 domain 이 없기 때문에 dns 에 가짜 도메인을 추가 해봤다.
vim /etc/hosts
  • 추가한 domain 으로 curl 명령을 하면 설정파일로 띄운 nginx 에 접속하게 된다.
curl 추가한 도메인
  • 이 외에도 공인 ip 를 입력하거나,
    로컬 환경의 dns 를 수정해주면 nginx 에 정상적으로 접속할 수 있게된다.
profile
잘못된 내용 PR 환영

0개의 댓글