Skip to main content
此產品有較新版本可以使用。
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

針對GCP後端設定CVS

貢獻者

瞭Cloud Volumes Service 解如何使用所提供的範例組態、將適用於Google Cloud Platform(GCP)的NetApp功能(CVS)設定為Astra Trident安裝的後端。

瞭解Astra Trident對CVS for GCP的支援

Astra Trident支援預設CVS服務類型為on的磁碟區 "GCP"。無論CVS服務類型允許的最小值為何、Astra Trident都不支援低於100 GiB的CVS磁碟區。因此、如果要求的磁碟區小於最小大小、Trident會自動建立100 GiB磁碟區。

您需要的產品

以設定及使用 "適用於 Google Cloud Cloud Volumes Service" 後端、您需要下列項目:

  • 使用NetApp CVS設定的Google Cloud帳戶

  • Google Cloud帳戶的專案編號

  • Google Cloud服務帳戶 netappcloudvolumes.admin 角色

  • CVS服務帳戶的API金鑰檔

後端組態選項

如需後端組態選項、請參閱下表:

參數 說明 預設

version

永遠為1

storageDriverName

儲存驅動程式名稱

「GCP-CVS」

backendName

自訂名稱或儲存後端

驅動程式名稱+「_」+ API金鑰的一部分

storageClass

儲存類型:任您選擇 hardware (效能最佳化)或 software (CVS服務類型)

projectNumber

Google Cloud帳戶專案編號。此值可在Google Cloud入口網站的首頁找到。

apiRegion

CVS帳戶區域。這是後端配置磁碟區的區域。

apiKey

的Google Cloud服務帳戶API金鑰 netappcloudvolumes.admin 角色:其中包含Google Cloud服務帳戶私密金鑰檔案(逐字複製到後端組態檔)的JSON-格式內容。

proxyURL

Proxy URL(如果需要代理伺服器才能連線至CVS帳戶)。Proxy伺服器可以是HTTP Proxy或HTTPS Proxy。對於HTTPS Proxy、會跳過憑證驗證、以允許在Proxy伺服器中使用自我簽署的憑證。不支援已啟用驗證的Proxy伺服器。

nfsMountOptions

精細控制NFS掛載選項。

"nfsves=3"

limitVolumeSize

如果要求的磁碟區大小高於此值、則資源配置失敗

""(預設不強制執行)

serviceLevel

新磁碟區的CVS服務層級。這些值包括「標準」、「高級」和「極端」。

"標準"

network

用於CVS磁碟區的GCP網路

「預設」

debugTraceFlags

疑難排解時要使用的偵錯旗標。範例: \{"api":false, "method":true}。除非您正在進行疑難排解並需要詳細的記錄傾印、否則請勿使用此功能。

null

如果使用共享的VPC網路、兩者都是 projectNumberhostProjectNumber 必須指定。在這種情況下、 projectNumber 是服務專案、以及 hostProjectNumber 是主機專案。

apiRegion 代表Astra Trident建立CVS磁碟區的GCP區域。建立跨區域Kubernetes叢集時、會在中建立CVS磁碟區 apiRegion 可用於在多個GCP區域的節點上排程的工作負載。請注意、跨區域流量會產生額外成本。

註
  • 若要啟用跨區域存取、您的StorageClass定義適用於 allowedTopologies 必須包含所有區域。例如:

    - key: topology.kubernetes.io/region
      values:
      - us-east1
      - europe-west1
  • storageClass 是選用參數、可用來選取所需的參數 "CVS服務類型"。您可以從基礎CVS服務類型中進行選擇 (storageClass=software)或CVS效能服務類型 (storageClass=hardware)、這是Trident預設使用的功能。請務必指定 apiRegion 提供各自的CVS storageClass 在後端定義中。

警告 Astra Trident與Google Cloud上的基礎CVS服務類型整合、是一項*測試版功能、不適用於正式作業工作負載。Trident 完全支援 CVS效能服務類型、並依預設使用。

每個後端都會在單一Google Cloud區域中配置磁碟區。若要在其他區域建立磁碟區、您可以定義其他後端。

您可以在組態檔的特殊區段中指定下列選項、以控制預設的每個Volume佈建方式。請參閱下列組態範例。

參數 說明 預設

exportRule

新磁碟區的匯出規則

「0.00.0.0/0」

snapshotDir

存取 .snapshot 目錄

"假"

snapshotReserve

保留給快照的磁碟區百分比

""(接受CVS預設值為0)

size

新磁碟區的大小

「100Gi」

exportRule 值必須是以逗號分隔的清單、以CIDR表示法列出所有的IPv4位址或IPv4子網路組合。

註 針對在CVS Google Cloud後端上建立的所有磁碟區、Trident會在儲存資源池上的所有標籤配置時複製到儲存磁碟區。儲存管理員可以定義每個儲存資源池的標籤、並將儲存資源池中建立的所有磁碟區分組。這是根據後端組態中提供的一組可自訂標籤、方便區分磁碟區的方法。

