DevOps/CKA Test 준비

11. CKA-ingress

치킨맛코드 2023. 2. 10. 08:17

ingress


문제
ingress-nginx namespace에 nginx이미지를 app=nginx 레이블을 가지고 실행하는 nginx pod 를 구성하시오.
app-ingress.yaml파일을 생성한 후 다 ingress를 구성하시오. 또한 annotations을 포함시키시오
* appjs-service와 nginx서비스는 이미 동작중입니다.
작업 클러스터 : k8s
name: app-ingress
NODE_PORT:30080/ = nginx
NODE_PORT:30080/app = appjs-service
annotaions:
    kuberntets.io/ingress/class:nginx

* tip
보통 ingress를 생성해라 라는 유형보다 ingress rule을 추가/변경 하라는 유형이 많이 출제됨.

1. 작업 클러스터 확인
==> kubectl config use-context hk8s

2. namespace 확인하기
==> kubectl get namespace ingress-ngix

3. ingress에 서 사용할 pod 를 생성한다.
==> kubectl run nginx --image=nginx --labels=app=nginx -n ingress--nginx --dry-run=client -o yaml > ingress--namespace-nginx.yaml
==> kubectl run nginx --image=nginx --labels=app=nginx -n ingress--nginx 

appjs-service가 실행되는지 확인하기
==> kubectl get svc -n ingress-nginx

4. ingress rule을 만들기.
vi로 yaml생성 및 편집하기.
==> vi app-ingress.yaml

appVersion: networking.k8s.io/v1
kind: ingress
==> 종류는 ingress로 지정한다.
metadata:
    namespace: ingress-nginx
    name: app-ingress
==> 이름은 app-ingress로 지정한다.
    annotaion:
       nginx.ingress.kuberntets.io/rewrite-target: /
       kuberntes.io/ingress.class: nginx
==> 문제에서 지정한 annotaion을 추가한다.
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
         service:
            name: nginx
            port:
               number: 80
==> 도메인의 맨 끝이 /로 끝날 경우(root) 80번 포트를 활용해 nginx 라는 service로 접근시켜라.
      - path: /app
        pathType: Prefix
        backend:
         service:
            name: appjs-service
            port:
               number: 80
==> rules를 추가한다. 도메인의 맨 끝이 /app으로 끝날 경우 80번 포트를 활용해 appjs-service로 접근시켜라.

5. apply시키기
==> kubectl apply -f app-ingress.yaml

6. 확인하기
==> kubectl get ingress -n ingress-nginx