COS를 사용하는 앱 배포

클러스터에 대해 IBM Cloud Object Storage를 프로비저닝하기 위한 지속적 볼륨 클레임(PVC)을 작성하십시오.

PVC에서 선택하는 설정에 따라 다음 방법으로 IBM Cloud Object Storage를 프로비저닝할 수 있습니다.

  • 동적 프로비저닝: PVC를 생성하면, 이에 대응하는 영구 볼륨(PV)과 ‘ IBM Cloud Object Storage ’ 서비스 인스턴스 내의 버킷이 자동으로 생성됩니다.
  • 정적 프로비저닝: PVC에서 IBM Cloud Object Storage 서비스 인스턴스의 기존 버킷을 참조할 수 있습니다. PVC를 작성하면 일치하는 PV만 자동으로 작성되며 IBM Cloud Object Storage의 기존 버킷에 링크됩니다.

시작하기 전에:

IBM Cloud Object Storage를 클러스터에 추가하려면 다음을 수행하십시오.

  1. 지속적 볼륨 청구(PVC)를 정의하기 위한 구성 파일을 작성하십시오. IBM Cloud Object Storage 자격 증명을 기본 스토리지 클래스에 추가하는 경우, PVC에 해당 시크릿을 명시하지 마십시오.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <name> # Enter the name of the PVC.
      namespace: <namespace> # Enter the namespace where you want to create the PVC. The PVC must be created in the same namespace where you created the Kubernetes secret for your service credentials and where you want to run your pod.
      annotations:
        ibm.io/auto-create-bucket: "<true_or_false>"
        ibm.io/auto-delete-bucket: "<true_or_false>"
        ibm.io/bucket: "<bucket_name>"
        ibm.io/object-path: "<bucket_subdirectory>"
        ibm.io/quota-limit: "true/false" # Disable or enable a quota limit for your PVC. To use this annotation you must specify the -set quotaLimit=true option during installation.
        ibm.io/endpoint: "https://<s3fs_service_endpoint>"
        ibm.io/tls-cipher-suite: "default"
        ibm.io/secret-name: "<secret_name>" # The name of your Kubernetes secret that you created.
        ibm.io/secret-namespace: "<secret-namespace>" # By default, the COS plug-in searches for your secret in the same namespace where you create the PVC. If you created your secret in a namespace other than the namespace where you want to create your PVC, enter the namespace where you created your secret.
        ibm.io/add-mount-param: "<option-1>,<option-2>" # s3fs mount options
        ibm.io/access-policy-allowed-ips: "XX.XXX.XX.XXX, XX.XX.XX.XXX, XX.XX.XX.XX" # A csv of allow listed IPs.
        ibm.io/bucket-versioning: "false" # Set to true to enable bucket versioning.
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: <size>
      storageClassName: <storage_class>
    
    ibm.io/auto-create-bucket
    다음 옵션 중에 선택하십시오.
    true: PVC를 작성하면 IBM Cloud Object Storage 서비스 인스턴스의 PV 및 버킷이 자동으로 작성됩니다. IBM Cloud Object Storage 서비스 인스턴스의 새 버킷을 작성하려면 이 옵션을 선택하십시오. 버킷을 자동으로 작성하려면 서비스 인증 정보에 작성자 권한이 있어야 합니다.
    false: 기존 버킷의 데이터에 액세스하려는 경우 이 옵션을 선택하십시오. PVC를 작성하면 PV가 자동으로 작성되며 ibm.io/bucket에서 지정된 버킷에 링크됩니다.
    ibm.io/auto-delete-bucket
    다음 옵션 중에 선택하십시오.
    true: PVC를 삭제하면 데이터, 버킷 및 PV가 자동으로 제거됩니다. IBM Cloud Object Storage 서비스 인스턴스는 그대로 유지되며 삭제되지 않습니다. 이 옵션을 true로 설정하도록 선택한 경우에는 ibm.io/auto-create-bucket: true 형식의 이름으로 버킷이 자동 작성되도록 ibm.io/bucket: ""tmp-s3fs-xxxx을 설정해야 합니다.
    false: PVC를 삭제하면 PV가 자동으로 삭제되지만 IBM Cloud Object Storage 서비스 인스턴스의 데이터 및 버킷은 그대로 유지됩니다. 데이터에 액세스하려면 기존 버킷의 이름으로 새 PVC를 작성해야 합니다.
    ibm.io/bucket
    다음 옵션 중에 선택하십시오.
    ibm.io/auto-create-buckettrue로 설정된 경우: IBM Cloud Object Storage에서 작성하려는 버킷의 이름을 입력하십시오. 또한 ibm.io/auto-delete-buckettrue로 설정된 경우, 사용자는 버킷에 tmp-s3fs-xxxx 형식의 이름을 자동으로 지정할 수 있도록 이 필드를 공백 상태로 두어야 합니다. 이름은 IBM Cloud Object Storage에서 고유해야 합니다.
    ibm.io/auto-create-bucketfalse로 설정된 경우: 클러스터에서 액세스하려는 기존 버킷의 이름을 입력하십시오.
    ibm.io/object-path
    선택사항: 마운트할 버킷의 기존 서브디렉토리 이름을 입력하십시오. 전체 버킷이 아닌 서브디렉토리만 마운트하려면 이 옵션을 사용하십시오. 서브디렉토리를 마운트하려면 ibm.io/auto-create-bucket: "false"를 설정하고 ibm.io/bucket의 버킷 이름을 제공해야 합니다.
    ibm.io/quota-limit
    이 어노테이션을 사용하려면 설치 중에 --set quotaLimit=true 옵션을 지정해야 합니다. 이 어노테이션을 사용하려고 하지만 설치 중에 --set quotaLimit=true 를 지정하지 않은 경우 helm 차트를 다시 설치 하십시오.
    ibm.io/quota-limit 가 로 설정된 경우, PVC는 사용자가 지정한 크기 를 기준으로 버킷에 사용할 수 있는 최대 저장 용량(바이트 단위)을 설정합니다. true storage: <size>
    ibm.io/quota-limitfalse 로 설정되면 PVC에서 할당량이 적용되지 않습니다. 이는 실제 스토리지 양 (바이트) 이 앱에 따라 지정한 storage: <size> 를 초과할 수 있음을 의미합니다.
    ibm.io/endpoint
    클러스터와 다른 위치에 IBM Cloud Object Storage 서비스 인스턴스를 작성한 경우 사용할 IBM Cloud Object Storage 서비스 인스턴스의 프라이빗 또는 퍼블릭 클라우드 서비스 엔드포인트를 입력하십시오. 사용 가능한 서비스 엔드포인트에 대한 자세한 정보 및 개요는 추가 엔드포인트 정보를 참조하십시오. 기본적으로 ibmc Helm 플러그인은 자동으로 클러스터 위치를 검색한 후 클러스터 위치와 일치하는 IBM Cloud Object Storage 프라이빗 클라우드 서비스 엔드포인트를 사용하여 스토리지 클래스를 작성합니다. 클래식 클러스터가 dal10 와 같은 다중 구역 메트로에 있는 경우, 댈러스와 같은 해당 다중 구역 메트로의 IBM Cloud Object Storage 프라이빗 클라우드 서비스 엔드포인트가 사용됩니다. 스토리지 클래스의 서비스 엔드포인트가 서비스 인스턴스의 서비스 엔드포인트와 일치하는지 확인하려면 oc describe storageclass <storageclassname>을 실행하십시오. 프라이빗 클라우드 서비스 엔드포인트의 경우 https://<s3fs_private_service_endpoint> 형식 또는 퍼블릭 클라우드 서비스 엔드포인트의 경우 http://<s3fs_public_service_endpoint> 형식으로 서비스 엔드포인트를 입력해야 합니다. 스토리지 클래스의 서비스 엔드포인트가 IBM Cloud Object Storage 서비스 인스턴스의 서비스 엔드포인트와 일치하는 경우 PVC YAML 파일에 ibm.io/endpoint 옵션을 포함하지 마십시오.
    ibm.io/add-mount-param
    s3fs 퓨저 볼륨에 대한 마운트 옵션을 입력하십시오. 예를 들어, ibm.io/add-mount-param: "del_cache,retries=6" 입니다. 옵션 목록은 s3fs man 페이지 를 참조하십시오.
    ibm.io/access-policy-allowed-ips
    볼륨에 액세스할 수 있는 쉼표로 구분된 IP 목록을 입력하십시오. 예를 들어, ibm.io/access-policy-allowed-ips: "XX.XXX.XX.XXX, XX.XX.XX.XXX, XX.XX.XX.XX"입니다.
    storage
    ‘리소스 요청 사양’ 섹션에서 ‘ IBM Cloud Object Storage ’ 버킷의 용량을 기가바이트 단위로 입력하세요. IBM Cloud Object Storage 에서 실제로 사용하는 공간은 다를 수 있으며, 가격표 에 따라 요금이 청구됩니다. 플러그인을 설치할 때 할당량을 사용으로 설정한 경우 버킷의 할당량은 이 크기와 동일합니다.
    storageClassName
    다음 옵션 중에 선택하십시오.
    ibm.io/auto-create-bucket: "true"인 경우: 새 버킷에 사용할 스토리지 클래스를 입력하십시오.
    ibm.io/auto-create-bucket: "false"인 경우: 기존 버킷을 작성하는 데 사용한 스토리지 클래스를 입력하십시오.
    IBM Cloud Object Storage 서비스 인스턴스에서 수동으로 버킷을 작성했거나 사용한 스토리지 클래스를 기억할 수 없는 경우 IBM Cloud 대시보드에서 서비스 인스턴스를 찾고 기존 버킷의 클래스위치를 검토하십시오. 그런 다음 적절한 스토리지 클래스 를 사용하십시오. 스토리지 클래스에서 설정된 IBM Cloud Object Storage API 엔드포인트는 클러스터가 있는 지역을 기반으로 합니다. 클러스터가 위치한 리전과 다른 리전에 있는 버킷에 액세스하려면, 직접 스토리지 클래스를 생성하고 해당 버킷에 적합한 API 엔드포인트를 사용해야 합니다.
    ibm.io/secret-name
    이전에 작성한 IBM Cloud Object Storage 인증 정보를 보유하는 시크릿의 이름을 입력하십시오. IBM Cloud Object Storage 신임 정보 를 기본 스토리지 클래스에 추가하는 경우 PVC에서 시크릿을 나열하지 않아야 합니다. 클러스터의 PVC에서 새 버킷을 작성할 때 Key Protect 암호화를 통합하려면 IBM Cloud Object Storage 시크릿 을 작성할 때 루트 키 CRN을 포함해야 합니다. Key Protect 암호화를 기존 버킷에 추가할 수 없습니다.
    secret-namespace
    기본적으로 COS 플러그인은 PVC를 작성한 것과 동일한 네임스페이스에서 시크릿을 검색합니다. PVC를 작성하려는 네임스페이스가 아닌 다른 네임스페이스에서 시크릿을 작성한 경우 시크릿을 작성한 네임스페이스를 입력하십시오.
    ibm.io/bucket-versioning
    버킷 버전 관리는 기본적으로 ‘ false ’로 설정되어 있습니다. 버킷 버전 관리를 사용하려면 true 로 설정합니다. 버전 관리가 활성화된 버킷에 대해 버전 관리를 사용하지 않으려면 false 으로 설정합니다. 버킷에서 버킷 버전 관리를 사용하거나 사용하지 않으려면 서비스 자격 증명에 관리자 또는 작성자 권한이 있어야 합니다. 자세한 내용은 ‘버전 관리 시작하기’를 참조하십시오.
  2. 클러스터에 PVC를 작성하십시오.

    oc apply -f filepath/pvc.yaml
    
  3. PVC가 작성되고 PV에 바인딩되는지 확인하십시오.

    oc get pvc
    

    출력 예

    NAME                  STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                     AGE
    s3fs-test-pvc         Bound     pvc-b38b30f9-1234-11e8-ad2b-t910456jbe12   8Gi        RWO            ibmc-s3fs-standard-cross-region  1h
    
  4. 선택사항: 루트가 아닌 사용자로 데이터에 액세스할 계획이거나 콘솔 또는 API를 사용하여 기존 IBM Cloud Object Storage 버킷에 직접 파일을 추가한 경우에는 필요 시에 앱이 파일을 성공적으로 읽고 업데이트할 수 있도록 파일에 올바른 권한이 지정되어 있는지 확인하십시오.

  5. PV를 배치에 마운트하려면 구성 .yaml 파일을 작성하고 PV를 바인드하는 PVC를 지정하십시오.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: <deployment_name>
      labels:
        app: <deployment_label>
    spec:
      selector:
        matchLabels:
          app: <app_name>
      template:
        metadata:
          labels:
            app: <app_name>
        spec:
          containers:
          - image: <image_name>
            name: <container_name>
            securityContext:
              runAsUser: <non_root_user>
            volumeMounts:
            - name: <volume_name>
              mountPath: /<file_path>
          volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>
    
    app
    metadata 섹션에서, 배치의 레이블을 입력하십시오.
    matchLabels.applabels.app
    spec selector 및 spec template metadata 섹션에서, 앱의 레이블을 입력하십시오.
    image
    사용할 컨테이너 이미지의 이름입니다. IBM Cloud Container Registry 계정에서 사용 가능한 이미지를 나열하려면 ibmcloud cr image-list를 실행하십시오.
    name
    클러스터에 배치하려는 컨테이너의 이름입니다.
    runAsUser
    spec containers securityContext 섹션에서, 선택적으로 특정 사용자로서 실행 값을 설정할 수 있습니다.
    mountPath
    spec containers volumeMounts 섹션에서, 컨테이너 내에서 볼륨이 마운트되는 디렉토리의 절대 경로를 입력하십시오. 서로 다른 앱 간에 볼륨을 공유하려면, 각 앱에 대해 볼륨 하위 경로를 지정할 수 있습니다.
    volumeMounts.name
    spec containers volumeMounts 섹션에서, 팟(Pod)에 마운트할 볼륨의 이름을 입력하십시오.
    volumes.name
    volumes 섹션에서, 팟(Pod)에 마운트할 볼륨의 이름을 입력하십시오. 일반적으로 이 이름은 volumeMounts/name과 동일합니다.
    claimName
    볼륨의 지속적 볼륨 청구 섹션에 사용할 PV를 바인드하는 PVC의 이름을 입력하십시오.

