1. 프로젝트 Flow
1. 클러스터, 노드풀 생성, config 파일 및 kubectl 설정은 기본적으로 되어 있는 것으로 가정한다.
2. helm 차트를 이용하여 인그레스 컨트롤러 hostNetwork: true로 배포한다.
3. 호스팅 업체(가비아)에서 도메인 설정 > 네임서버를 설정한다.
4. 카카오클라우드 DNS 설정을 통해 A레코드 CNAME 설정 및 정상 접속 테스트를 진행한다.
2. Helm을 사용하여 인그레스 컨트롤러 배포
1. 인그레스 컨트롤러를 설치하기 전, Helm client를 설치합니다. 운영체제별 Helm 설치에 대한 자세한 설명은 Helm 공식 문서 > 헬름 설치하기를 참고하시기 바랍니다.
2. 다음의 명령어를 실행하여 공식 ingress-controller Helm chart repository를 추가합니다.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
3. Helm chart repository 업데이트합니다.
helm repo update
4. 다음의 명령어를 터미널에 입력하여 ingress-nginx를 클러스터에 배포합니다. ingress-nginx에 대한 네임스페이스와 서비스 등 리소스들이 한 번에 배포됩니다.
# hostNetwork: true 설정한 커스텀 예제
helm install ingress-nginx ingress-nginx/ingress-nginx \
--set controller.hostNetwork=true \
--namespace ingress-nginx --create-namespace
# 기존 ingress-nginx Helm이 배포되어 있는 경우
helm upgrade \
--set controller.hostNetwork=true \
--namespace ingress-nginx \
ingress-nginx \
ingress-nginx/ingress-nginx
5. 인그레스 컨트롤러 배포 확인
인그레스 컨트롤러가 정상적으로 배포되었는지 확인하기 위해 다음의 명령어를 터미널에 입력하고 파드의 상태를 관찰합니다. 이때 ingress-controller 파드가 정상적으로 실행되는지 확인합니다.
# 파드 정상 실행 확인
kubectl --kubeconfig=$KUBE_CONFIG get pods -n ingress-nginx \
-l app.kubernetes.io/name=ingress-nginx --watch
6. 인그레스 컨트롤러 엔드포인트 확인
다음의 명령어를 실행하여 ingress-nginx 서비스를 확인합니다.
# ingress-nginx 서비스 확인
kubectl --kubeconfig=$KUBE_CONFIG get svc -n ingress-nginx
7. 실행 결과에서 ingress-nginx-controller의 EXTERNAL-IP를 확인합니다. EXTERNAL-IP는 이후 Ingress 객체를 만들어서 오픈하는 서비스의 엔드포인트가 됩니다.
- 하단의 예제에서는 EXTERNAL-IP가 10.187.5.42임을 확인할 수 있습니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.109.189.56 10.187.5.42 80:30391/TCP,443:30000/TCP 86s
ingress-nginx-controller-admission ClusterIP 10.99.111.97 <none> 443/TCP 86s
8. 인그레스 컨트롤러로 생성된 로드 밸런서에 퍼블릭 IP 설정하기
-
- 다음의 명령어를 실행하여 인그레스 컨트롤러를 배포해 생성된 로드 밸런서 유형 서비스를 확인합니다.인그레스 컨트롤러를 배포하여 생성된 로드 밸런서의 외부 통신이 필요할 경우, 해당 로드 밸런서의 퍼블릭 IP 사용 여부를 설정할 수 있습니다.
# 로드 밸런서 유형 서비스 확인
kubectl --kubeconfig=$KUBE_CONFIG get svc -n ingress-nginx ingress-nginx-controller
- 로드 밸런서 유형 Service 객체의 metadata.annotations 하위 service.beta.kubernetes.io/openstack-internal-load-balancer 값을 설정하여 로드 밸런서의 퍼블릭 IP 사용을 설정합니다.
- 프라이빗 IP를 갖는 로드 밸런서를 생성하려면 값을 true로 설정 (기본값)
- 퍼블릭 IP를 갖는 로드 밸런서를 생성하려면 값을 false로 설정
3. 호스팅 업체(가비아)에서 도메인 설정
호스팅 업체에서 카카오클라우드의 네임 서버를 등록해준다.

4. 카카오클라우드 DNS 설정을 통해 A레코드 CNAME 설정 및 정상 접속 테스트를 진행한다.
1. 카카오클라우드 DNS 서비스를 설정해준다(A레코드, CNAME)
A레코드에는 생성된 NLB의 퍼블릭 ip, CNAME에는 도메인 값을 넣어서 작성해준다.

2.정상적으로 접속되는지 확인
DNS 설정한 내용대로 정상적으로 접속되는지 확인한다.

3. 참고사항(nginx 테스트용 yaml 파일)
nginx 화면이 정상적으로 나오는지 확인하기 위한 테스트 파일입니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: default
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-test-ingress
namespace: default
spec:
ingressClassName: nginx
rules:
- host: www.felix.shop
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: nginx-service
port:
number: 80'카카오클라우드' 카테고리의 다른 글
| 카카오클라우드 api 명령어 정리(Beyond Compute Service) (0) | 2025.07.08 |
|---|---|
| 카카오클라우드 쿠버네티스 Istio 환경 구축 (0) | 2025.07.04 |
| 카카오클라우드 OpenStack 구성을 이용한 Project Resource Quota 확인 (0) | 2025.05.30 |
| 모의 과제테스트 (차량회사 글로벌 서비스를 위한 3-Tier 아키텍처 설계 수정중) (0) | 2025.05.17 |
| 카카오클라우드 미니 프로젝트 3(오프라인 쿠버네티스 클러스터 구축) (0) | 2025.05.03 |