✏️ 필요성
- 지금까지 방식은 deployment 와 Service 을 띄우고,
추가적인 환경설정이 필요하면 yaml 문서를 직접 수정해줘야 했다.
- 하지만 이러한 과정들을 문서화해서 deployment 와 service 를 완성된 상태로 띄울 수 있다.
✏️ 문서 생성하기
- yml 문서를 직접 생성할 수 있지만,
이미 생성된 service 의 문서를 저장해 재사용 할 수 있다.
- 포스팅에서는 Service 만 다루고 있지만,
deployment 도 같은 방식으로 띄울 수 있다.
📍 문서를 보관할 디렉토리 만들기
mkdir -p /kube/service && cd /kube/service
📍 생성된 service 의 스펙 문서 복제
- 아래 명령어로 이미 생성되어있는 service 의 스팩문서를 확인할 수 있다.
kubectl get service/서비스명 -o yaml
- 이 방식을 이용해 생성했던 디렉토리로 문서를 복사한다.
- 혹시 유실될 수 있는 문제를 방지하기 위해 해당 문서는 origin 으로 표시해준 다음,
origin 문서를 복사하는 방식으로 사용한다.
kubectl get service/서비스명 -o yaml > /kube/service/service.yaml.origin
- 이렇게 생성된 origin 문서에서 필요없는 부분은 아래와 같이 삭제해준다.
- 기준은 내가 생성할 때 명시하지 않았던 값들이다.
- 이제 문서가 필요할 때 마다 origin 을 제거해준 상태로 복사해서 사용하면 된다.
apiVersion: v1
kind: Service
metadata:
labels:
app: webserver-hello
name: webserver-hello
namespace: default
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 80
selector:
app: webserver-hello
sessionAffinity: ClientIP
type: ClusterIP
📍 생성한 문서로 service 띄우기
- 만약 기존에 같은 이름의 service 가 있다면 삭제해주어야 한다.
kubectl apply -f 문서디렉토리/문서명
kubectl apply -f /kube/service.yaml
- 준비된 문서를 기반으로 service 가 정상적으로 생성되었다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 8h
service/webserver-hello ClusterIP 10.106.125.92 <none> 8080/TCP 7s