배치 작성

PVC 및 배치 구성 파일을 작성한 후 클러스터에서 배치를 작성하십시오.

  1. 배치를 작성하십시오.

    oc apply -f <local_yaml_path>
    
  2. PV가 성공적으로 마운트되었는지 확인하십시오.

    oc describe deployment <deployment_name>
    

    마운트 지점은 Volume Mounts 필드에 있고 볼륨은 Volumes 필드에 있습니다.

    Volume Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro)
          /volumemount from myvol (rw)
    ...
    Volumes:
        myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    mypvc
        ReadOnly:    false
    
  3. 앱 팟(pod)에 로그인하고 데이터를 작성하여 IBM Cloud Object Storage 서비스 인스턴스에 데이터를 쓸 수 있는지 확인하십시오. PV를 마운트하는 팟(Pod)에 로그인하십시오.

    oc exec <pod_name> -it bash
    
  4. 앱 배치에서 정의한 볼륨 마운트 경로로 이동하십시오.

  5. 텍스트 파일을 작성하십시오.

    echo "This is a test" > test.txt
    
  6. IBM Cloud 콘솔에서 IBM Cloud Object Storage 서비스 인스턴스로 이동합니다.

  7. 메뉴에서 버킷을 선택하십시오.

  8. 버킷을 열고 작성된 test.txt가 나타나는지 확인하십시오.

