Ingress Controller 설치
아래와 같은 설치 명령어로 해당 파일을 배포하면 인그레스 컨트롤러의 새로운 namespace가 생성된다.
$ kubectl apply -f http://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml
호스트 설정
localhost 포워딩
$ sudo vi /etc/hosts ... 127.0.0.1 local.twoseed.co.kr
서비스 배포
로드밸런서 타입의 Service 배포 예제
vi service.yaml apiVersion: v1 kind: Service metadata: name: ch-world-service spec: selector: app: ch-world type: NodePort ports: - name: http port: 85 protocol: TCP targetPort: 5000
다음과 같은 명령어로 서비스 배포
$ kubectl apply -f service.yaml
Deployment 배포
ingress-nginx가 포워딩할 웹어플리케이션 pod 배포 예제
본 예제는 Local에 설치되어 있는 Harbor에 배포된 이미지를 활용하였다.
apiVersion: apps/v1 kind: Deployment metadata: name: ch-deployment spec: replicas: 1 selector: matchLabels: app: ch-world template: metadata: labels: # labels to select/identify the deployment app: ch-world spec: containers: - name: ch-world image: local.registry.co.kr/deploy/deploy:template_nodejs imagePullPolicy: Always ports: - containerPort: 5000 livenessProbe: httpGet: port: 5000 path: / initialDelaySeconds: 60 readinessProbe: httpGet: port: 5000 path: / initialDelaySeconds: 60
다음과 같은 명령어로 deployment 배포
$ kubectl apply -f deployment.yaml
manifest 배포
Ingress-Nginx manifest 파일을 배포 예제
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-ingress-sample spec: rules: - host: local.twoseed.co.kr http: paths: - path: / backend: serviceName: ch-world-service servicePort: 85
다음과 같은 명령어로 deployment 배포
$ kubectl apply -f mainfest.yaml
배포 확인
$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ch-world-service NodePort 10.101.142.191 <none> 85:31989/TCP 102m default-http-backend ClusterIP 10.107.231.71 <none> 80/TCP 9d kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d nginx LoadBalancer 10.100.210.113 10.244.0.1 8080:31520/TCP 8d
Add Comment