IBM Cloud Docs
VPC: 設定 IBM Cloud Object Storage 的授權 IP 位址

VPC: 設定 IBM Cloud Object Storage 的授權 IP 位址

Virtual Private Cloud

您可以授權「VPC 雲端服務端點」來源 IP 位址存取 IBM Cloud Object Storage 儲存區。 當您設定授權 IP 位址時,只能從那些 IP 位址存取儲存區資料; 例如,在應用程式 Pod 中。

最低必要許可權
IBM Cloud Kubernetes Service 服務的 管理員 服務存取角色。
IBM Cloud Object Storage 服務的 撰寫者 服務存取角色。
  1. 遵循指示來安裝 ibmc Helm 外掛程式。 請務必安裝 ibm-object-storage-plugin,並將 bucketAccessPolicy 選項設為 true

  2. 為 IBM Cloud Object Storage 實例建立一個 Manager HMAC 服務認證及一個 Writer HMAC 服務認證。

  3. 將 IBM Cloud Object Storage Manager 認證中的 apikey 編碼為 base64。

    echo -n "<cos_manager_apikey>" | base64
    
  4. 將 IBM Cloud Object Storage Writer 認證中的 access-keysecret-key 編碼為 base64。

    echo -n "<cos_writer_access-key>" | base64
    echo -n "<cos_writer_secret-key>" | base64
    
  5. 使用您編碼的值建立密鑰配置檔。 對於 access-keysecret-key,從您建立的 Writer HMAC 認證中輸入 base64 已編碼 access-keysecret-key。 對於 res-conf-apikey,請從管理程式 HMAC 認證中輸入 base64 編碼 apikey

    apiVersion: v1
    kind: Secret
    metadata:
        name: <secret_name>
      type: ibm/ibmc-s3fs
      data:
    access-key: # Enter your base64 encoded COS Writer access-key
    secret-key: # Enter your base64 encoded COS Writer secret-key
    res-conf-apikey: # Enter your base64 encoded COS Manager api-key
    
  6. 在叢集裡建立密碼。

    kubectl create -f secret.yaml
    
  7. 驗證已建立密鑰。

    kubectl get secrets
    
  8. 建立使用您所建立密碼的 PVC。 設定 ibm.io/auto-create-bucket: "true"ibm.io/auto_cache: "true" 註釋,以自動建立快取資料的儲存區。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
        name: <pvc_name>
    annotations:
      ibm.io/auto-create-bucket: "true"
      ibm.io/auto-delete-bucket: "false"
      ibm.io/auto_cache: "true"
      ibm.io/bucket: "<bucket_name>"
      ibm.io/secret-name: "<secret_name>"
      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.
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 8Gi
      storageClassName: ibmc-s3fs-standard-regional
      volumeMode: Filesystem
    
  9. 取得 VPC 的雲端服務端點來源 IP 位址清單。

    1. 取得 VPC 的清單。

      ibmcloud is vpcs
      
    2. 取得 VPC 的詳細資料,並記下雲端服務端點來源 IP 位址。

      ibmcloud is vpc <vpc_ID>
      

      輸出範例

      ...                                              
      Cloud Service Endpoint source IP addresses:    Zone         Address      
                                                  us-south-1   10.249.XXX.XX      
                                                  us-south-2   10.249.XXX.XX     
                                                  us-south-3   10.249.XXX.XX
      
  10. 驗證已在 IBM Cloud Object Storage 儲存區中授權 VPC 的「雲端服務端點」來源 IP 位址。

  11. 從 IBM Cloud Object Storage 資源清單 中,選取 IBM Cloud Object Storage 實例,然後選取您在 PVC 中指定的儲存區。

  12. 選取 存取原則 > 授權 IP,並驗證是否顯示 VPC 的「雲端服務端點」來源 IP 位址。

您無法從主控台讀取或寫入儲存區。 您只能從叢集上的應用程式 Pod 內存取儲存區。

  1. 建立參照您所建立之 PVC 的部署 YAML

  2. 在叢集裡建立應用程式。

kubectl create -f app.yaml
  1. 驗證您的應用程式 Pod 是 Running
kubectl get pods | grep <app_name>
  1. 驗證磁區已裝載,且您可以讀取及寫入 COS 儲存區。

  2. 登入應用程式 Pod。

    kubectl exec -it <pod_name> bash
    
  3. 驗證 COS 儲存區已從應用程式 Pod 裝載,且您可以讀取及寫入 COS 儲存區。 執行 disk free df 指令,以查看系統中的可用磁碟。 COS 儲存區會顯示您在 PVC 中指定的 s3fs 檔案系統類型及裝載路徑。

    df
    

    在此範例中,COS 儲存區裝載於 /cos-vpc

    Filesystem        1K-blocks    Used    Available Use% Mounted on
    overlay           102048096 9071556     87786140  10% /
    tmpfs                 65536       0        65536   0% /dev
    tmpfs               7565792       0      7565792   0% /sys/fs/cgroup
    shm                   65536       0        65536   0% /dev/shm
    /dev/vda2         102048096 9071556     87786140  10% /etc/hosts
    s3fs           274877906944       0 274877906944   0% /cos-vpc
    tmpfs               7565792      44      7565748   1% /run/secrets/kubernetes.io/serviceaccount
    tmpfs               7565792       0      7565792   0% /proc/acpi
    tmpfs               7565792       0      7565792   0% /proc/scsi
    tmpfs               7565792       0      7565792   0% /sys/firmware
    
  4. 將目錄切換至 COS 儲存區裝載所在的目錄。 在此範例中,儲存區裝載於 /cos-vpc

    cd cos-vpc
    
  5. test.txt 檔案寫入 COS 儲存區並列出檔案,以驗證是否已寫入該檔案。

    touch test.txt && ls
    
  6. 移除檔案並登出應用程式 Pod。

    rm test.txt && exit