728x90
반응형

VOLUME

  • 파드 내의 모든 컨테이너가 접근 가능한 디렉토리
  • 컨테이너에서 스토리지(storage)를 분리시켜 컨테이너 재시작/재스케쥴과 별개로 데이터를 영속 관리 가능하게 함
apiVersion: v1  
kind: Pod  
metadata:  
    name: webapp-with-db  
    labels:  
    app: my-webapp  
spec:  
    containers:  
    - name: webapp  
      image: nginx:latest 
      ports:  
        - containerPort: 80  
      envFrom:  
        - configMapRef:  
            name: webapp-config  
    - name: database  
      image: mongo:latest  
      env:  
        - name: MONGO_INITDB_ROOT_USERNAME  
          valueFrom:  
            secretKeyRef:  
                name: db-credentials  
                key: username  
        - name: MONGO_INITDB_ROOT_PASSWORD  
          valueFrom:  
            secretKeyRef:  
                name: db-credentials  
                key: password  
          volumeMounts:  
            - name: db-data                  
              mountPath: /data/db              // 데이터 볼륨을 /data/db 마운트한다
    volumes:  
    - name: db-data                            // db-data 볼륨에 영구히 저장된다
      persistentVolumeClaim:  
      claimName: database-pvc                 

---  

apiVersion: v1  
kind: Service  
metadata:  
    name: webapp-service  
spec:  
    selector:  
        app: my-webapp  
    ports:  
      - protocol: TCP  
        port: 80  
        targetPort: 80  

---  

apiVersion: v1  
kind: ConfigMap  
metadata:  
    name: webapp-config  
data:  
    WEBAPP_ENV: "production"  
    DATABASE_URL: "mongodb://database-service:27017/mydb"  

---  

apiVersion: v1  
kind: Secret  
metadata:  
    name: db-credentials                   
type: Opaque  
data:  
    username: <base64-encoded-username>    
    password: <base64-encoded-password>

---

apiVersion: v1  
kind: PersistentVolumeClaim                // PVC - 스토리지 요구사항 정의
metadata:  
    name: database-pvc  
spec:  
    accessModes:  
        - ReadWriteOnce  
resources:  
    requests:  
        storage: 1Gi                       // 스토리지 요구사항 상세. 1Gi 짜리 스토리지
728x90
반응형

+ Recent posts