티스토리 뷰
본 포스팅은 Kubernetes Ingress 활용 가이드입니다.
Kubernetes & Docker Install 과정을 살펴보며, 추후 CICD 구축에 활용될 수 있도록 하는데 목적이 있습니다.
Kubernetes는 애플리케이션을 외부로 노출하기 위해 Service Object를 NodePort로 생성합니다.
다만 노출 형태가 노드의 IP에 특정 포트(30000 ~ 32767)로 제공되기 때문에 호출이 까다롭고 사용자측면에서 관리가 어려울 수 있습니다.
이를 관리하여 외부 액세스 편의성을 제공하는 것이 Ingress입니다.
- Ingress는 외부 액세스를 관리하고 서비스를 묶어주는 역할을 수행합니다.
- 도메인을 지정하여 사용자는 그 도메인으로 접속하며 하위의 Path 설정을 통해 서비스를 라우팅합니다.
즉 요약하자면, Ingress를 통해 노출 된 URL로 사용자가 요청을 하면 이는 특정 서비스로 라우팅되고 서비스에서 로드밸런싱하여 Pod가 호출되는 원리입니다.
그럼 먼저 Ingress를 적용하는 방법에 대해 살펴보겠습니다.
이에 앞서 Pod의 노드 포트 및 현재 셋팅을 살펴보겠습니다.
- 서비스를 확인해보면 NodePort는 30490을 사용하고 있습니다.
이와 연계 된 디플로이먼트는 gs-spring-boot-docker-deployment입니다.
[root@k8s-master HPA]# kubectl get pod
NAME READY STATUS RESTARTS AGE
gs-spring-boot-docker-deployment-587545cc76-5slkt 1/1 Running 0 86m
[root@k8s-master HPA]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gs-spring-boot-docker-service NodePort 10.106.48.153 <none> 8081:30490/TCP 29h
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d22h
[root@k8s-master HPA]# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
gs-spring-boot-docker-deployment 1 1 1 1 86m
[root@k8s-master HPA]#
- service, pod, deployment에 대한 초기 셋팅은 이전 포스팅을 참고하시구요.
이를 기반으로 Ingress를 적용해 보도록 하겠습니다.
1. 먼저 Ingress를 생성하기 위한 yaml파일을 작성합니다.
- gs-spring-boot-docker-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gs-spring-boot-docker-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: nara0617.nrson.net
http:
paths:
- path: /hello-world
backend:
serviceName: gs-spring-boot-docker-service
servicePort: 8080
주요 내용은 다음과 같습니다.
- kind : 생성할 오브젝트 타입을 결정합니다. Ingress를 생성하기 위해 작성합니다
- metadata.annotation.ingress.kubernetes.io/rewrite-target : Ingress의 기본 경로를 /로 구성
- spec.rules.host : Ingress에 지정할 호스트입니다. Ingress를 사용하기 위해서는, 먼저 DNS Server가 구성되어야 합니다. DNS와 HostName의 조합으로 DNS Server로 호스팅되게 됩니다. 예를 들어 Kubernetes에 구성된 도메인이 nrson.net이고 Ingress에 붙일 특정 호스트명은 nara0617이라고 한다면 nara0617.nrson.net으로 호스트를 지정하게 됩니다.
- spec.rules.http.paths.path : 라우팅 할 서버를 설정합니다.
2. 생성한 yaml 파일을 반영합니다.
[root@k8s-master Ingress]# kubectl apply -f ./gs-spring-boot-docker-ingress.yaml
ingress.extensions/gs-spring-boot-docker-ingress created
[root@k8s-master Ingress]#
3. 생성환 ingress를 확인해 보도록 하겠습니다.
먼저 cli 입니다.
[root@k8s-master Ingress]# kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
gs-spring-boot-docker-ingress nara0617.nrson.net 80 2m6s
[root@k8s-master Ingress]#
다음으로 대시보드입니다.
- 정상적으로 생성된 것을 확인할 수 있습니다.
'③ 클라우드 > ⓚ Kubernetes' 카테고리의 다른 글
[Container Management] Kubernetes 개요 (0) | 2019.07.23 |
---|---|
[Pivotal vs OpenShift] Kubernetes 기반의 PaaS 비교 (3) | 2019.03.02 |
[Kubernetes & Docker] Kubernetes HPA (오토스케일링) (0) | 2018.10.24 |
[Kubernetes & Docker] Docker Private Registry Install & Setting (2) | 2018.10.18 |
Kebernetes - Error Case 3. The container name "/kuardtest" is already in use by container "8cc59b5bed38c16136334fbc4d23d.." (0) | 2018.09.11 |
- Total
- Today
- Yesterday
- aws
- k8s
- OpenStack
- 마이크로서비스 아키텍처
- aa
- Docker
- JEUS6
- nodejs
- openstack tenant
- apache
- openstack token issue
- jeus
- Architecture
- 오픈스택
- wildfly
- webtob
- kubernetes
- 마이크로서비스
- Da
- API Gateway
- MSA
- JBoss
- SWA
- JEUS7
- SA
- git
- 쿠버네티스
- TA
- 아키텍처
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |