반응형
쿠버네티스에서 NGINX Ingress Controller를 설정하는 방법
NGINX Ingress Controller를 설정하는 방법
NGINX Ingress Controller 배포
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
configmap/ingress-nginx-controller created
service/ingress-nginx-controller created
service/ingress-nginx-controller-admission created
deployment.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
kubectl get all -l app.kubernetes.io/name=ingress-nginx -n ingress-nginx
$ kubectl get all -l app.kubernetes.io/name=ingress-nginx -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-admission-create-wzgps 0/1 Completed 0 2m24s
pod/ingress-nginx-admission-patch-7xwf9 0/1 Completed 0 2m24s
pod/ingress-nginx-controller-684995db94-h7hvj 1/1 Running 0 2m24s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-controller LoadBalancer 10.111.88.173 <pending> 80:30893/TCP,443:30671/TCP 2m24s
service/ingress-nginx-controller-admission ClusterIP 10.107.210.205 <none> 443/TCP 2m24s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ingress-nginx-controller 1/1 1 1 2m24s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ingress-nginx-controller-684995db94 1 1 1 2m24s
NAME COMPLETIONS DURATION AGE
job.batch/ingress-nginx-admission-create 1/1 66s 2m24s
job.batch/ingress-nginx-admission-patch 1/1 66s 2m24s
kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
$ kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-wzgps 0/1 Completed 0 3m11s
ingress-nginx-admission-patch-7xwf9 0/1 Completed 0 3m11s
ingress-nginx-controller-684995db94-h7hvj 1/1 Running 0 3m11s
kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
$ kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
namespace "ingress-nginx" deleted
serviceaccount "ingress-nginx" deleted
serviceaccount "ingress-nginx-admission" deleted
role.rbac.authorization.k8s.io "ingress-nginx" deleted
role.rbac.authorization.k8s.io "ingress-nginx-admission" deleted
clusterrole.rbac.authorization.k8s.io "ingress-nginx" deleted
clusterrole.rbac.authorization.k8s.io "ingress-nginx-admission" deleted
rolebinding.rbac.authorization.k8s.io "ingress-nginx" deleted
rolebinding.rbac.authorization.k8s.io "ingress-nginx-admission" deleted
clusterrolebinding.rbac.authorization.k8s.io "ingress-nginx" deleted
clusterrolebinding.rbac.authorization.k8s.io "ingress-nginx-admission" deleted
configmap "ingress-nginx-controller" deleted
service "ingress-nginx-controller" deleted
service "ingress-nginx-controller-admission" deleted
deployment.apps "ingress-nginx-controller" deleted
job.batch "ingress-nginx-admission-create" deleted
job.batch "ingress-nginx-admission-patch" deleted
ingressclass.networking.k8s.io "nginx" deleted
validatingwebhookconfiguration.admissionregistration.k8s.io "ingress-nginx-admission" deleted
Ingress Controller 테스트
httpd-deployment.yaml 편집
$ vim httpd-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd-deployment
spec:
replicas: 3
selector:
matchLabels:
run: httpd-deployment
template:
metadata:
labels:
run: httpd-deployment
spec:
containers:
- image: httpd
name: httpd-webserver
---
apiVersion: v1
kind: Service
metadata:
name: httpd-service
spec:
type: NodePort
selector:
run: httpd-deployment
ports:
- port: 80
$ kubectl create -f httpd-deployment.yaml
deployment.apps/httpd-deployment created
service/httpd-service created
$ kubectl get deployments httpd-deployment
NAME READY UP-TO-DATE AVAILABLE AGE
httpd-deployment 3/3 3 3 42s
nginx-deployment.yaml 편집
$ vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
run: nginx-deployment
template:
metadata:
labels:
run: nginx-deployment
spec:
containers:
- image: nginx
name: nginx-webserver
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
run: nginx-deployment
ports:
- port: 80
$ kubectl create -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
service/nginx-service created
$ kubectl get deployments nginx-deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 19s
Ingress 리소스 생성 및 배포
myweb-ingress.yaml 편집
$ vim myweb-ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: myweb-ingress
annotations:
kubernetes.io/ingress.class: myweb-ingress
spec:
rules:
- host: a.lb.4wxyz.com
http:
paths:
- path: /
backend:
serviceName: httpd-service
servicePort: 80
- path: /test
backend:
serviceName: nginx-service
servicePort: 80
- host: b.lb.4wxyz.com
http:
paths:
- backend:
serviceName: nginx-service
servicePort: 80
$ kubectl create -f myweb-ingress.yaml
ingress.networking.k8s.io/myweb-ingress created
$ kubectl get ingress myweb-ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
myweb-ingress <none> a.lb.4wxyz.com,b.lb.4wxyz.com 80 33s
$ kubectl describe ingress myweb-ingress
Name: myweb-ingress
Namespace: default
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
a.lb.4wxyz.com
/ httpd-service:80 10.244.1.21:80,10.244.2.31:80,10.244.3.27:80)
/test nginx-service:80 10.244.1.22:80,10.244.2.32:80,10.244.3.28:80)
b.lb.4wxyz.com
nginx-service:80 10.244.1.22:80,10.244.2.32:80,10.244.3.28:80)
Annotations: kubernetes.io/ingress.class: myweb-ingress
Events: <none>
서비스 포트 확인
$ kubectl get service httpd-service nginx-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
httpd-service NodePort 10.97.143.252 <none> 80:30997/TCP 9m33s
nginx-service NodePort 10.103.154.29 <none> 80:30339/TCP 7m17s
웹브라우저에서이 URL에 접근 테스트
http://a.lb.4wxyz.com:30997
http://b.lb.4wxyz.com:30339
원본URL : https://www.linuxtechi.com/setup-nginx-ingress-controller-in-kubernetes/
728x90
반응형
'리눅스' 카테고리의 다른 글
쿠버네티스 레플리카셋(Replica Set) (0) | 2020.11.11 |
---|---|
[kubernetes] APP(httpd) 배포 테스트 (0) | 2020.11.10 |
Kubernetes Dashboard를 설치하고 구성하는 방법 (0) | 2020.11.06 |
[kubernetes] 웹 서버(nginx) 배포(deployment) (0) | 2020.11.05 |
[kubernetes] kubectl get (0) | 2020.11.05 |