예제 YAML 파일을 사용하여 영구 데이터 스토리지가 있는 방명록 애플리케이션을 배포합니다.

Redis 리더 영구 볼륨 할당

redis-leader-pvc.yaml 파일은 명명된 스토리지 클래스를 참조하는 영구 볼륨 클레임의 예입니다. 이 예제를 사용하려면 스토리지 클래스의 이름을 입력합니다.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: redis-leader-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: tkg-storage-class-name
  resources:
    requests:
      storage: 2Gi

Redis 팔로워 영구 볼륨 할당

redis-follower-pvc.yaml 파일은 명명된 스토리지 클래스를 참조하는 영구 볼륨 클레임의 예입니다. 이 예제를 사용하려면 스토리지 클래스의 이름을 입력합니다.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: redis-follower-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: tkg-storage-class-name
  resources:
    requests:
      storage: 2Gi

Redis 리더 배포

redis-leader-deployment.yaml 파일은 영구 볼륨이 있는 Redis 리더 배포의 예입니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-leader-deployment
spec:
  selector:
    matchLabels:
      app: redis
      role: leader
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: leader
        tier: backend
    spec:
      containers:
      - name: leader
        image: redis:6.0.5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
        volumeMounts:
        - name: redis-leader-data
          mountPath: /data
      volumes: 
      - name: redis-leader-data
        persistentVolumeClaim:
          claimName: redis-leader-pvc

Redis 팔로워 배포

redis-follower-deployment.yaml 파일은 영구 볼륨이 있는 Redis 팔로워 배포의 예입니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-follower-deployment
  labels:
    app: redis
spec:
  selector:
    matchLabels:
      app: redis
      role: follower
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: follower
        tier: backend
    spec:
      containers:
      - name: follower
        image: gcr.io/google_samples/gb-redis-follower:v2
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 6379
        volumeMounts:
        - name: redis-follower-data
          mountPath: /data
      volumes: 
      - name: redis-follower-data
        persistentVolumeClaim:
          claimName: redis-follower-pvc

Redis 리더 서비스

redis-leader-service.yaml 파일은 Redis 리더 서비스의 예입니다.
apiVersion: v1
kind: Service
metadata:
  name: redis-leader
  labels:
    app: redis
    role: leader
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: leader
    tier: backend

Redis 팔로워 서비스

redis-follower-service.yaml 파일은 Redis 팔로워 서비스의 예입니다.
apiVersion: v1
kind: Service
metadata:
  name: redis-follower
  labels:
    app: redis
    role: follower
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: follower
    tier: backend

방명록 프런트 엔드 배포

guestbook-frontend-deployment.yaml 파일은 방명록 프런트 엔드 배포의 예입니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: guestbook-frontend-deployment
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 3
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v5
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80

방명록 프런트 엔드 서비스

guestbook-frontend-service.yaml 파일은 방명록 프런트 엔드 로드 밸런서 서비스의 예입니다.
apiVersion: v1
kind: Service
metadata:
  name: guestbook-frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: guestbook
    tier: frontend