kubernetes

kubernetes

짱구는굿 2023. 10. 24. 10:20

 

이름: 리소스의 이름.
단축이름: 리소스의 짧은 별칭 (사용 가능한 경우).
API그룹: 리소스가 속한 API 그룹.
네임스페이스: 리소스가 네임스페이스에 속하는지 여부를 나타냅니다 (true는 네임스페이스 범위이고, false는 클러스터 범위입니다).
종류: 리소스의 종류.

 

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
        - image: mariadb:10.7
          name: mysql
          env:
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql

---
apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
        - image: wordpress:5.9.1-php8.1-apache
          name: wordpress
          env:
            - name: WORDPRESS_DB_HOST
              value: wordpress-mysql
            - name: WORDPRESS_DB_NAME
              value: wordpress
            - name: WORDPRESS_DB_USER
              value: root
            - name: WORDPRESS_DB_PASSWORD
              value: password
          ports:
            - containerPort: 80
              name: wordpress

---
apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  type: NodePort
  ports:
    - port: 80
  selector:
    app: wordpress
    tier: frontend
 

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vote
spec:
  selector:
    matchLabels:
      service: vote
  template:
    metadata:
      labels:
        service: vote
    spec:
      containers:
        - name: vote
          image: ghcr.io/subicura/voting/vote
          env:
            - name: REDIS_HOST
              value: "redis"          reids 내용이 6379로 저장
            - name: REDIS_PORT
              value: "6379"
          livenessProbe:
            httpGet:
              path: /
              port: 80
          readinessProbe:
            httpGet:
              path: /
              port: 80
          ports:
            - containerPort: 80
              protocol: TCP

--- 외부 
apiVersion: v1
kind: Service
metadata:
  name: vote
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 31000
      protocol: TCP
  selector:
    service: vote

--- 내용결과
apiVersion: apps/v1
kind: Deployment
metadata:
  name: result
spec:
  selector:
    matchLabels:
      service: result
  template:
    metadata:
      labels:
        service: result
    spec:
      containers:
        - name: result
          image: ghcr.io/subicura/voting/result
          env:
            - name: POSTGRES_HOST
              value: "db"
            - name: POSTGRES_PORT
              value: "5432"
          livenessProbe:
            httpGet:
              path: /
              port: 80
          readinessProbe:
            httpGet:
              path: /
              port: 80
          ports:
            - containerPort: 80
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: result
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 31001
      protocol: TCP
  selector:
    service: result

--- db 연결
apiVersion: apps/v1
kind: Deployment
metadata:
  name: worker
spec:
  selector:
    matchLabels:
      service: worker
  template:
    metadata:
      labels:
        service: worker
    spec:
      containers:
        - name: worker
          image: ghcr.io/subicura/voting/worker
          env:
            - name: REDIS_HOST
              value: "redis"
            - name: REDIS_PORT
              value: "6379"
            - name: POSTGRES_HOST
              value: "db"
            - name: POSTGRES_PORT
              value: "5432"

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
spec:
  selector:
    matchLabels:
      service: redis
  template:
    metadata:
      labels:
        service: redis
    spec:
      containers:
        - name: redis
          image: redis
          ports:
            - containerPort: 6379
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  ports:
    - port: 6379
      protocol: TCP
  selector:
    service: redis

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: db
spec:
  selector:
    matchLabels:
      service: db
  template:
    metadata:
      labels:
        service: db
    spec:
      containers:
        - name: db
          image: postgres:9.4
          env:
            - name: POSTGRES_USER
              value: "postgres"
            - name: POSTGRES_PASSWORD
              value: "postgres"
          ports:
            - containerPort: 5432
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  ports:
    - port: 5432
      protocol: TCP
  selector:
    service: db


투표 화면 
vote 화면에서 선택 내용이 redis 에 저장이 된다 


결과 화면
redis의 내용이 db로 전달하여 result가 내보낸다