선언형(Declarative) 접근법?
- yaml 파일에 오브젝트 상태를 정의하고 apply로 생성
- Dockerfile과 같이 파일을 통해서 오브젝트를 관리하는 기법
파일예시
apiVersion: v1
kind: Service
metadata:
name: backend
spec:
selector:
app: second-app
ports:
- protocol: 'TCP'
port: 80
targetPort: 8080
type: LoadBalancer
- apiVersion은 반드시 필수로 필요하다.
- 다음과 같이 kind, metadata, spec으로 구성된다.
- kind를 통해 오브젝트의 타입을 지정한다.
시작하기
- yaml 파일을 구성하고 kubectl 명령을 이용해서 사용한다.
# 실행
kubectl apply -f=file.yaml
# 삭제
kubectl delete -f=file1.yaml,file2.yaml
deployment 구성하기
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
spec:
replicas: 1
selector:
matchLabels:
app: spring-data-rest
template:
metadata:
labels:
app: spring-data-rest
spec:
containers:
- name: second-node
image: xoo0608/spring-data-rest
- kind는 Deployment이다
- metadata를 통해서 이름등을 지정할 수 있음
- spec은 가장 중요한 부분으로 원하는 상태를 지정하는 부분
- selector는 어떤 것을 제어할지에 대한 부분으로 밑에서 지정한 Pod의 라벨을 지정한다.
- temlplate에서는 생성해야하는 Pod를 정의한다.
- temlplate 밑에 kind: Pod를 지정해야하지만 당연하기 때문에 생략이 가능하다.
- metadata의 labels를 통해서 선택이 가능하다.
deployment 실행하기
kubectl apply -f deployment.yaml

Service 구성하기
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: spring-data-rest
ports:
- protocol: 'TCP'
port: 80
targetPort: 8080
type: LoadBalancer
service 실행하기
kubectl apply -f=service.yaml
minikube service backend-service

삭제하기
kubectl delete -f=service.yaml,deployment.yaml