Stateful 세트에서의 오브젝트 스토리지 사용

데이터베이스와 같은 stateful 앱이 있는 경우에는 앱의 데이터를 저장하기 위해 IBM Cloud Object Storage를 사용하는 Stateful 세트를 작성할 수 있습니다. 또는, IBM Cloud와 같은 IBM Cloudant DBaaS(Database-as-a-Service)를 사용하여 데이터를 클라우드에 저장할 수 있습니다.

시작하기 전에, 이 항목의 시작 부분에 있는 필수 단계를 완료하십시오.

오브젝트 스토리지를 사용하는 Stateful 세트를 배치하려면 다음을 수행하십시오.

  1. Stateful 세트에 대한 구성 파일과 이 Stateful 세트를 노출하는 데 사용하는 서비스를 작성하십시오. 다음 예는 NGINX를 세 개의 복제본을 포함하는 Stateful 세트(동일한 버킷을 공유하거나 별도의 버킷이 있는 각 복제본)로 배치하는 방법을 보여줍니다.

    각각 별도의 버킷을 사용하는 세 개의 복제본이 있는 상태 저장 세트를 작성하는 예.

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-v01
      namespace: default
      labels:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web-v01
      namespace: default
    spec:
      selector:
        matchLabels:
          app: nginx-v01 # must match spec.template.metadata.labels in stateful set YAML and metadata.labels in service YAML
      serviceName: "nginx-v01"
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx-v01 # must match spec.selector.matchLabels in stateful set YAML and metadata.labels in service YAML
        spec:
          terminationGracePeriodSeconds: 10
          containers:
          - name: nginx
            image: registry.k8s.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: mypvc
              mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
      - metadata:
          name: mypvc
          annotations:
            ibm.io/auto-create-bucket: "true"
            ibm.io/auto-delete-bucket: "true"
            ibm.io/bucket: ""
            ibm.io/secret-name: mysecret
            volume.beta.kubernetes.io/storage-class: ibmc-s3fs-standard-perf-cross-region
            volume.beta.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "ibmc-s3fs-standard-perf-cross-region"
          resources:
            requests:
              storage: 1Gi
    

    동일한 버킷 mybucket을 공유하는 세 개의 복제본이 있는 상태 저장 세트를 작성하는 예.

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-v01
      namespace: default
      labels:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web-v01
      namespace: default
    spec:
      selector:
        matchLabels:
          app: nginx-v01 # must match spec.template.metadata.labels in stateful set YAML and metadata.labels in service YAML
      serviceName: "nginx-v01"
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx-v01 # must match spec.selector.matchLabels in stateful set YAML and metadata.labels in service YAML
        spec:
          terminationGracePeriodSeconds: 10
          containers:
          - name: nginx
            image: registry.k8s.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: mypvc
              mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
      - metadata:
          name: mypvc
          annotations:
            ibm.io/auto-create-bucket: "false"
            ibm.io/auto-delete-bucket: "false"
            ibm.io/bucket: mybucket
            ibm.io/secret-name: mysecret
            volume.beta.kubernetes.io/storage-class: ibmc-s3fs-standard-perf-cross-region
            volume.beta.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs
        spec:
          accessModes: [ "ReadOnlyMany" ]
          storageClassName: "ibmc-s3fs-standard-perf-cross-region"
          resources:
            requests:
              storage: 1Gi
    
