共有リソースの使用
Shared Resources CSI Driver Operator の使用
概要
第1章 Shared Resource CSI Driver Operator リンクのコピーリンクがクリップボードにコピーされました!
ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装により、サードパーティープロバイダーは、Kubernetes のコアコードを変更することなく、標準インターフェイスを使用してストレージプラグインを提供できます。CSI Operator は、in-tree のボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを Builds ユーザーに提供します。
Shared Resource CSI Driver は特殊なタイプの CSI ドライバーです。これを使用すると、クラスター管理者は csi ボリュームタイプを使用して、namespace 間で Secret オブジェクトと ConfigMap オブジェクトをセキュアに共有できます。Shared Resource CSI Driver は、インラインの一時ボリュームをプロビジョニングし、Pod と OpenShift Container Platform Builds がこれらの共有リソースを使用できるようにします。
Shared Resource CSI Driver は、次の種類のカスタムリソースをサポートしています。
-
Secretオブジェクトを共有するためのSharedSecretカスタムリソース -
ConfigMapオブジェクトを共有するためのSharedConfigMapカスタムリソース
1.1. namespace 間での Secret オブジェクトの共有 リンクのコピーリンクがクリップボードにコピーされました!
Secret オブジェクトは、パスワード、OAuth トークン、SSH 鍵などの機密情報を保存および管理するために使用されます。SharedSecret カスタムリソース (CR) を使用すると、Secret オブジェクトを手動で複製することなく、クラスター内の異なる namespace 間でオブジェクトをセキュアに共有できます。Secret オブジェクトを共有すると、機密データの情報源が一元化され、許可された namespace がそのデータに確実にアクセスできるようになります。
1.1.1. SharedSecret カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
SharedSecret カスタムリソース (CR) を作成すると、namespace 間で Secret オブジェクトを共有できます。
前提条件
-
他の namespace で共有する
Secretオブジェクトを作成した。Secretオブジェクトを作成するには、「Secret の作成」を参照してください。 - クラスターにサブスクライブし、Insights Operator を通じてエンタイトルメントキーを同期した。
次の操作を実行するための権限がある。
-
クラスタースコープレベルで
sharedsecrets.sharedresource.openshift.ioCR を作成する。 -
SharedSecretCR 用のClusterRoleオブジェクトを作成する。 -
Shared Resource CSI Driver の
RoleおよびRoleBindingオブジェクトを作成する。 - ユーザーを制御するために、クラスター内の namespace 全体のロールとロールバインディングを管理する。
-
Pod によって指定されたサービスアカウントが、
SharedSecretCR を使用して、Secretオブジェクトを参照する CSI ボリュームをマウントできるように、ロールとロールバインディングを管理する。 -
共有する
Secretオブジェクトが含まれている namespace にアクセスする。
-
クラスタースコープレベルで
手順
次の設定例を使用して、Shared Resource CSI Driver に
SharedSecretオブジェクトへのアクセス権を付与するRoleオブジェクトとRoleBindingオブジェクトを作成します。Roleオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchapiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RoleCR の名前。
RoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement2 subjects: - kind: ServiceAccount name: csi-driver-shared-resource3 namespace: openshift-buildsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の設定例を使用して、
SharedSecretCR を作成します。apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: shared-test-secret spec: secretRef: name: test-secret namespace: <name_of_the_source_namespace>apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: shared-test-secret1 spec: secretRef: name: test-secret namespace: <name_of_the_source_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<name_of_the_source_namespace>は、SharedSecretCR の名前に置き換えます。
次の設定例を使用して、参照される共有リソースを使用するための RBAC 権限を付与する
ClusterRoleオブジェクトを作成します。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-shared-test-secret rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - shared-test-secret verbs: - useapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-shared-test-secret1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - shared-test-secret verbs: - useCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterRoleCR の名前。
1.1.2. Pod での SharedSecret カスタムリソースの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod から SharedSecret カスタムリソース (CR) にアクセスするには、サービスアカウントにロールベースのアクセス制御 (RBAC) 権限を付与します。
前提条件
-
クラスター内の namespace 間で共有する
Secretオブジェクト用のSharedSecretCR インスタンスを作成した。 次の操作を実行するための権限がある。
-
oc adm policy who-can use <sharedsecret_identifier>コマンドを実行して、サービスアカウントがSharedSecretCR を使用できるかどうか、およびサービスアカウントが namespace にリストされるかどうかを確認する。 -
Pod のサービスアカウントが
csiボリュームを使用できることを確認する。ユーザーとして Pod を作成した場合は、ユーザーがcsiボリュームを使用できることを確認する。
-
最後の 2 つの前提条件を満たせない場合は、クラスター管理者に必要な RBAC 権限を設定してもらうことで、サービスアカウントに SharedSecret CR の使用を許可できるようになります。
手順
ロールに関連付けられた
RoleBindingオブジェクトをクラスター内に作成し、共有リソースを使用する権限をサービスアカウントに付与します。次の設定例を参照してください。apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-secret namespace: app-namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-secret subjects: - kind: ServiceAccount name: <service_account_name>apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-secret1 namespace: app-namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-secret subjects: - kind: ServiceAccount name: <service_account_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 共有リソース
csiドライバーを、csiボリュームを受け入れる Pod またはその他のリソースにマウントします。次の設定例を参照してください。apiVersion: v1 kind: Pod metadata: name: example-shared-secret namespace: <app_namespace> spec: ... serviceAccountName: default volumes: - name: shared-secret csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedSecret: shared-test-secretapiVersion: v1 kind: Pod metadata: name: example-shared-secret namespace: <app_namespace>1 spec: ... serviceAccountName: default volumes: - name: shared-secret csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedSecret: shared-test-secret2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要sharedSecret属性の値がSharedSecretインスタンスの名前と一致しない場合、Pod は起動に失敗します。
1.2. namespace 間での ConfigMap オブジェクトの共有 リンクのコピーリンクがクリップボードにコピーされました!
ConfigMap オブジェクトには、アプリケーションの URL や機能のフラグなど、機密情報でない設定データが格納されます。SharedConfigMap カスタムリソース (CR) を使用すると、ConfigMap オブジェクトを手動で複製することなく、クラスター内の複数の namespace 間でオブジェクトをセキュアに共有できます。ConfigMap オブジェクトを共有することで、設定データの情報源が一元化され、クラスター全体の一貫性が確保されます。
1.2.1. SharedConfigMap カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
SharedConfigMap カスタムリソース (CR) インスタンスを作成すると、namespace 間で ConfigMap オブジェクトを共有できます。
前提条件
-
他の namespace で共有する
ConfigMapオブジェクトを作成した。ConfigMapオブジェクトを作成するには、「入力シークレットおよび ConfigMap の追加」を参照してください。 次の操作を実行するための権限がある。
-
クラスタースコープレベルで
sharedconfigmaps.sharedresource.openshift.ioCR を作成する。 -
SharedConfigMapCR のClusterRoleオブジェクトを作成する。 -
Shared Resource Container Storage Interface (CSI) Driver の
RoleおよびRoleBindingオブジェクトを作成する。 - インスタンスを取得、リスト表示、監視できるユーザーを制御するために、クラスター内の namespace 全体のロールとロールバインディングを管理する。
-
Pod によって指定されたサービスアカウントが、
SharedConfigMapCR を使用して、ConfigMapオブジェクトを参照するcsiボリュームをマウントできるように、ロールとロールバインディングを管理する。 -
共有する
ConfigMapオブジェクトが含まれている namespace にアクセスする。
-
クラスタースコープレベルで
手順
Shared Resource CSI Driver に
ConfigMapオブジェクトへのアクセス権を付与するためのRoleおよびRoleBindingオブジェクトを作成します。次の設定例を参照してください。Roleオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-test-config namespace: <name_of_the_source_namespace> rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["shared-config"] verbs: ["get", "list", "watch"]apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-test-config namespace: <name_of_the_source_namespace>1 rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["shared-config"] verbs: ["get", "list", "watch"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<name_of_the_source_namespace>は、ソース namespace の名前に置き換えます。
RoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: shared-test-config namespace: <name_of_the_source_namespace> roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: shared-test-config subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: shared-test-config namespace: <name_of_the_source_namespace>1 roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: shared-test-config subjects:2 - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター内の namespace 間で共有する
ConfigMapオブジェクト用のSharedConfigMapCR を作成します。次の例はサンプル設定を示しています。apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedConfigMap metadata: name: share-test-config spec: configMapRef: name: shared-config namespace: <name_of_the_source_namespace>apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedConfigMap metadata: name: share-test-config1 spec: configMapRef: name: shared-config namespace: <name_of_the_source_namespace>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 参照される共有リソースを使用するためのロールベースアクセス制御 (RBAC) 権限を付与する
ClusterRoleCR インスタンスを作成します。次の例はサンプル設定を示しています。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <cluster_role_name> rules: - apiGroups: - sharedresource.openshift.io resources: - sharedconfigmaps resourceNames: - share-test-config verbs: - useapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <cluster_role_name>1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedconfigmaps resourceNames: - share-test-config2 verbs: - useCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2. Pod での SharedConfigMap カスタムリソースの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod から SharedConfigMap カスタムリソース (CR) にアクセスするには、その SharedConfigMap CR を使用するために必要なロールベースアクセス制御 (RBAC) 権限を、関連するサービスアカウントに付与する必要があります。
前提条件
-
クラスター内の namespace 間で共有する config map の
SharedConfigMapCR インスタンスを作成した。 次の操作を実行するための権限がある。
-
oc get sharedconfigmapsコマンドを実行して、SharedConfigMapCR インスタンスのリストを取得します。 -
oc adm policy who-can use <sharedsecret_identifier>コマンドを実行して、サービスアカウントがSharedSecretCR を使用できるかどうか、およびサービスアカウントが namespace にリストされるかどうかを確認する。 -
oc describe clusterrole <roleName>コマンドを実行して、Pod のサービスアカウントがcsiボリュームを使用できることを確認する。ユーザーとして Pod を作成した場合は、ユーザーがcsiボリュームを使用できることを確認する。
-
最後の 2 つの前提条件を満たせない場合は、クラスター管理者に RBAC 権限を付与してもらうことで、サービスアカウントが SharedConfigMap CR を使用できるようになります。
手順
ロールに関連付けられた
RoleBindingオブジェクトを作成し、共有リソースを使用する権限をサービスアカウントに付与します。apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-config namespace: <app_namespace> roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-config subjects: - kind: ServiceAccount name: <service_account_name>apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-config namespace: <app_namespace>1 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-config subjects: - kind: ServiceAccount name: <service_account_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow Shared Resource Container Storage Interface (CSI) Driver を、Pod または
CSIボリュームを受け入れるその他のリソースにマウントします。apiVersion: v1 kind: Pod metadata: name: example-shared-config namespace: <app_namespace> spec: ... serviceAccountName: default volumes: - name: shared-config csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedConfigMap: share-test-configapiVersion: v1 kind: Pod metadata: name: example-shared-config namespace: <app_namespace>1 spec: ... serviceAccountName: default volumes: - name: shared-config csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedConfigMap: share-test-config2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要sharedConfigMap属性の値がsharedConfigMapインスタンスの名前と一致しない場合、Pod は起動に失敗します。
1.3. RHEL エンタイトルメントを使用したイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux (RHEL) エンタイトルメントをお持ちの場合は、Insights Operator が Simple Content Access (SCA) 機能を使用してエンタイトルメントキーを自動的に管理します。SCA を使用すると、RHEL システムがサブスクリプションコンテンツにアクセスできるため、エンタイトルメントキーの手動管理が不要になります。Insights Operator は、SCA のエンタイトルメントキーをインポートし、openshift-config-managed namespace の etc-pki-entitlement という名前のシークレットに保存します。
以前は、クラスター管理者が etc-pki-entitlement シークレットを必要な namespace に手動でコピーしていました。OpenShift Container Platform 4.10 以降、builds for Red Hat OpenShift は、Shared Resource Container Storage Interface (CSI) Driver Operator を使用して、openshift-config-managed namespace の etc-pki-entitlement シークレットを、他の namespace と共有できます。
1.3.1. namespace 間での RHEL エンタイトルメントの共有 リンクのコピーリンクがクリップボードにコピーされました!
SharedSecret オブジェクトを使用すると、クラスターの RHEL エンタイトルメントキーを、Builds の namespace 間でセキュアに共有および同期できます。
前提条件
次の操作を実行するための権限がある。
-
SharedSecretオブジェクトを作成する。 - ビルド設定を作成し、ビルドを開始する。
-
oc get sharedsecretsコマンドを実行して、使用可能なSharedSecretカスタムリソース (CR) インスタンスを検出する。 -
oc adm policy who-can use <sharedsecret_identifier>コマンドを実行して、サービスアカウントがSharedSecretCR を使用できるかどうか、およびサービスアカウントが namespace にリストされるかどうかを確認する。
-
最後の 2 つの前提条件を満たせない場合は、クラスター管理者に必要な RBAC 権限を設定してもらうことで、サービスアカウントに SharedSecret CR の使用を許可できるようになります。
手順
次のコマンドを実行して、クラスターのエンタイトルメントシークレットを含む
SharedSecretオブジェクトインスタンスを作成します。oc apply -f -<<EOF apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: etc-pki-entitlement spec: secretRef: name: etc-pki-entitlement namespace: openshift-config-managed EOF$ oc apply -f -<<EOF apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: etc-pki-entitlement spec: secretRef: name: etc-pki-entitlement namespace: openshift-config-managed EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の設定例を使用して、
SharedSecretオブジェクトにアクセスする権限を付与するClusterRoleオブジェクトを作成します。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-share-etc-pki-entitlement rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - etc-pki-entitlement verbs: - useapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-share-etc-pki-entitlement1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - etc-pki-entitlement verbs: - useCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterRoleCR の名前。
Shared Resources CSI Driver に
SharedSecretオブジェクトにアクセスする権限を付与するRoleおよびRoleBindingオブジェクトを作成します。Roleオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchapiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RoleCR の名前。
RoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-builds2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow ビルドが実行される namespace に、
builderおよびpipelineサービスアカウントのRoleBindingオブジェクトを作成します。apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-share-etc-pki-entitlement roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-share-etc-pki-entitlement subjects: - kind: ServiceAccount name: pipeline - kind: ServiceAccount name: builderapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-share-etc-pki-entitlement1 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-share-etc-pki-entitlement subjects: - kind: ServiceAccount name: pipeline - kind: ServiceAccount name: builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
builderおよびpipelineサービスアカウントのRoleBindingCR の名前。
注記SharedSecretオブジェクトを使用するサービスアカウントは、OpenShift コントローラーによって作成および管理されます。buildahビルドストラテジーを使用してSharedSecretオブジェクトをマウントします。以下の例を参照してください。oc apply -f -<<EOF apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-rhel spec: source: type: Git git: url: https://github.com/redhat-openshift-builds/samples contextDir: buildah-build strategy: name: buildah kind: ClusterBuildStrategy paramValues: - name: dockerfile value: DockerFile volumes: - csi: driver: csi.sharedresource.openshift.io readOnly: true volumeAttributes: sharedSecret: <sharedsecret_object_name> name: etc-pki-entitlement output: image: <output_image_location> EOF$ oc apply -f -<<EOF apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-rhel spec: source: type: Git git: url: https://github.com/redhat-openshift-builds/samples contextDir: buildah-build strategy: name: buildah kind: ClusterBuildStrategy paramValues: - name: dockerfile value: DockerFile volumes: - csi: driver: csi.sharedresource.openshift.io readOnly: true1 volumeAttributes: sharedSecret: <sharedsecret_object_name>2 name: etc-pki-entitlement output: image: <output_image_location>3 EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Legal Notice
リンクのコピーリンクがクリップボードにコピーされました!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.