본문 바로가기
자바 , 기타 공부/클라우드 공부

yaml 파일 연습

by 임지혁코딩 2024. 2. 21.

 

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