6.14. Google Compute Platform 파일 저장소 CSI 드라이버 운영자


6.14.1. 개요

OpenShift Container Platform은 Google Compute Platform(GCP) Filestore Storage용 Container Storage Interface(CSI) 드라이버를 사용하여 영구 볼륨(PV)을 프로비저닝할 수 있습니다.

CSI 운영자와 드라이버를 사용할 때는 영구 저장소CSI 볼륨 구성 에 익숙해야 합니다.

GCP Filestore Storage 자산에 마운트되는 CSI 프로비저닝 PV를 생성하려면 openshift-cluster-csi-drivers 네임스페이스에 GCP Filestore CSI Driver Operator와 GCP Filestore CSI 드라이버를 설치합니다.

  • GCP Filestore CSI Driver Operator는 기본적으로 스토리지 클래스를 제공하지 않지만 필요한 경우 스토리지 클래스를 만들 수 있습니다 . GCP Filestore CSI Driver Operator는 필요에 따라 스토리지 볼륨을 생성할 수 있도록 하여 동적 볼륨 프로비저닝을 지원하므로 클러스터 관리자가 스토리지를 미리 프로비저닝할 필요가 없습니다.
  • GCP Filestore CSI 드라이버를 사용하면 GCP Filestore PV를 만들고 마운트할 수 있습니다.

OpenShift Container Platform GCP Filestore는 워크로드 ID를 지원합니다. 이를 통해 사용자는 서비스 계정 키 대신 페더레이션 ID를 사용하여 Google Cloud 리소스에 액세스할 수 있습니다. GCP 워크로드 ID는 설치 중에 전역적으로 활성화해야 하며, 그런 다음 GCP Filestore CSI 드라이버 운영자에 대해 구성해야 합니다. 자세한 내용은 GCP Filestore CSI 드라이버 운영자 설치를 참조하세요.

6.14.2. CSI 정보

스토리지 벤더는 일반적으로 Kubernetes의 일부로 스토리지 드라이버를 제공합니다. 컨테이너 스토리지 인터페이스(CSI)를 구현하면 타사 공급업체는 Kubernetes의 핵심 코드를 변경하지 않고도 표준 인터페이스를 사용하여 스토리지 플러그인을 제공할 수 있습니다.

CSI 운영자는 OpenShift Container Platform 사용자에게 트리 내 볼륨 플러그인으로는 불가능한 볼륨 스냅샷과 같은 저장 옵션을 제공합니다.

6.14.3. GCP Filestore CSI 드라이버 운영자 설치

Google Compute Platform Filestore와 함께 GCP 워크로드 ID를 사용하려면 GCP Filestore 컨테이너 스토리지 인터페이스(CSI) 드라이버 운영자를 설치하는 동안 사용할 특정 매개변수를 얻어야 합니다.

사전 요구 사항

  • cluster-admin 역할을 가진 사용자로 클러스터에 액세스합니다.

프로세스

