검색결과 리스트
네트워크에 해당되는 글 11건
글
Ingress 사용하기
Kubernetes 를 통해서 Service 를 생성하면, 기본적으로 NodePort 방식으로 만들어집니다.
이 경우 서비스에 접근하기 위해서는 http://{IP}:{NodePort} 형태로 해야하지요.
실제로 서비스하기에는 부적접한 url 입니다.
http://{service.domain.com} 형태로 서비스에 접근하려면 어떻게 해야 할까요?
Nginx-Ingress 설치하기
이를 Ingress Controller 를 설치해 주어야 합니다.
Ingress Controller 를 구현한 것들이 여러개 있습니다.
궁금하시다면 아래 주소를 확인해 주세요
https://github.com/kubernetes/ingress-nginx/blob/master/README.md
그 중에서 제일 많이 쓰이고, 권장하는 nginx ingress 를 사용하도록 하겠습니다.
공식 주소는 다음과 같습니다.
https://kubernetes.github.io/ingress-nginx/
그리고 github 는
https://github.com/kubernetes/ingress-nginx/blob/master/README.md
입니다.
아무튼 설치방법은 간단합니다.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
이렇게 설치하면 됩니다.
기본적으로 kubernetes 의 ingress-nginx 라는 네임스페이스에 서비스가 생깁니다.
이런 형태로요.
만약 서비스가 생성되지 않았다면, 아래처럼 서비스를 생성 해 줍니다.
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
spec:
type: NodePort
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: port-1
port: 80
targetPort: 80
- name: port-2
port: 443
targetPort: 443
[ingress-nginx-service.yaml]
kubectl apply -f ingress-nginx-service.yaml
Nginx-Ingress 에 대한 Service 수정하기
앞에서 만들어진 nginx-ingress 는 domain 이 들어왔을때, 이것을 서비스에 redirect 해 주는게 전부입니다.
실제로 아래처럼 bash 에 접근한 뒤에, nginx.conf 를 열어보면 설정한 것이 들어가 있습니다.
kubectl get pods -n ingress-nginx
kubectl -n ingress-nginx exec -it nginx-ingress-controller-12345 /bin/bash
# cat /etc/nginx/nginx.conf
지금 상태에서는 반쪽짜리 ingress 입니다.
어찌되었든 nginx-ingress 에 접근한 뒤에, 하위 path 를 통해서 서비스를 접근해야 한다는 것이죠.
아래와 같은 형태가 되겠습니다.
http://{IP}:{Nginx-Ingress Service Port}/server1
http://{IP}:{Nginx-Ingress Service Port}/server2
http://{IP}:{Nginx-Ingress Service Port}/server3
뭔가 거지같죠?
이를 해결하기 위해서 Nginx-Ingress 의 service 를 수정해 주어야 합니다.
기본적으로 Kubernetes 의 Service 는 type 이 NodePort 로 되어 있습니다.
이것을 아래와 비슷하게 수정해 줍니다.
Service 의 Ingress 만들기
이제 도메인과 Path 를 통한 Ingress 를 사용할 수 있게 되었습니다.
확인해 보죠.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test.crystalcube.co.kr
http:
paths:
- backend:
serviceName: test1-service
servicePort: 3000
path: /
test-service 라는 이름의 서비스가 있을때, 이것에 대한 ingress 는 위 처럼 만들수 있습니다.
이제 test.crystalcube.co.kr 주소를 입력하면, test-service 에 접근할 수 있습니다.
물론 path 를 지정할 수도 있습니다. :)
'네트워크' 카테고리의 다른 글
Docker with Kubernetes #10 - ETCD의 HA 구성 (0) | 2018.09.12 |
---|---|
Docker with Kubernetes #9 - Master Node의 HA 구성 (4) | 2018.09.12 |
Docker with Kubernetes #8 - 기타설명 (0) | 2018.09.06 |
Docker with Kubernetes #7 - Kubernetes 의 GPU 설정 (0) | 2018.09.06 |
Docker with Kubernetes #6 - Dashboard 사용 (0) | 2018.09.04 |
RECENT COMMENT