CLOUD/Kubernetes
[Bare Metal에서 Ingress 로드밸런서로] Kubernetest 호스트 정의하기 + 에러 해결
헐리
2021. 10. 28. 14:37
1. ingress 리소스에서 사용할 host를 서버의 /etc/hosts에 정의하기
2. loadbalancer 타입으로 만들고 externalip지정하기
미리 준비할 것
- 베어메탈/etc/hosts에 ingress에서 사용할 host정의하기
- nginx ingress controller 설치하고, ingressClassName 해결하기
- nginx ingress controller의 네임스페이스와 실제 ingress를 만들 네임스페이스 달라도 상관 없다
- 왜냐하면 ingressClassName에서 default로 연결했기 때문
- 싱글 namespace만 특정하고 싶다면 nginx ingress controller의 deploy에 arg로 설정(공홈 & 구글링 참조)
필요한 파일
1 | deployment.yaml | |
2 | service.yaml | 베어메탈이어도 loadBalancer타입으로 만들어서 externalIP를 지정해주기 |
3 | ingress.yaml | 연결하고자하는 서비스의 네임스페이스를 지정하기 (추가 서비스를 연결한다면 그건 headless service이용) |
ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: AAAAAAAAAAAAAA-deploy
namespace: AAAAAAAAAAAAAA-ns
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: AAAAAAAAAAAAAA.kr
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: AAAAAAAAAAAAAA-service
port:
number: 3000
service.yaml
apiVersion: v1
kind: Service
metadata:
name: AAAAAAAAAAAA-service
namespace: AAAAAAAAAAAA-ns
spec:
externalTrafficPolicy: Local
type: LoadBalancer
externalIPs:
- AAAAAAAAAAA-serverIP
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
- port: 443 #필수아님
targetPort: 443
protocol: TCP
name: https
selector:
app: AAAAAAAAAAAA
deployment.yaml
원하는대로