워크로드 ID를 사용하여 GCP Filestore CSI Driver Operator를 설치하려면 다음을 수행하세요.

  1. 프로젝트 번호를 얻으세요:

    1. 다음 명령을 실행하여 프로젝트 ID를 얻습니다.

      $ export PROJECT_ID=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.gcp.projectID}')
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 프로젝트 ID를 사용하여 프로젝트 번호를 얻습니다.

      $ gcloud projects describe $PROJECT_ID --format="value(projectNumber)"
      Copy to Clipboard Toggle word wrap
  2. ID 풀 ID와 공급자 ID를 찾으세요.

    클러스터 설치 중에 이러한 리소스의 이름은 --name 매개변수를 사용하여 Cloud Credential Operator 유틸리티( ccoctl )에 제공됩니다. "Cloud Credential Operator 유틸리티를 사용하여 GCP 리소스 만들기"를 참조하세요.

  3. GCP Filestore Operator에 대한 워크로드 ID 리소스를 만듭니다.

    1. 다음 예제 파일을 사용하여 CredentialsRequest 파일을 만듭니다.

      예제 자격 증명 요청 YAML 파일

      apiVersion: cloudcredential.openshift.io/v1
      kind: CredentialsRequest
      metadata:
        name: openshift-gcp-filestore-csi-driver-operator
        namespace: openshift-cloud-credential-operator
        annotations:
          include.release.openshift.io/self-managed-high-availability: "true"
          include.release.openshift.io/single-node-developer: "true"
      spec:
        serviceAccountNames:
        - gcp-filestore-csi-driver-operator
        - gcp-filestore-csi-driver-controller-sa
        secretRef:
          name: gcp-filestore-cloud-credentials
          namespace: openshift-cluster-csi-drivers
        providerSpec:
          apiVersion: cloudcredential.openshift.io/v1
      	kind: GCPProviderSpec
          predefinedRoles:
          - roles/file.editor
          - roles/resourcemanager.tagUser
          skipServiceCheck: true
      Copy to Clipboard Toggle word wrap

    2. 다음 명령을 실행하여 CredentialsRequest 파일을 사용하여 GCP 서비스 계정을 만듭니다.

      $ ./ccoctl gcp create-service-accounts --name=<filestore-service-account> \
      1
      
        --workload-identity-pool=<workload-identity-pool> \
      2
      
        --workload-identity-provider=<workload-identity-provider> \
      3
      
        --project=<project-id> \
      4
      
        --credentials-requests-dir=/tmp/credreq 
      5
      Copy to Clipboard Toggle word wrap
      1
      <filestore-service-account>는 사용자가 선택한 이름입니다.
      2
      <workload-identity-pool>은 위의 2단계에서 나왔습니다.
      3
      <workload-identity-provider>는 위의 2단계에서 나왔습니다.
      4
      <project-id>는 위의 1.a 단계에서 나왔습니다.
      5
      CredentialsRequest 파일이 있는 디렉토리의 이름입니다.

      출력 예

      2025/02/10 17:47:39 Credentials loaded from gcloud CLI defaults
      2025/02/10 17:47:42 IAM service account filestore-service-account-openshift-gcp-filestore-csi-driver-operator created
      2025/02/10 17:47:44 Unable to add predefined roles to IAM service account, retrying...
      2025/02/10 17:47:59 Updated policy bindings for IAM service account filestore-service-account-openshift-gcp-filestore-csi-driver-operator
      2025/02/10 17:47:59 Saved credentials configuration to: /tmp/install-dir/ 
      1
      
      openshift-cluster-csi-drivers-gcp-filestore-cloud-credentials-credentials.yaml
      Copy to Clipboard Toggle word wrap

      1
      현재 디렉토리.
    3. 다음 명령을 실행하여 새로 생성된 서비스 계정의 서비스 계정 이메일을 찾으세요.

      $ cat /tmp/install-dir/manifests/openshift-cluster-csi-drivers-gcp-filestore-cloud-credentials-credentials.yaml | yq '.data["service_account.json"]' | base64 -d | jq '.service_account_impersonation_url'
      Copy to Clipboard Toggle word wrap

      출력 예

      https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/filestore-se-openshift-g-ch8cm@openshift-gce-devel.iam.gserviceaccount.com:generateAccessToken
      Copy to Clipboard Toggle word wrap

      이 예제 출력에서 서비스 계정 이메일은 filestore-se-openshift-g-ch8cm@openshift-gce-devel.iam.gserviceaccount.com 입니다.

결과

이제 GCP Filestore CSI Driver Operator를 설치하는 데 필요한 다음 매개변수가 있습니다.

  • 프로젝트 번호 - 1.b 단계부터
  • 풀 ID - 2단계부터
  • 공급자 ID - 2단계부터
  • 서비스 계정 이메일 - 3.c 단계부터

6.14.3.2. GCP Filestore CSI 드라이버 운영자 설치

Google Compute Platform(GCP) Filestore Container Storage Interface(CSI) 드라이버 운영자는 기본적으로 OpenShift Container Platform에 설치되지 않습니다. 다음 절차에 따라 클러스터에 GCP Filestore CSI Driver Operator를 설치하세요.

사전 요구 사항

  • OpenShift Container Platform 웹 콘솔에 액세스합니다.
  • GCP 워크로드 ID를 사용하는 경우 특정 GCP 워크로드 ID 매개변수가 필요합니다. 이전 섹션 '워크로드 ID를 사용하여 GCP Filestore CSI 드라이버 운영자 설치 준비'를 참조하세요.

프로세스

