# 인그레스 소개
- 규칙에 따라 접속경로를 제공하는 기능
# 인그레스 실습
kubectl create -f http-go-deploy.yaml
kubectl edit svc http-go-svc
type 을 ClusterIP > NodePort 로 변경한다.
- NodePort 로 변경하지 않으면 에러가 발생한다.
# 인그레스 작성요령 찾아보기
쿠버네티스 공식사이트 > Ingress 검색 > Ingress - Kubernetes > 인그레스 리소스 복사
# ingress.yaml 파일 생성
vim htto-go-ingress.yaml
# serviceName 은 kubectl get svc 실행 하여 나온 서비스 이름과 같아야 한다.
kubectl get svc
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: http-go-ingress
spec:
rules:
- host: gasbugs.com
http:
paths:
- path: /
backend:
serviceName: http-go-svc
servicePort: 80
# 작성된 인그레서 서비스 실행하기
kubectl create -f htto-go-ingress.yaml
# 생성된 인그레스 서비스 확인
kubectl get ingress
- ADDRESS 를 받을때 까지 기다린다 약 10분이상 소요된다.
- ip를 정상적으로 받아온것을 확인 할 수있다.
# 도메인을 임시로 등록하기
sudo vim /etc/hosts
- 위의 이미지처럼 내용을 추가해 준다.
# 도메인으로 접속 확인하기
curl gasbugs.com
- 정상 응답 확인
# 인그레스(ingress) 연습문제(tls)
# ingress 서비스를 실행할 yaml 파일 작성
vim ingress-tomcat-http-go.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: tomcat-http-go-ingress
spec:
tls:
- hosts:
- tomcat.gasbugs.com
- http-go.gasbugs.com
secretName: tls-secret
rules:
- host: tomcat.gasbugs.com
http:
paths:
- path: /
backend:
serviceName: tomcat
servicePort: 80
- host: http-go.gasbugs.com
http:
paths:
- path: /
backend:
serviceName: http-go
servicePort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-tomcat
labels:
app: tomcat
spec:
replicas: 3
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: consol/tomcat-7.0
ports:
- containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-go
labels:
app: http-go
spec:
replicas: 3
selector:
matchLabels:
app: http-go
template:
metadata:
labels:
app: http-go
spec:
containers:
- name: http-go
image: gasbugs/http-go
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: http-go
spec:
selector:
app: http-go
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30001
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
name: tomcat
spec:
selector:
app: tomcat
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30002
type: NodePort
# 작성된 yaml 파일 실행하기
kubectl create -f ingress-tomcat-http-go.yaml
# 방화벽 정책 추가
gcloud compute firewall-rules create rule1 --allow tcp:30001-30002
# tls 인증서 추가
kubectl delete secret tls-secret
openssl genrsa -out tls.key 2048
openssl req -new -x509 -key tls.key -out tls.cert -days 360 -subj /CN=tomcat.gasbugs.com
kubectl create secret tls tls-secret --cert=tls.cert --key=tls.key
curl -k https://tomcat.gasbugs.com
# 인그레스가 정상적을 생성되었는지 확인
쿠버네티스 엔진 > 서비스 및 수신 > 인그레스 > 서비스 확인
kubectl get ingress
# etc/hosts 수정하기
인그레스의 ip와 도메인 name 추가하기
# 서비스 확인하기
curl -k https://tomcat.gasbugs.com
- 위의 내용과 같이 나온다면 정상적으로 호출된 것이다.
# 웹브라우저에서 확인하기
버추얼 박스에서 위에 작업과 같이 ect/hosts 에 위의 예시 정보를 입력 > 도메인 이름으로 웹브라우저에 접근하면 접속 가능
# 버추얼박스 etc/hosts rule 추가
# 웹브라우저에서 접근하기
'⭐ Kubernetes & EKS > LoadBalancer & Ingress' 카테고리의 다른 글
쿠버네티스 로드밸런서 정보 확인하기 (AWS) (0) | 2021.10.19 |
---|---|
로드밸런서로 서비스하기 실습 및 연습문제 (0) | 2021.09.10 |