name

Stateful 세트의 이름을 입력하십시오. 입력하는 이름은 <volume_name>-< statefulset_name>-<replica_number> 형식으로 PVC의 이름을 작성하는 데 사용됩니다.

serviceName

Stateful 세트를 노출하는 데 사용할 서비스의 이름을 입력하십시오.

replicas

Stateful 세트의 복제본 수를 입력하십시오.

matchLabels

spec selector matchLabels 섹션에서, Stateful 세트 및 PVC에 포함시킬 모든 레이블을 입력하십시오. Stateful 세트의 volumeClaimTemplates에 포함하는 레이블은 Kubernetes가 인식하지 않습니다. 대신 Stateful 세트 YAML의 spec.selector.matchLabelsspec.template.metadata.labels 섹션에서 이러한 레이블을 정의해야 합니다. 서비스의 로드 밸런싱에 모든 Stateful 세트 복제본이 포함되도록 하려면 서비스 YAML의 spec.selector 섹션에서 사용한 것과 동일한 레이블을 포함하십시오.

labels

스펙 메타데이터 레이블 섹션에 Stateful 세트 YAML의 spec.selector.matchLabels 섹션에 추가한 동일한 레이블을 입력하십시오.

terminationGracePeriodSeconds

kubelet 가 스테이트풀 세트 복제본을 실행하는 포드를 안전하게 종료할 수 있도록 허용할 시간(초)을 입력하세요. 자세한 정보는 팟(Pod)삭제를 참조하십시오.

