- nginx-ingress-controller (quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.33.0)
- kube-webhook-certgen (docker.io/jettech/kube-webhook-certgen:v1.2.2)
설치를 진행하기 전 아래의 과정을 통해 필요한 이미지 및 yaml 파일을 준비한다.
-
폐쇄망에서 설치하는 경우 사용하는 image repository에 istio 설치 시 필요한 이미지를 push한다.
- 작업 디렉토리 생성 및 환경 설정
$ mkdir -p ~/install-ingress-nginx-system $ export NGINX_INGRESS_HOME=~/install-ingress-nginx-system $ export NGINX_INGRESS_VERSION=0.33.0 $ export KUBE_WEBHOOK_CERTGEN_VERSION=v1.2.2 # image를 push할 폐쇄망 Registry 주소 입력(예:192.168.6.150:5000) $ export REGISTRY=<REGISTRY_IP_PORT> $ cd $NGINX_INGRESS_HOME
- 외부 네트워크 통신이 가능한 환경에서 필요한 이미지를 다운받는다.
$ sudo docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:${NGINX_INGRESS_VERSION} $ sudo docker save quay.io/kubernetes-ingress-controller/nginx-ingress-controller:${NGINX_INGRESS_VERSION} > ingress-nginx_${NGINX_INGRESS_VERSION}.tar $ sudo docker pull jettech/kube-webhook-certgen:${KUBE_WEBHOOK_CERTGEN_VERSION} $ sudo docker save jettech/kube-webhook-certgen:${KUBE_WEBHOOK_CERTGEN_VERSION} > kube-webhook-certgen_${KUBE_WEBHOOK_CERTGEN_VERSION}.tar
- install yaml을 다운로드한다.
$ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/IngressNginx/system/yaml/deploy.yaml
-
위의 과정에서 생성한 tar 파일들을 폐쇄망 환경으로 이동시킨 뒤 사용하려는 registry에 이미지를 push한다.
$ sudo docker load < ingress-nginx_${NGINX_INGRESS_VERSION}.tar $ sudo docker load < kube-webhook-certgen_${KUBE_WEBHOOK_CERTGEN_VERSION}.tar $ sudo docker tag quay.io/kubernetes-ingress-controller/nginx-ingress-controller:${NGINX_INGRESS_VERSION} ${REGISTRY}/kubernetes-ingress-controller/nginx-ingress-controller:${NGINX_INGRESS_VERSION} $ sudo docker tag jettech/kube-webhook-certgen:${KUBE_WEBHOOK_CERTGEN_VERSION} ${REGISTRY}/jettech/kube-webhook-certgen:${KUBE_WEBHOOK_CERTGEN_VERSION} $ sudo docker push ${REGISTRY}/kubernetes-ingress-controller/nginx-ingress-controller:${NGINX_INGRESS_VERSION} $ sudo docker push ${REGISTRY}/jettech/kube-webhook-certgen:${KUBE_WEBHOOK_CERTGEN_VERSION}
- 목적 :
설치 yaml에 이미지 registry, 버전 정보를 수정
- 생성 순서 :
- 아래의 command를 수정하여 사용하고자 하는 image 버전 정보를 수정한다.
$ sed -i 's/{nginx_ingress_version}/'${NGINX_INGRESS_VERSION}'/g' deploy.yaml $ sed -i 's/{kube_webhook_certgen_version}/'${KUBE_WEBHOOK_CERTGEN_VERSION}'/g' deploy.yaml
- 비고 :
폐쇄망에서 설치를 진행하여 별도의 image registry를 사용하는 경우 registry 정보를 추가로 설정해준다.
$ sed -i 's/quay.io\/kubernetes-ingress-controller\/nginx-ingress-controller/'${REGISTRY}'\/kubernetes-ingress-controller\/nginx-ingress-controller/g' deploy.yaml $ sed -i 's/docker.io\/jettech\/kube-webhook-certgen/'${REGISTRY}'\/jettech\/kube-webhook-certgen/g' deploy.yaml
- 목적 :
ingress-nginx-shared system namespace, clusterrole, clusterrolebinding, serviceaccount, deployment 생성
- 생성 순서 :
- deploy.yaml 실행
$ kubectl apply -f deploy.yaml
- 설치 확인
$ kubectl get pods -n ingress-nginx NAME READY STATUS RESTARTS AGE ingress-nginx-shared-admission-create-jxcjs 0/1 Completed 0 11s ingress-nginx-shared-admission-patch-h7kv5 0/1 Completed 0 11s ingress-nginx-shared-controller-579fddb54f-xhvmn 1/1 Running 0 11s
- 목적 :
ingress-nginx-shared system namespace, clusterrole, clusterrolebinding, serviceaccount, deployment 생성
- 생성 순서 :
- deploy.yaml 실행
$ kubectl apply -f deploy.yaml
- 설치 확인
$ kubectl get pods -n ingress-nginx-shared NAME READY STATUS RESTARTS AGE ingress-nginx-shared-admission-create-jxcjs 0/1 Completed 0 11s ingress-nginx-shared-admission-patch-h7kv5 0/1 Completed 0 11s ingress-nginx-shared-controller-579fddb54f-xhvmn 1/1 Running 0 11s