티스토리 뷰

공식문서: 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

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함