範例1:最低組態

這是絕對最低的後端組態。

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "apiRegion": "us-west2",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "<id_value>",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    }
}

範例2:基礎CVS服務類型組態

此範例顯示使用基本CVS服務類型的後端定義、此服務類型適用於一般用途的工作負載、提供輕度/中度效能、以及高分區可用度。

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "storageClass": "software",
    "apiRegion": "us-east4",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "<id_value>",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    }
}

範例3:單一服務層級組態

此範例顯示後端檔案、可將相同層面套用至Google Cloud us-west2區域中所有由Astra Trident建立的儲存設備。此範例也會顯示的用途 proxyURL 在後端組態檔中。

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "apiRegion": "us-west2",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "<id_value>",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    },
    "proxyURL": "http://proxy-server-hostname/",
    "nfsMountOptions": "vers=3,proto=tcp,timeo=600",
    "limitVolumeSize": "10Ti",
    "serviceLevel": "premium",
    "defaults": {
        "snapshotDir": "true",
        "snapshotReserve": "5",
        "exportRule": "10.0.0.0/24,10.0.1.0/24,10.0.2.100",
        "size": "5Ti"
    }
}

範例4:虛擬儲存池組態

此範例顯示使用虛擬儲存資源池設定的後端定義檔案 StorageClasses 請回頭參考。

在下圖所示的範例後端定義檔中、會針對所有設定的儲存資源池設定特定的預設值 snapshotReserve 5%和 exportRule 至0.00.0/0。虛擬儲存集區是在中定義 storage 區段。在此範例中、每個個別的儲存資源池都會自行設定 `serviceLevel`和某些資源池會覆寫預設值。

{
    "version": 1,
    "storageDriverName": "gcp-cvs",
    "projectNumber": "012345678901",
    "apiRegion": "us-west2",
    "apiKey": {
        "type": "service_account",
        "project_id": "my-gcp-project",
        "private_key_id": "<id_value>",
        "private_key": "
        -----BEGIN PRIVATE KEY-----
        <key_value>
        -----END PRIVATE KEY-----\n",
        "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com",
        "client_id": "123456789012345678901",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com"
    },
    "nfsMountOptions": "vers=3,proto=tcp,timeo=600",

    "defaults": {
        "snapshotReserve": "5",
        "exportRule": "0.0.0.0/0"
    },

    "labels": {
        "cloud": "gcp"
    },
    "region": "us-west2",

    "storage": [
        {
            "labels": {
                "performance": "extreme",
                "protection": "extra"
            },
            "serviceLevel": "extreme",
            "defaults": {
                "snapshotDir": "true",
                "snapshotReserve": "10",
                "exportRule": "10.0.0.0/24"
            }
        },
        {
            "labels": {
                "performance": "extreme",
                "protection": "standard"
            },
            "serviceLevel": "extreme"
        },
        {
            "labels": {
                "performance": "premium",
                "protection": "extra"
            },
            "serviceLevel": "premium",
            "defaults": {
                "snapshotDir": "true",
                "snapshotReserve": "10"
            }
        },

        {
            "labels": {
                "performance": "premium",
                "protection": "standard"
            },
            "serviceLevel": "premium"
        },

        {
            "labels": {
                "performance": "standard"
            },
            "serviceLevel": "standard"
        }
    ]
}

下列StorageClass定義係指上述儲存資源池。使用 parameters.selector 欄位中、您可以為每個StorageClass指定用於裝載Volume的虛擬集區。該磁碟區會在所選的資源池中定義各個層面。

第一個StorageClass (cvs-extreme-extra-protection)對應至第一個虛擬儲存資源池。這是唯一提供極致效能、快照保留率為10%的資源池。最後一個StorageClass (cvs-extra-protection)撥出提供快照保留10%的任何儲存資源池。Astra Trident決定選取哪個虛擬儲存池、並確保符合快照保留需求。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extreme-extra-protection
provisioner: netapp.io/trident
parameters:
  selector: "performance=extreme; protection=extra"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extreme-standard-protection
provisioner: netapp.io/trident
parameters:
  selector: "performance=premium; protection=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-premium-extra-protection
provisioner: netapp.io/trident
parameters:
  selector: "performance=premium; protection=extra"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-premium
provisioner: netapp.io/trident
parameters:
  selector: "performance=premium; protection=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-standard
provisioner: netapp.io/trident
parameters:
  selector: "performance=standard"
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cvs-extra-protection
provisioner: netapp.io/trident
parameters:
  selector: "protection=extra"
allowVolumeExpansion: true

接下來呢?

建立後端組態檔之後、請執行下列命令:

tridentctl create backend -f <backend-file>

如果後端建立失敗、表示後端組態有問題。您可以執行下列命令來檢視記錄、以判斷原因:

tridentctl logs

識別並修正組態檔的問題之後、您可以再次執行create命令。