웹 콘솔에서 GCP Filestore CSI Driver Operator를 설치하려면:

  1. 웹 콘솔에 로그인합니다.
  2. 다음 명령을 실행하여 GCE 프로젝트에서 Filestore API를 활성화합니다.

    $ gcloud services enable file.googleapis.com  --project <my_gce_project> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <my_gce_project>를 Google Cloud 프로젝트로 바꿉니다.

    Google Cloud 웹 콘솔을 사용하여 이 작업을 수행할 수도 있습니다.

  3. GCP Filestore CSI Operator를 설치하세요.

    1. Operators OperatorHub를 클릭합니다.
    2. 필터 상자에 GCP Filestore를 입력하여 GCP Filestore CSI Operator를 찾습니다.
    3. GCP Filestore CSI 드라이버 운영자 버튼을 클릭합니다.
    4. GCP Filestore CSI Driver Operator 페이지에서 설치를 클릭합니다.
    5. Operator 설치 페이지에서 다음을 확인합니다.

      • 클러스터의 모든 네임스페이스(기본값)가 선택됩니다.
      • 설치된 네임스페이스openshift-cluster-csi-drivers로 설정됩니다.

        GCP 워크로드 ID를 사용하는 경우 워크로드 ID를 사용하여 GCP Filestore CSI 드라이버 운영자 설치 준비 섹션의 절차에서 얻은 다음 필드에 대한 값을 입력합니다.

      • GCP 프로젝트 번호
      • GCP 풀 ID
      • GCP 공급자 ID
      • GCP 서비스 계정 이메일
    6. 설치를 클릭합니다.

      설치가 완료되면 GCP Filestore CSI Operator가 웹 콘솔의 설치된 연산자 섹션에 나열됩니다.

  4. GCP Filestore CSI 드라이버를 설치하세요.

    1. 관리 CustomResourceDefinitions ClusterCSIDriver를 클릭합니다.
    2. Instances 탭에서 Create ClusterCSIDriver를 클릭합니다.

      다음 YAML 파일을 사용합니다.

      apiVersion: operator.openshift.io/v1
      kind: ClusterCSIDriver
      metadata:
          name: filestore.csi.storage.gke.io
      spec:
        managementState: Managed
      Copy to Clipboard Toggle word wrap
    3. 생성을 클릭합니다.
    4. 다음 조건이 "true" 상태로 변경될 때까지 기다립니다.

      • GCPFilestoreDriverCredentialsRequestControllerAvailable
      • GCPFilestoreDriverNodeServiceControllerAvailable
      • GCPFilestoreDriverControllerServiceControllerAvailable

6.14.4. GCP Filestore 스토리지용 스토리지 클래스 생성

Operator를 설치한 후에는 Google Compute Platform(GCP) Filestore 볼륨의 동적 프로비저닝을 위한 스토리지 클래스를 생성해야 합니다.

사전 요구 사항

  • 실행 중인 OpenShift Container Platform 클러스터에 로그인했습니다.

프로세스

스토리지 클래스를 생성하려면:

  1. 다음 예제 YAML 파일을 사용하여 스토리지 클래스를 만듭니다.

    YAML 파일 예시

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: filestore-csi
    provisioner: filestore.csi.storage.gke.io
    parameters:
      connect-mode: DIRECT_PEERING 
    1
    
      network: network-name 
    2
    
    allowVolumeExpansion: true
    volumeBindingMode: WaitForFirstConsumer
    Copy to Clipboard Toggle word wrap

    1
    공유 VPC의 경우, connect-mode 매개변수를 PRIVATE_SERVICE_ACCESS 로 설정합니다. 공유되지 않는 VPC의 경우 값은 기본 설정인 DIRECT_PEERING 입니다.
    2
    Filestore 인스턴스를 생성할 GCP 가상 사설 클라우드(VPC) 네트워크의 이름을 지정합니다.
  2. Filestore 인스턴스를 생성해야 하는 VPC 네트워크의 이름을 지정합니다.

    Filestore 인스턴스를 생성할 VPC 네트워크를 지정하는 것이 좋습니다. VPC 네트워크가 지정되지 않으면 CSI(Container Storage Interface) 드라이버는 프로젝트의 기본 VPC 네트워크에 인스턴스를 생성하려고 시도합니다.

    IPI 설치에서 VPC 네트워크 이름은 일반적으로 접미사 "-network"가 붙은 클러스터 이름입니다. 하지만 UPI 설치에서는 VPC 네트워크 이름을 사용자가 선택한 값으로 지정할 수 있습니다.

    공유 VPC( connect-mode = PRIVATE_SERVICE_ACCESS )의 경우 네트워크는 전체 VPC 이름이어야 합니다. 예: projects/shared-vpc-name/global/networks/gcp-filestore-network .

    다음 명령을 사용하여 MachineSets 객체를 검사하면 VPC 네트워크 이름을 알아낼 수 있습니다.

    $ oc -n openshift-machine-api get machinesets -o yaml | grep "network:"
                - network: gcp-filestore-network
    (...)
    Copy to Clipboard Toggle word wrap

    이 예에서 이 클러스터의 VPC 네트워크 이름은 "gcp-filestore-network"입니다.

6.14.5. NFS 내보내기 옵션

