3.3. 使用 MCG 命令行界面为混合或多云添加存储资源
多云对象网关 (MCG) 简化了跨云供应商和集群的数据生成过程。
添加 MCG 可以使用的后备存储。
根据部署类型,您可以选择以下步骤之一来创建后备存储:
- 有关创建 AWS 支持的后备存储,请参阅 第 3.3.1 节 “创建 AWS 支持的后备存储”
- 有关创建 AWS-STS 支持的后备存储,请参阅 第 3.3.2 节 “创建 AWS-STS 支持的后备存储”
- 有关创建 IBM COS 支持的后备存储,请参考 第 3.3.3 节 “创建 IBM COS 支持的后备存储”
- 有关创建 Azure 支持的后备存储,请参阅 第 3.3.4 节 “创建 Azure 支持的后备存储”
- 有关创建 GCP 支持的后备存储,请参阅 第 3.3.5 节 “创建由 GCP 支持的后备存储”
- 有关创建本地持久性卷支持的后备存储,请参阅 第 3.3.6 节 “创建由本地持久性卷支持的后备存储”
对于 VMware 部署,请跳至 第 3.4 节 “创建兼容 s3 的多云对象网关后备存储” 以了解更多详细信息。
3.3.1. 创建 AWS 支持的后备存储
先决条件
下载多云对象网关(MCG)命令行界面。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcg
注意指定使用订阅管理器启用存储库的适当架构。例如,如果是 IBM Z,请使用以下命令:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create aws-s3 <backingstore_name> --access-key=<AWS ACCESS KEY> --secret-key=<AWS SECRET ACCESS KEY> --target-bucket <bucket-name> -n openshift-storage
<backingstore_name>
- 后备储存的名称。
<AWS ACCESS KEY>
和<AWS SECRET ACCESS KEY>
- 您创建的 AWS 访问密钥 ID 和 secret 访问密钥。
<bucket-name>
现有 AWS 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "aws-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-aws-resource"
使用 YAML 添加存储资源
使用凭证创建 secret:
apiVersion: v1 kind: Secret metadata: name: <backingstore-secret-name> namespace: openshift-storage type: Opaque data: AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64> AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>
<AWS ACCESS KEY>
和<AWS SECRET ACCESS KEY>
-
使用 Base64 提供并编码您自己的 AWS 访问密钥 ID 和 secret 访问密钥,并使用结果代替
<AWS ACCESS KEY ID ENCODED IN BASE64>
和<AWS SECRET ACCESS KEY ENCODED IN BASE64>
。 <backingstore-secret-name>
- 上一步中创建的后备存储 secret 的名称。
为特定的后备存储应用以下 YAML:
apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: bs namespace: openshift-storage spec: awsS3: secret: name: <backingstore-secret-name> namespace: openshift-storage targetBucket: <bucket-name> type: aws-s3
<bucket-name>
- 现有 AWS 存储桶名称。
<backingstore-secret-name>
- 上一步中创建的后备存储 secret 的名称。
3.3.2. 创建 AWS-STS 支持的后备存储
Amazon Web Services Security Token Service (AWS STS)是一个 AWS 功能,它是一种使用短期凭证进行身份验证的方法。创建 AWS-STS 支持的后备存储涉及以下内容:
- 使用脚本创建 AWS 角色,这有助于获取角色会话的临时安全凭证
- 在 AWS STS OpenShift 集群中安装 OpenShift Data Foundation Operator
- 在 AWS STS OpenShift 集群中创建后备存储
3.3.2.1. 使用脚本创建 AWS 角色
您需要创建一个角色,并在安装 OpenShift Data Foundation 操作器时传递角色 Amazon 资源名称(ARN)。
先决条件
- 使用 AWS STS 配置 Red Hat OpenShift Container Platform 集群。如需更多信息,请参阅配置 AWS 集群以使用短期凭证。
流程
使用与 OpenShift Data Foundation 上 Multicloud Object Gateway (MCG)的 OpenID Connect (OIDC)配置匹配的脚本创建一个 AWS 角色。
以下示例显示了创建角色所需的详情:
{ “Version”: “2012-10-17", “Statement”: [ { “Effect”: “Allow”, “Principal”: { “Federated”: “arn:aws:iam::123456789123:oidc-provider/mybucket-oidc.s3.us-east-2.amazonaws.com” }, “Action”: “sts:AssumeRoleWithWebIdentity”, “Condition”: { “StringEquals”: { “mybucket-oidc.s3.us-east-2.amazonaws.com:sub”: [ “system:serviceaccount:openshift-storage:noobaa”, “system:serviceaccount:openshift-storage:noobaa-endpoint” ] } } } ] }
其中
123456789123
- 是 AWS 帐户 ID
MyBucket
- 是存储桶名称(使用公共存储桶配置)
us-east-2
- 是 AWS 区域
openshift-storage
是命名空间名称
脚本示例
#!/bin/bash set -x # This is a sample script to help you deploy MCG on AWS STS cluster. # This script shows how to create role-policy and then create the role in AWS. # For more information see: https://docs.openshift.com/rosa/authentication/assuming-an-aws-iam-role-for-a-service-account.html # WARNING: This is a sample script. You need to adjust the variables based on your requirement. # Variables : # user variables - REPLACE these variables with your values: ROLE_NAME="<role-name>" # role name that you pick in your AWS account NAMESPACE="<namespace>" # namespace name where MCG is running. For OpenShift Data Foundation, it is openshift-storage. # MCG variables SERVICE_ACCOUNT_NAME_1="<service-account-name-1>" # The service account name of statefulset core and deployment operator (MCG operator) SERVICE_ACCOUNT_NAME_2="<service-account-name-2>" # The service account name of deployment endpoint (MCG endpoint) # AWS variables # Make sure these values are not empty (AWS_ACCOUNT_ID, OIDC_PROVIDER) # AWS_ACCOUNT_ID is your AWS account number AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text) # If you want to create the role before using the cluster, replace this field too. # The OIDC provider is in the structure: # 1) <OIDC-bucket>.s3.<aws-region>.amazonaws.com. for OIDC bucket configurations are in an S3 public bucket # 2) `<characters>.cloudfront.net` for OIDC bucket configurations in an S3 private bucket with a public CloudFront distribution URL OIDC_PROVIDER=$(oc get authentication cluster -ojson | jq -r .spec.serviceAccountIssuer | sed -e "s/^https:\/\///") # the permission (S3 full access) POLICY_ARN_STRINGS="arn:aws:iam::aws:policy/AmazonS3FullAccess" # Creating the role (with AWS command line interface) read -r -d '' TRUST_RELATIONSHIP <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_PROVIDER}:sub": [ "system:serviceaccount:${NAMESPACE}:${SERVICE_ACCOUNT_NAME_1}", "system:serviceaccount:${NAMESPACE}:${SERVICE_ACCOUNT_NAME_2}" ] } } } ] } EOF echo "${TRUST_RELATIONSHIP}" > trust.json aws iam create-role --role-name "$ROLE_NAME" --assume-role-policy-document file://trust.json --description "role for demo" while IFS= read -r POLICY_ARN; do echo -n "Attaching $POLICY_ARN ... " aws iam attach-role-policy \ --role-name "$ROLE_NAME" \ --policy-arn "${POLICY_ARN}" echo "ok." done <<< "$POLICY_ARN_STRINGS"
3.3.2.2. 在 AWS STS OpenShift 集群中安装 OpenShift Data Foundation Operator
先决条件
- 使用 AWS STS 配置 Red Hat OpenShift Container Platform 集群。如需更多信息,请参阅配置 AWS 集群以使用短期凭证。
- 使用与 OpenID Connect (OIDC)配置匹配的脚本创建一个 AWS 角色。如需更多信息,请参阅使用 脚本创建 AWS 角色。
流程
从 Operator Hub 安装 OpenShift Data Foundation Operator。
- 在安装过程中,在 ARN Details 字段中添加角色 ARN。
- 确保 Update approval 字段设置为 Manual。
3.3.2.3. 创建新的 AWS STS 后备存储
先决条件
- 使用 AWS STS 配置 Red Hat OpenShift Container Platform 集群。如需更多信息,请参阅配置 AWS 集群以使用短期凭证。
- 使用与 OpenID Connect (OIDC)配置匹配的脚本创建一个 AWS 角色。如需更多信息,请参阅使用 脚本创建 AWS 角色。
- 安装 OpenShift Data Foundation Operator。如需更多信息,请参阅在 AWS STS OpenShift 集群上安装 OpenShift Data Foundation Operator。
流程
安装多云对象网关(MCG)。
它使用简短的凭据与默认后备存储一起安装。
在 MCG 系统就绪后,您可以使用以下 MCG 命令行界面命令创建类型为
aws-sts-s3
类型的后备存储:$ noobaa backingstore create aws-sts-s3 <backingstore-name> --aws-sts-arn=<aws-sts-role-arn> --region=<region> --target-bucket=<target-bucket>
其中
- backingstore-name
- 后备存储的名称
- aws-sts-role-arn
- 将假定角色的 AWS STS 角色 ARN
- region
- AWS 存储桶区域
- target-bucket
- 云上的目标存储桶名称
3.3.3. 创建 IBM COS 支持的后备存储
先决条件
下载多云对象网关(MCG)命令行界面。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcg
注意指定使用订阅管理器启用存储库的适当架构。例如,
- 对于 IBM Power,使用以下命令:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
- 对于 IBM Z,使用以下命令:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create ibm-cos <backingstore_name> --access-key=<IBM ACCESS KEY> --secret-key=<IBM SECRET ACCESS KEY> --endpoint=<IBM COS ENDPOINT> --target-bucket <bucket-name> -n openshift-storage
<backingstore_name>
- 后备储存的名称。
<IBM ACCESS KEY>
,<IBM SECRET ACCESS KEY>
, 和<IBM COS ENDPOINT>
IBM 访问密钥 ID、secret 访问密钥和适当的区域端点,对应于现有 IBM 存储桶的位置。
要在 IBM 云中生成上述密钥,您必须在为您的目标存储桶创建服务凭证时包含 HMAC 凭证。
<bucket-name>
现有 IBM 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "ibm-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-ibm-resource"
使用 YAML 添加存储资源
使用凭证创建 secret:
apiVersion: v1 kind: Secret metadata: name: <backingstore-secret-name> namespace: openshift-storage type: Opaque data: IBM_COS_ACCESS_KEY_ID: <IBM COS ACCESS KEY ID ENCODED IN BASE64> IBM_COS_SECRET_ACCESS_KEY: <IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
<IBM COS ACCESS KEY ID ENCODED IN BASE64>
和<IBM COS SECRET ACCESS KEY ENCODED IN BASE64>
- 使用 Base64 提供并编码您自己的 IBM COS 访问密钥 ID 和 secret 访问密钥,并使用这些属性的结果来代替这些属性。
<backingstore-secret-name>
- 后备存储 secret 的名称。
为特定的后备存储应用以下 YAML:
apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: bs namespace: openshift-storage spec: ibmCos: endpoint: <endpoint> secret: name: <backingstore-secret-name> namespace: openshift-storage targetBucket: <bucket-name> type: ibm-cos
<bucket-name>
- 现有的 IBM COS 存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<endpoint>
- 与现有 IBM 存储桶名称的位置对应的区域端点。此参数指示 MCG 关于用于其后备存储的端点,然后是数据存储和管理。
<backingstore-secret-name>
- 上一步中创建的 secret 的名称。
3.3.4. 创建 Azure 支持的后备存储
先决条件
下载多云对象网关(MCG)命令行界面。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcg
注意指定使用订阅管理器启用存储库的适当架构。例如,如果是 IBM Z,请使用以下命令:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create azure-blob <backingstore_name> --account-key=<AZURE ACCOUNT KEY> --account-name=<AZURE ACCOUNT NAME> --target-blob-container <blob container name> -n openshift-storage
<backingstore_name>
- 后备储存的名称。
<AZURE ACCOUNT KEY>
和<AZURE ACCOUNT NAME>
- 您为此创建的 AZURE 帐户密钥和帐户名称。
<blob container name>
现有的 Azure blob 容器名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "azure-resource" INFO[0002] ✅ Created: Secret "backing-store-secret-azure-resource"
使用 YAML 添加存储资源
使用凭证创建 secret:
apiVersion: v1 kind: Secret metadata: name: <backingstore-secret-name> type: Opaque data: AccountName: <AZURE ACCOUNT NAME ENCODED IN BASE64> AccountKey: <AZURE ACCOUNT KEY ENCODED IN BASE64>
<AZURE ACCOUNT NAME ENCODED IN BASE64>
和<AZURE ACCOUNT KEY ENCODED IN BASE64>
- 使用 Base64 提供并编码您自己的 Azure 帐户名称和帐户密钥,并分别使用这些属性代替这些属性。
<backingstore-secret-name>
- 唯一的后备存储 secret 名称。
为特定的后备存储应用以下 YAML:
apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: bs namespace: openshift-storage spec: azureBlob: secret: name: <backingstore-secret-name> namespace: openshift-storage targetBlobContainer: <blob-container-name> type: azure-blob
<blob-container-name>
- 现有的 Azure blob 容器名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<backingstore-secret-name>
- 使用上一步中创建的 secret 的名称。
3.3.5. 创建由 GCP 支持的后备存储
先决条件
下载多云对象网关(MCG)命令行界面。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcg
注意指定使用订阅管理器启用存储库的适当架构。例如,如果是 IBM Z,请使用以下命令:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面
在 MCG 命令行界面中运行以下命令:
noobaa backingstore create google-cloud-storage <backingstore_name> --private-key-json-file=<PATH TO GCP PRIVATE KEY JSON FILE> --target-bucket <GCP bucket name> -n openshift-storage
<backingstore_name>
- 后备储存的名称。
<PATH TO GCP PRIVATE KEY JSON FILE>
- 为此目的创建的 GCP 私钥的路径。
<GCP bucket name>
现有的 GCP 对象存储存储桶名称。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Created: BackingStore "google-gcp" INFO[0002] ✅ Created: Secret "backing-store-google-cloud-storage-gcp"
使用 YAML 添加存储资源
使用凭证创建 secret:
apiVersion: v1 kind: Secret metadata: name: <backingstore-secret-name> type: Opaque data: GoogleServiceAccountPrivateKeyJson: <GCP PRIVATE KEY ENCODED IN BASE64>
<GCP PRIVATE KEY ENCODED IN BASE64>
- 使用 Base64 提供并编码您自己的 GCP 服务帐户私钥,并将结果用于此属性。
<backingstore-secret-name>
- 后备存储 secret 的唯一名称。
为特定的后备存储应用以下 YAML:
apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: bs namespace: openshift-storage spec: googleCloudStorage: secret: name: <backingstore-secret-name> namespace: openshift-storage targetBucket: <target bucket> type: google-cloud-storage
<target bucket>
- 现有的 Google 存储桶。此参数告知 MCG 将哪一个存储桶用作其后备存储的目标存储桶,以及随后数据存储和管理。
<backingstore-secret-name>
- 上一步中创建的 secret 的名称。
3.3.6. 创建由本地持久性卷支持的后备存储
先决条件
下载多云对象网关(MCG)命令行界面。
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcg
注意指定适当的架构,以使用订阅管理器启用存储库。
- 对于 IBM Power,使用以下命令:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
- 对于 IBM Z,使用以下命令:
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-s390x-rpms
另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages的 OpenShift Data Foundation RPM 安装 MCG 软件包
注意根据您的架构选择正确的产品变体。
流程
使用 MCG 命令行界面添加存储资源
在 MCG 命令行界面中运行以下命令:
注意此命令必须从
openshift-storage
命名空间内运行。$ noobaa -n openshift-storage backingstore create pv-pool <backingstore_name> --num-volumes <NUMBER OF VOLUMES> --pv-size-gb <VOLUME SIZE> --request-cpu <CPU REQUEST> --request-memory <MEMORY REQUEST> --limit-cpu <CPU LIMIT> --limit-memory <MEMORY LIMIT> --storage-class <LOCAL STORAGE CLASS>
使用 YAML 添加存储资源
为特定的后备存储应用以下 YAML:
apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: <backingstore_name> namespace: openshift-storage spec: pvPool: numVolumes: <NUMBER OF VOLUMES> resources: requests: storage: <VOLUME SIZE> cpu: <CPU REQUEST> memory: <MEMORY REQUEST> limits: cpu: <CPU LIMIT> memory: <MEMORY LIMIT> storageClass: <LOCAL STORAGE CLASS> type: pv-pool
<backingstore_name>
- 后备储存的名称。
<NUMBER OF VOLUMES>
- 要创建的卷数量。请注意,增加卷数量可向上扩展存储。
<VOLUME SIZE>
- 每个卷所需的大小(以 GB 为单位)。
<CPU REQUEST>
-
保证的 CPU 请求,以 CPU 单元
m
为单位。 <MEMORY REQUEST>
- 保证请求的内存量。
<CPU LIMIT>
-
可消耗的最大 CPU 量,以 CPU 单元
m
为单位。 <MEMORY LIMIT>
- 可消耗的最大内存量。
<LOCAL STORAGE CLASS>
本地存储类名称,建议使用
ocs-storagecluster-ceph-rbd
。输出结果类似如下:
INFO[0001] ✅ Exists: NooBaa "noobaa" INFO[0002] ✅ Exists: BackingStore "local-mcg-storage"