티스토리 뷰
공식문서: Installation with Manifests
들어가기
처음에는 Helm 공식문서의 설치방법으로 해봤는데 계속 에러가 났다.
며칠 삽질후, 우연히 nginx의 공식문서에서 방법을 찾았다.
온프레미스 환경이므로 사전에 Metallb를 셋팅해두었다.
그렇지만 IP주소가 따로 있다면 metallb를 사용하지 않아도 무방하다는 사실을 깨닫게 되었다.
Nginx-ingres-controller 설치하기
#저장소에서 클론
git clone https://github.com/nginxinc/kubernetes-ingress/
cd kubernetes-ingress/deployments
git checkout v1.12.0
#RBAC
kubectl apply -f common/ns-and-sa.yaml
kubectl apply -f rbac/rbac.yaml
kubectl apply -f common/default-server-secret.yaml
kubectl get secret
kubectl get secret -n nginx-ingress
kubectl apply -f common/default-server-secret.yaml
kubectl apply -f common/nginx-config.yaml
kubectl apply -f common/ingress-class.yaml
#CRD설정
kubectl apply -f common/crds/k8s.nginx.org_virtualservers.yaml
kubectl apply -f common/crds/k8s.nginx.org_virtualserverroutes.yaml
kubectl apply -f common/crds/k8s.nginx.org_transportservers.yaml
kubectl apply -f common/crds/k8s.nginx.org_policies.yaml
#Deployment 생성
kubectl apply -f deployment/nginx-ingress.yaml
#Service 생성
kubectl create -f service/loadbalancer.yaml
[수정 11월1일]loadbalancer 가 아닌 nodeport로 생성한 후에 loadbalacer로 타입을 변경해도 된다.
externalIP를 지정하고 싶은 공인ip로 하면 된다.
[원본]이 블로그 포스트 당시에는 loadbalancer로 진행했다.
Nginx-ingress라는 LoadBalancer 확인
➜ kubectl get svc -w -n nginx-ingress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress LoadBalancer 10.3.247.17 pending 80:32420/TCP,443:30400/TCP 33s
nginx-ingress LoadBalancer 10.3.247.17 35.225.196.151 80:32420/TCP,443:30400/TCP 39s
위의 pending 상태인경우
minikube tunnel
1. Deployment 만들기
➜vi nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: nginx
name: nginx-deploy
spec:
replicas: 1
selector:
matchLabels:
run: nginx-deploy
template:
metadata:
labels:
run: nginx-deploy
spec:
containers:
- image: nginx
name: nginx
➜ kubectl create -f nginx-deploy.yaml -n default
deployment의 서비스도 만들기
➜ kubectl expose deploy/nginx-deploy --port 80 -n default
service/nginx-deploy exposed
➜ kubectl get svc -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx-deploy ClusterIP 10.3.240.25 80/TCP 4s
2. Ingress 만들기
➜ vi ingress-nginx-deploy.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-nginx-deploy
spec:
rules:
- host: nginx.example.com
http:
paths:
- backend:
serviceName: nginx-deploy
servicePort: 80
➜ kubectl create -f ingress-nginx-deploy.yaml
ingress.networking.k8s.io/ingress-nginx-deploy created
➜ kubectl describe ing ingress-nginx-deploy
Name: ingress-nginx-deploy
Namespace: default
Address:
Default backend: default-http-backend:80 (10.0.0.10:8080)
Rules:
Host Path Backends
---- ---- --------
nginx.example.com
nginx-deploy:80 (10.0.1.5:80)
Annotations:
Events:
참고: db-services.com
'CLOUD > Kubernetes' 카테고리의 다른 글
에러해결 error retrieving k8s version: Get "https://10.96.0.1:443/version?timeout=32s": dial tcp 10.96.0.1:443: i/o timeout (0) | 2021.08.20 |
---|---|
nginx ingress controller 만들기를 실패했을때 깨끗히 삭제방법 (0) | 2021.08.18 |
[쿠버네티스] pod 수정후 재시작하기 (0) | 2021.08.18 |
에러해결 metallb failed to create memberlist secret (0) | 2021.08.18 |
[Kubernetes] Metallb 설치 및 셋팅 (0) | 2021.08.13 |