1. container
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: redis
name: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- image: redis:alpine
name: redis
ports:
- containerPort: 6379
name: redis
volumeMounts:
- mountPath: /data
name: redis-data
volumes:
- name: redis-data
emptyDir: {}
1. apiVersion은, v1, apps/v1
2. kind : Deployment로써, 디플로이먼트 임을 명시
3. metadata(data의 data): labels : 라벨을 붙여줌 , name : 부르는 이름을 선언해줌
4. spec: replicas : 레플리카셋(몇개가 동시에 동작되게끔 할것인지), selectr : matchLabels: app :redis
해당 레플리카가 확인할 app이름을 확인.
5. template : metadata : labels: app: redis . 확인할 application의 이름이 무엇인지도 전언해줌
6. spec:containers: image : 받아올 이미지, name : container이름 ports: Containerport : 해당 container가 사용할 port번호, name: 이름 .
volumemounts: 이부분은 공부가 좀 필요하다 .
7. volumes : name : redis - data . 데이터를 저장할 위치를 정해줌.
volume -> pv->pvc로 저장위치를 지정할 수도 있다.
1-2 . db
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: db
name: db
spec:
replicas: 1
selector:
matchLabels:
app: db
template:
metadata:
labels:
app: db
spec:
containers:
- image: postgres:9.4
name: postgres
env:
- name: POSTGRES_USER
value: postgres
- name: POSTGRES_PASSWORD
value: postgres
- name: POSTGRES_HOST_AUTH_METHOD
value: trust
ports:
- containerPort: 5432
name: postgres
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: db-data
volumes:
- name: db-data
emptyDir: {}
실제 db에 대한 내용이고 , 대부분 동의함.
env는 접속을 위한 정보를. 설정한다
*volumemounts는, pv,pvc가 pod간 전송을 목적으로 한다면 이는 container내부의 마운트 경로 지정을 담당한다.
2-1 . redis service
apiVersion: v1
kind: Service
metadata:
labels:
app: redis
name: redis
spec:
type: ClusterIP
ports:
- name: "redis-service"
port: 6379
targetPort: 6379
selector:
app: redis
selector - app을 통해서, 맞는 app을 찾아서 mapping시킨다.
지금은 spec:ClusterIp를 통해서, 내부적으로 사용할 서비스의 포트는 6379 -> container가 실제로 쓰는 port는 6379로 매핑해주었다.
apiVersion: v1
kind: Service
metadata:
labels:
app: db
name: db
spec:
type: ClusterIP
ports:
- name: "db-service"
port: 5432
targetPort: 5432
selector:
app: db
이도 마찬가지.
apiVersion: v1
kind: Service
metadata:
labels:
app: vote
name: vote
spec:
type: NodePort
ports:
- name: "vote-service"
port: 5000
targetPort: 80
selector:
app: vote
nodeport를 위해서 가져온 예시.
외부 무작위 port (30000~)-> service가 쓸 port (5000) -> container의 port는 80 .
'자바 , 기타 공부 > 클라우드 공부' 카테고리의 다른 글
KOPS (0) | 2024.02.07 |
---|---|
AWS (0) | 2024.02.06 |
퍼시스턴트 (0) | 2024.02.06 |
마이크로서비스(MSA) 네트워킹 (0) | 2024.02.05 |
쿠버네티스 네트워킹 (1) | 2024.02.04 |