VolumeClaimTemplates.name

spec volumeClaimTemplates metadata 섹션에서, 볼륨의 이름을 입력하십시오. spec.containers.volumeMount.name 섹션에 정의한 것과 동일한 이름을 사용하십시오. 여기에 입력하는 이름은 <volume_name>-<statefulset_name>-<replica_number> 형식으로 PVC의 이름을 작성하는 데 사용됩니다.

ibm.io/auto-create-bucket

spec volumeClaimTemplates metadata 섹션에서, 버킷이 작성되는 방식을 구성하는 어노테이션을 설정하십시오. 다음 선택사항 중 하나를 선택하십시오.

  • **true: **각 Stateful 세트 복제본에 대해 자동으로 버킷을 작성하려면 이 옵션을 선택하십시오. 버킷을 자동으로 작성하려면 서비스 인증 정보에 작성자 권한이 있어야 합니다.
  • **false: **전체 Stateful 세트 복제본이 기존 버킷을 공유하도록 하려면 이 옵션을 선택하십시오. Stateful 세트 YAML의 spec.volumeClaimTemplates.metadata.annotions.ibm.io/bucket 섹션에 버킷의 이름을 반드시 정의해야 합니다.
ibm.io/auto-delete-bucket

spec volumeClaimTemplates metadata 섹션에서, 버킷이 삭제되는 방식을 구성하는 어노테이션을 설정하십시오. 다음 선택사항 중 하나를 선택하십시오.

  • **true: **PVC를 삭제할 때 데이터, 버킷 및 PV가 자동으로 제거됩니다. IBM Cloud Object Storage 서비스 인스턴스는 그대로 유지되며 삭제되지 않습니다. 이 옵션을 true로 설정하도록 선택한 경우에는 ibm.io/auto-create-bucket: true 형식의 이름으로 버킷이 자동 작성되도록 ibm.io/bucket: ""tmp-s3fs-xxxx을 설정해야 합니다.
  • **false: **PVC를 삭제하면 PV는 자동으로 삭제되지만 IBM Cloud Object Storage 서비스 인스턴스의 데이터와 버킷은 그대로 유지됩니다. 데이터에 액세스하려면 기존 버킷의 이름으로 새 PVC를 작성해야 합니다.
