[kt Cloud] Ingress Controller 적용 방법

devyu·2024년 8월 16일

kt Cloud

목록 보기
2/2
kubectl label node kpaas-contest-2.worker01 ingress=true

(3) Ingress Controller Pod 스케쥴링

# daemonset으로 구동
$ kubectl -n nginx-ingress get ds
NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
nginx-ingress   2         2         2       2            2           ingress=true    63d

# pod 배포 현황 확인
$ kubectl -n nginx-ingress get pod -owide
NAME                  READY   STATUS    RESTARTS   AGE     IP                NODE                          NOMINATED NODE   READINESS GATES
nginx-ingress-lhzn9   1/1     Running   0          63d     192.100.120.129   kpaas-contest-2.dmz-infra01   <none>           <none>
nginx-ingress-pq4l2   1/1     Running   0          4m51s   192.100.87.129    kpaas-contest-2.worker01      <none>           <none>

목표로 한 워커노드에 레이블을 설정하고 나면 nginx-ingress 데몬셋의 pod가 생성되고 아래 포트로 노드에 통신이 가능합니다.

https : 30443/tcp
http : 30080/tcp
nginx-ingress 네임스페이스의 service에 노드포트 형태로 설정되어 있습니다.

(4) Ingress 사용

Ingress(Nginx) 네트워크 설정 방법


...? 뭐임

https://manual.cloud.kt.com/kt/k2p-std-ingress
위 링크대로 해보겠음 -> 지금 처음 보는 문서와 같은 내용. 생략

nginx-ingress 의 기본 conf 파일은 아래 커맨드로 확인 가능합니다

# 기본 nginx.conf 확인
$ kubectl -n nginx-ingress exec nginx-ingress-pq4l2 -- cat /etc/nginx/nginx.conf 
$ kubectl -n nginx-ingress exec nginx-ingress-pq4l2 -- cat /etc/nginx/nginx.conf 
kubectl -n nginx-ingress exec [nginx-ingress POD명] -- cat /etc/nginx/nginx.conf 
worker_processes  auto;
daemon off;

error_log  stderr notice;
pid        /var/lib/nginx/nginx.pid;

events {
    worker_connections  1024;
}
(생략)

각 namespace에 생성한 ingress에 대한 nginx.conf 파일은 아래 커맨드로 확인 가능합니다

kubectl -n nginx-ingress exec nginx-ingress-pq4l2 -- ls -al /etc/nginx/conf.d

kubectl -n nginx-ingress exec nginx-ingress-pq4l2 -- cat /etc/nginx/conf.d/cicd-jenkins.conf

현재 젠킨스 미설치로 위 코드에서 에러 발생. 젠킨스 세팅 완료 후 다시 확인하기

클러스터 전역 nw 설정
클러스터 전역 nw는 nginx-ingress namespace의 nginx-config 라는 configmap을 수정하여, 설정 할 수 있습니다

초기 구축 시, 해당 configmap의 data필드는 비워져 있으나, 필요한 network 설정 값을 아래 예시와 같이 추가할 수 있습니다

클러스터 전체에 영향도 갈 수 있으므로, 주의해서 설정 하십시오

configmap 수정 후, nginx-ingress pod는 자동 reload하여 설정을 반영합니다. (pod 재기동 불필요)

-> 클러스터 전역 nw 설정 / 일부 도메인 nw 설정 패스.

위 내용 전부 패스

Gitlab 접속 및 이용 방법 적용을 위해 ingress controller 적용.

Ingress Controller 적용 방법

로드밸런서 목록에서 방금 생성한 https용 loadbalancer의 사설 ip를 확인합니다.
로드밸런서를 통한 외부 통신 설정 으로 우선 적용함. 다만 진입점으로 고려중인 워커 노드가 한 개일수 있어 추후 변경 필요할 수 있음.

(1) 로드밸런서 생성

(2) 워커노드 연결

(3) Static NAT 설정

새로 IP 생성

방화벽 설정


Gitlab 접속 및 로그인

Gitlab Ingress Yaml 파일 생성

user@[option-test]:~$  vim cicd.gitlab.ingress.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: gitlab-http
  namespace: cicd
spec:
  ingressClassName: nginx
  rules:
    - host: [ Gitlab Ingress 도메인 주소(사용자 지정) ]
      http:
        paths:
          - pathType: Prefix
            path: /
            backend:
              service:
                name: gitlab
                port:
                  name: http

kubectl -n cicd create secret tls gitlab-cert --cert ./server.crt --key ./server.key


![](https://velog.velcdn.com/images/ycoding/post/e0ebd652-ff7c-4746-809a-5c884a3cd983/image.png)
nginx-ingress-pq4l2

NAME                  READY   STATUS    RESTARTS   AGE   IP                NODE                          NOMINATED NODE   READINESS GATES
nginx-ingress-lhzn9   1/1     Running   0          66d   192.100.120.129   kpaas-contest-2.dmz-infra01   <none>           <none>
nginx-ingress-pq4l2   1/1     Running   0          3d    192.100.87.129    kpaas-contest-2.worker01      <none>           <none>
  
  
  
  ![](https://velog.velcdn.com/images/ycoding/post/89f6d3fb-453e-4ad3-843c-eca5722f4c6c/image.png)
  
  ![](https://velog.velcdn.com/images/ycoding/post/b0869c1a-cad2-419c-a58f-a4a7c223567c/image.png)

profile
티스토리와 벨로그 사이 줄타기....

0개의 댓글