728x90
파일 이름은 아무거나 가능하다.
# 사용할 버전
apiVersion: apps/v1
# 객체의 종류
kind: Deployment
# 이름 같은 중요 데이터(객체 생성시에 정의해주어야 함)
metadata:
# 이름은 임의로 작성 가능
name: second-app-deployment
# 레이블을 붙여 객체의 구별성 주기
labels:
group: example
# 중요. deployment에 대한 사양
spec:
# 복제하여 생성할 pod갯수
replicas: 1
# deployment에서 관리할 pod를 정의
selector:
# 관리할 pod의 label. 여러개 가능
# 설정한 label이 모두 맞아야 관리함. 하나라도 다르면 안 함
matchLabels:
app: second-app
tier: backend
# matchExpressions:
# - {key: app, operator: In, values: [second-app, first-app]}
# 생성할 pod에 대한 정의
template:
# deployment의 template는 항상 pod에 대해 정의하므로 kind를 작성할 필요가 없음
# kubernetes도 그것을 알고있으므로 deployment template 아래에 kind를 작성할 수 없음
# 새 객체 pod에 대한 정의
metadata:
# pod 이름
labels:
app: second-app
tier: backend
# 각 pod에 대한 사양
spec:
# 중요. 컨테이너 지정. 여러개 지정 가능. 이름 지정 가능
containers:
# 이름 임의로 작성 가능
- name: second-node
# 사용할 이미지
image: summer99summer/kub-first-app
# 사용할 버전
apiVersion: v1
# 객체의 종류
kind: Service
# 이름 같은 중요 데이터(객체 생성시에 정의해주어야 함)
metadata:
# 이름은 임의로 작성 가능
name: backend
labels:
group: example
# 중요. service에 대한 사양
spec:
# service는 pod를 노출시키기 때문에 pod를 연결
selector:
# second-app을 가진 pod와 연결
app: second-app
# 포트 설정
ports:
- protocol: 'TCP'
# 외부에서 접속할 포트
port: 80
# 애플리케이션에서 연결할 포트
targetPort: 8080
# LoadBalancer 타입을 선택하여 외부 연결
type: LoadBalancer
구성 파일에서 labels: group: example
을 사용했기 때문에 -l
옵션을 사용해서 해당 label을 가진 객체를 삭제할 수 있다.
한 파일에 객체 여러개 생성하기
리소스는 위에서 아래 순서대로 생성되기 때문에 한 파일에 전부 넣으려면 service를 먼저 작성하는 것이 좋다.
객체를 구별할 때는---
를 사용하여 구별한다.
728x90