본문 바로가기

자격증/CKA

[CKA] Ingress 구성

반응형

Ingress 란?

- 인그레스는 클러스터 외부에서 클러스터 내부 서비스로 HTTP와 HTTPS 경로를 노출한다. 트래픽 라우팅은 인그레스 리소스에 정의된 규칙에 의해 컨트롤된다.

- ingress 관련 내용은 아래 docs 참고

https://kubernetes.io/ko/docs/concepts/services-networking/ingress/

 

인그레스(Ingress)

기능 상태: Kubernetes v1.19 [stable] 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리함. 인그레스는 부하 분산, SSL 종료, 명칭 기반의 가상 호스팅을 제공

kubernetes.io

 

[문제]

1. Applicaton Service 운영

 - ingress-nginx namespace에 nginx 이미지를 app=nginx 레이블을 가지고 실행하는 nginx pod를 구성하세요

 - 앞서 생성한 nginx Pod를 서비스하는 nginx service를 생성하시오

 - 현재 appjs Service는 이미 동작중입니다. 별도 구성이 필요 없습니다.

2. Ingress 구성

 - app-ingress.yaml 파일을 생성하여 다음 조건의 ingress 서비스를 구성하시오

  . ingress name: app-ingress

  . NODE_PORT:30080/ 접속했을 때 nginx 서비스로 연결

  . NODE_PORT:30080/app 접속했을 때 appjs 서비스로 연결

  . Ingress 구성에 다음의 annotations을 포함시키시오.

    annotations:

      kubernetes.io/ingress.class: nginx 

 

[풀이]

1. Applicaton Service 운영

- appjs 초기 구성

# kubectl run appjs --image=nginx --labels=app=appjs -n ingress-nginx
pod/appjs created

# kubectl expose -n ingress-nginx pod appjs --port=80 --target-port=80
service/appjs exposed


# kubectl get pods -n ingress-nginx 
NAME    READY   STATUS    RESTARTS   AGE
appjs   1/1     Running   0          22s

# kubectl get svc -n ingress-nginx 
NAME    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
appjs   ClusterIP   10.103.173.148   <none>        80/TCP    21s

- nginx pod 구성

# kubectl run nginx --image=nginx --labels=app=nginx -n ingress-nginx --dry-run -o yaml

# kubectl run nginx --image=nginx --labels=app=nginx -n ingress-nginx

# kubectl get pod -n ingress-nginx 
NAME    READY   STATUS    RESTARTS   AGE
appjs   1/1     Running   0          15m
nginx   1/1     Running   0          10s

# kubectl expose -n ingress-nginx pod nginx --port 80 --target-port=80 --dry-run -o yaml

# kubectl get svc -n ingress-nginx 
NAME    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
appjs   ClusterIP   10.103.173.148   <none>        80/TCP    16m
nginx   ClusterIP   10.100.162.93    <none>        80/TCP    5s

# kubectl describe service -n ingress-nginx nginx

 

2. Ingress 구성

- 아래 docs 예제 참고

https://kubernetes.io/ko/docs/concepts/services-networking/ingress/

 

- app-ingress.yaml 파일을 생성 후 ingress 서비스를 구성

# vi app-ingress.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: ingress-nginx
  name: app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx
            port:
              number: 80
      - path: /app
        pathType: Prefix
        backend:
          service:
            name: appjs
            port:
              number: 80

# kubectl apply -f app-ingress.yaml 
ingress.networking.k8s.io/app-ingress created

# kubectl get ingress -n ingress-nginx app-ingress 
NAME          CLASS    HOSTS   ADDRESS   PORTS   AGE
app-ingress   <none>   *                 80      13s

# kubectl describe ingress -n ingress-nginx app-ingress 
Name:             app-ingress
Labels:           <none>
Namespace:        ingress-nginx
Address:          
Ingress Class:    <none>
Default backend:  <default>
Rules:
  Host        Path  Backends
  ----        ----  --------
  *           
              /      nginx:80 (10.36.0.1:80)
              /app   appjs:80 (10.44.0.1:80)
Annotations:  kubernetes.io/ingress.class: nginx
              nginx.ingress.kubernetes.io/rewrite-target: /
Events:       <none>

# kubectl get nodes
NAME                 STATUS   ROLES           AGE    VERSION
master.example.com   Ready    control-plane   129d   v1.25.4
node1.example.com    Ready    <none>          129d   v1.25.4
node2.example.com    Ready    <none>          129d   v1.25.4

# curl node1.example.com:30080/
# curl node1.example.com:30080/app

 

 

[참고]

- 유투브 따배씨

반응형

'자격증 > CKA' 카테고리의 다른 글

[CKA] Persistent Volume Claim을 사용하는 Pod 운영  (0) 2023.04.22
[CKA] Persistent Volume 생성  (0) 2023.04.19
[CKA] Secret 운영  (0) 2023.04.01
[CKA] ConfigMap 운영  (0) 2023.04.01
[CKA] NodePort 서비스 생성  (0) 2023.03.31