앞선 포스팅에서는 Deployment을 생성하는 2가지 방법과, deployment yaml파일의 구조에 대해 알아봤습니다.
이번 포스팅에서는 Deployment yaml파일로 서비스를 구성하는 방법에 대해 포스팅하려 합니다.
다음 명령어는 nginx기반의 LoadBalancer 유형의 서비스를 외부로 노출시켜 사용 가능하게 하는 명령어입니다
$ kubectl expose deployment my-nginx --port=80 --type=LoadBalancer
이 명령어 또한 yaml파일로 구성할 수 있습니다.
현재 nginx.yaml파일은 다음과 같은 내용으로 되어있습니다.
그럼 LoadBalancer 서비스를 제공하는 nginx-svc.yaml 파일을 다음과 같이 생성해주겠습니다.
nginx-svc.yaml의 spec: selector : app : nginx의 부분은 nginx.yaml파일의 label과 연결되어 nginx.yaml파일로 생성된 deployment에 서비스를 제공하게 됩니다.
그럼 다음 명령어를 입력해 nginx-svc.yaml파일을 적용해 주겠습니다.
$ kubectl apply -f nginx-svc.yaml
그럼 minikube의 service list를 확인하면 해당 서비스가 잘 돌아가고 있는 것을 확인할 수 있습니다.
해당 링크로 접속해보면 nginx를 잘 확인할 수 있습니다.
현재의 상황은, nginx이미지를 기반으로 한 deployment가 실행되고 있는데, nginx-svc.yaml파일로 인해 해당 deployment를 외부로 노출시켜 준 상태입니다.
그럼 exec 명령어로 해당 deployment의 pod에 들어가서 index.html 파일을 수정해 보겠습니다.
$kubectl get pods
$kubectl exec [pod ID] -it -- bin/bash
그럼 index.html파일이 잘 변경된 것을 확인할 수 있습니다.
Deployment 2개 사용하기
그럼 이제 deployment를 2개 만들어 보겠습니다.
기존에 있는 nginx.yaml파일을 복사해서 nginx2.yaml파일을 생성해 보겠습니다.
nginx2.yaml파일은 기존 nginx.yaml파일과 다르게 lablel들을 app: nginx에서 my: nginx으로 변경해주고, name도 my-nginx2로 변경해줬습니다.
nginx2.yaml파일을 apply하고 deployment목록을 보면 다음과 같이 2개가 생성된 것을 볼 수 있습니다.
그럼 기존에 nginx.yaml파일의 deployment를 서비스해주던 서비스를 종료하고, 새로 생성한 nginx2.yaml파일의 deployment를 서비스해주겠습니다.
$ kubectl get svc
$ kubectl delete svc [서비스 아이디]
그리고 nginx-svc.yaml파일의 selector를 my: nginx, 즉, nginx2.yaml 파일을 가리키게 변경하고 apply 해주었습니다.
apply 해주고 $ minikube service list 명령어를 통해 서비스를 확인하고, 해당 주소로 들어가면 새로 구성해준 nginx2.yaml파일의 deployment가 서비스되고 있는 것을 확인할 수 있습니다.
그럼 이 nginx2.yaml로 만들어진 deployment의 pod에 접근해서 index.html도 마찬가지로 수정해보겠습니다.
$kubectl get pods
$kubectl exec [pod ID] -it -- bin/bash
다음과 같이 변경된 nginx2의 index.html 파일을 확인할 수 있습니다.
만약에 현재 서비스를 삭제하고, nginx-svc.yaml파일의 selector를 my: nginx에서 app: nginx로 변경하고 다시 서비스를 실행시켜서 확인하면, 첫 번째 nginx가 서비스되는 것을 확인할 수 있었습니다.
추가적으로 현재 nginx.yaml, nginx2.yaml, nginx-svc.yaml파일 모두 따로 저장되어있지만, 이를 하나로 합칠 수도 있습니다.
그럼 nginx.yaml파일과 nginx-svc.yaml파일을 합쳐보겠습니다.
$ vi nginx.yaml 명령어로 nginx.yaml파일로 들어오고, :r nginx-scv.yaml로 nginx 서비스 파일을 불러와 통합해주었습니다.
:w nginx-combind.yaml 명령어로 통합된 파일이름을 nginx-combind.yaml로 설정했습니다.
$ kubectl apply -f nginx-combind.yaml 명령어를 통해 서비스를 실행 시켜주면 deployment와 service가 모두 한 번에 실행되는 것을 볼 수 있습니다.
$ minikube service list 명령어로 서비스 목록을 확인하고 링크에 접속하면 새로운 nginx가 잘 실행되고 있는것을 확인할 수 있습니다.
'Devops > Kubernetes' 카테고리의 다른 글
[Kubernetes] Deployment (1) (0) | 2021.06.11 |
---|---|
[Kubernetes] Kubernetes 시작하기 (2) (0) | 2021.06.11 |
[Kubernetes] Kubernetes 시작하기 (1) (0) | 2021.06.11 |
댓글