ibm.io/bucket

spec volumeClaimTemplates metadata 섹션에서, 버킷 세부사항에 대한 어노테이션을 설정하십시오. 다음 선택사항 중 하나를 선택하십시오.

  • ibm.io/auto-create-buckettrue로 설정된 경우: IBM Cloud Object Storage에서 작성한 버킷의 이름을 입력하십시오. 또한 ibm.io/auto-delete-buckettrue로 설정된 경우, 사용자는 버킷에 tmp-s3fs-xxxx 형식의 이름을 자동으로 지정할 수 있도록 이 필드를 공백 상태로 두어야 합니다. 이름은 IBM Cloud Object Storage에서 고유해야 합니다.
  • ibm.io/auto-create-bucketfalse로 설정된 경우: 클러스터에서 액세스할 기존 버킷의 이름을 입력하십시오.
ibm.io/secret-name

spec volumeClaimTemplates metadata annotations 섹션에서, 이전에 작성한 IBM Cloud Object Storage 인증 정보를 포함하는 시크릿의 이름을 입력하십시오. IBM Cloud Object Storage 인증 정보를 기본 스토리지 클래스에 추가하는 경우에는 PVC에서 시크릿을 나열해서는 안됩니다.

kubernetes.io/storage-class

spec volumeClaimTemplates metadata annotations 섹션에서, 사용할 스토리지 클래스를 입력하십시오. 다음 선택사항 중 하나를 선택하십시오.

  • ibm.io/auto-create-bucket: "true"인 경우: 새 버킷에 사용할 스토리지 클래스를 입력하십시오.
  • ibm.io/auto-create-bucket: "false"인 경우: 기존 버킷을 작성하는 데 사용한 스토리지 클래스를 입력하십시오.

기존 스토리지 클래스를 나열하려면 oc get sc | grep s3을 실행하십시오. 스토리지 클래스를 지정하지 않으면 클러스터에 설정된 기본 스토리지 클래스를 사용하여 PVC가 작성됩니다. Stateful 세트가 오브젝트 스토리지를 사용하여 프로비저닝되도록 기본 스토리지 클래스가 ibm.io/ibmc-s3fs 프로비저너를 사용하는지 확인하십시오.

storageClassName

스펙 볼륨 청구 템플리트의 스펙 섹션에 Stateful 세트 YAML의 spec.volumeClaimTemplates.metadata.annotations.volume.beta.kubernetes.io/storage-class 섹션에 입력한 동일한 스토리지 클래스를 입력하십시오.

storage

spec volumeClaimTemplates spec resources requests 섹션에서, IBM Cloud Object Storage 버킷의 가상 크기를 기가바이트 단위로 입력하십시오. Kubernetes에서는 이 크기가 필요하지만, IBM Cloud Object Storage에서는 무시됩니다. 원하는 크기를 입력할 수 있습니다. IBM Cloud Object Storage 에서 실제로 사용하는 공간은 다를 수 있으며, 가격표 에 따라 요금이 청구됩니다.