기본적으로 Filestore 인스턴스는 동일한 Google Cloud 프로젝트와 가상 사설 클라우드(VPC) 네트워크를 공유하는 모든 클라이언트에 루트 수준의 읽기/쓰기 액세스 권한을 부여합니다. 네트워크 파일 시스템(NFS) 내보내기 옵션을 사용하면 이러한 액세스를 특정 IP 범위와 Filestore 인스턴스의 특정 사용자/그룹 ID로 제한할 수 있습니다. 스토리지 클래스를 생성할 때 nfs-export-options-on-create 매개변수를 사용하여 이러한 옵션을 설정할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할을 가진 사용자로 클러스터에 액세스합니다.
  • GCP Filestore CSI 드라이버 운영자와 GCP Filestore CSI 드라이버가 설치되었습니다.

프로세스

  1. 다음 샘플 YAML 파일과 유사한 파일을 사용하여 스토리지 클래스를 만듭니다.

    참고

    스토리지 클래스 생성에 대한 자세한 내용은 GCP Filestore Operator에 대한 스토리지 클래스 생성 섹션을 참조하세요.

    NFS 내보내기 옵션이 있는 예제 스토리지 클래스 YAML 파일

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
     name: SC-name
    provisioner: filestore.csi.storage.gke.io
    parameters:
     connect-mode: DIRECT_PEERING
     network: project-network
     nfs-export-options-on-create: '[ 
    1
    
       {
         "accessMode": "READ_WRITE", 
    2
    
         "squashMode": "NO_ROOT_SQUASH", 
    3
    
         "anonUid": 65534 
    4
    
         "anonGid": 65534 
    5
    
         "ipRanges": [ 
    6
    
           "10.0.0.0/16"
         ]
       }]'
    allowVolumeExpansion: true
    Copy to Clipboard Toggle word wrap

    1
    NFS 내보내기 옵션 매개변수
    2
    액세스 모드 : 내보낸 디렉토리에 대한 읽기 요청만 허용하는 READ_ONLY 또는 읽기 및 쓰기 요청을 모두 허용하는 READ_WRITE . 기본값은 READ_WRITE 입니다.
    3
    스쿼시 모드 : 내보낸 디렉토리에 대한 루트 액세스를 허용하는 NO_ROOT_SQUASH 또는 루트 액세스를 허용하지 않는 ROOT_SQUASH입니다. 기본값은 NO_ROOT_SQUASH 입니다.
    4
    AnonUid : 익명 사용자 ID를 나타내는 정수로 기본값은 65534입니다. AnonUid는 squashMode를 ROOT_SQUASH 로 설정해야만 설정할 수 있습니다. 그렇지 않으면 오류가 발생합니다.
    5
    AnonGid : 익명 그룹 ID를 나타내는 정수로 기본값은 65534입니다. AnonGid는 squashMode를 ROOT_SQUASH 로 설정해야만 설정할 수 있습니다. 그렇지 않으면 오류가 발생합니다.
    6
    IP 범위 : {octet1}.{octet2}.{octet3}.{octet4} 형식의 IPv4 주소 목록 또는 {octet1}.{octet2}.{octet3}.{octet4}/{마스크 크기} 형식의 CIDR 범위 목록으로, 파일 공유를 마운트할 수 있습니다. NfsExportOptions 내부와 외부 모두에서 IP 범위가 겹치는 것은 허용되지 않습니다. 겹치는 경우 오류가 반환됩니다. 모든 NFS 내보내기 옵션 중 각 FileShareConfig 에 대해 허용되는 IP 범위 또는 주소는 64개입니다.

6.14.6. 클러스터 및 GCP Filestore 삭제

일반적으로 클러스터를 파괴하면 OpenShift Container Platform 설치 프로그램은 해당 클러스터에 속한 모든 클라우드 리소스를 삭제합니다. 그러나 Google Compute Platform(GCP) Filestore 리소스의 특수한 특성으로 인해 자동 정리 프로세스가 드물게 모든 리소스를 제거하지 못할 수도 있습니다.

따라서 Red Hat에서는 클러스터 소유의 모든 Filestore 리소스가 제거 프로세스를 통해 삭제되었는지 확인할 것을 권장합니다.

프로세스

모든 GCP Filestore PVC가 삭제되었는지 확인하려면 다음을 수행합니다.

  1. GUI 또는 CLI를 사용하여 Google Cloud 계정에 액세스하세요.
  2. kubernetes-io-cluster-${CLUSTER_ID}=owned 레이블이 있는 모든 리소스를 검색합니다.

    클러스터 ID는 삭제된 클러스터에 고유하므로 해당 클러스터 ID를 가진 리소스가 남아 있지 않습니다.

  3. 남아 있는 리소스가 있는 경우에는 삭제하세요.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat