永続ストレージのカスタマイズ

永続ストレージ設定のカスタマイズ

次のコンポーネントでは、永続ストレージを使用できます:

  • OpenSearch
  • OpenSearchダッシュボード
  • Prometheus
  • Grafana
  • Keycloak/MySQL

デフォルトでは、各Verrazzanoインストール・プロファイルのストレージ特性は異なります。devプロファイルではエフェメラル・ストレージのみが使用されますが、他のすべてのプロファイルでは、リストされている各コンポーネントで永続ストレージが使用されます。詳細は、プロファイル構成を参照してください。

各プロファイルには独自のデフォルトの永続性設定がありますが、いずれの場合も、プロファイルのデフォルトをオーバーライドして永続性設定をカスタマイズするオプションがあります。

これらのコンポーネントの永続性設定は、次のようにVerrazzanoSpecを使用してカスタマイズできます:

  • defaultVolumeSourceフィールドを使用して、すべてのコンポーネント(Keycloak、Grafana、Prometheus、OpenSearchおよびOpenSearchダッシュボード)の永続性設定をオーバーライドします。
  • そのコンポーネントの構成でvolumeSourceフィールドを使用して、Keycloakの永続性設定をオーバーライドします。

グローバルのdefaultVolumeSourceおよびコンポーネント・レベルのvolumeSourceフィールドは、次のいずれかの値に設定できます:

ストレージ
emptyDir エフェメラル・ストレージ。本番のシナリオには使用しないでください。
persistentVolumeClaim claimSourceフィールドが名前付きvolumeClaimSpecTemplateを参照するPersistentVolumeClaimVolumeSource

persistentVolumeClaimを使用してコンポーネントのストレージ設定をオーバーライドする場合は、次のことを行う必要があります:

  • 必要な永続性設定を識別するvolumeClaimSpecTemplateを作成します。
  • claimNameフィールドが以前に作成したテンプレートを参照するコンポーネントのpersistentVolumeClaimを構成します。

これにより、Verrazzano構成内の複数のコンポーネント間で共有できる名前付き永続性設定を作成できます。volumeClaimSpecTemplatesリストに永続性テンプレートが存在しても、ただちに永続ボリュームが作成されるわけではなく、defaultVolumeSourceまたは特定のコンポーネントのvolumeSourceによって参照されるまで、コンポーネントのストレージ設定には影響しません。

サンプル

次の永続ストレージのカスタマイズの例を確認してください:

defaultVolumeSourceを使用した永続性のグローバルなカスタマイズ

defaultVolumeSourceが構成されている場合、その設定はストレージを必要とするすべてのコンポーネントに使用されます。

たとえば、次のVerrazzano構成ではprodプロファイルが使用されますが、すべてのコンポーネントの永続ストレージは無効です

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: no-storage-prod
spec:
  profile: prod
  defaultVolumeSource:
      emptyDir: {}

次の例では、persistentVolumeClaimを使用して、prodプロファイルの永続性設定をグローバルにオーバーライドし、すべてのコンポーネントにデフォルトの50Giではなく100Giボリュームを使用します

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: prod-global-override
spec:
  profile: prod
  defaultVolumeSource:
    persistentVolumeClaim:
      claimName: globalOverride
  volumeClaimSpecTemplates:
    - metadata:
        name: globalOverride
      spec:
        resources:
          requests:
            storage: 100Gi

次の例では、managed-clusterプロファイルを使用しますが、永続設定をオーバーライドしてエフェメラル・ストレージを使用します

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: mgdcluster-empty-storage-example
spec:
  profile: managed-cluster
  defaultVolumeSource:
    emptyDir: {}  # Use emphemeral storage for all Components unless overridden

volumeSourceを使用したKeycloakのPersistentVolumeClaim設定のカスタマイズ

次のVerrazzano構成例は、devプロファイル構成でKeycloak内のMySQLコンポーネントに対して100Gi PersistentVolumeClaimを有効にします。これにより、そのプロファイルのKeycloakに対するデフォルトのエフェメラル・ストレージはオーバーライドされますが、他のコンポーネントのデフォルトのストレージ設定は保持されます

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: dev-mysql-storage-example
spec:
  profile: dev
  components:
    keycloak:
      mysql:
        volumeSource:
          persistentVolumeClaim:
            claimName: mysql  # Use the "mysql" PVC template for the MySQL volume configuration
  volumeClaimSpecTemplates:
  - metadata:
      name: mysql      
    spec:
      resources:
        requests:
          storage: 100Gi

グローバルおよびローカルの永続性設定の同時使用

次の例では、devインストール・プロファイルを使用しますが、次のようにプロファイルの永続性設定をオーバーライドします:

  • デフォルトで、すべてのコンポーネントに200Giボリュームを使用します。
  • Keycloakに関連付けられているMySQLインスタンスに対して100Giボリュームを使用します。
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: dev-storage-example
spec:
  profile: dev
  defaultVolumeSource:
    persistentVolumeClaim:
      claimName: vmi     # Set storage globally for the metrics stack
  components:
    keycloak:
      mysql:
        volumeSource:
          persistentVolumeClaim:
            claimName: mysql  # Set storage separately for keycloak's MySql instance
  volumeClaimSpecTemplates:
    - metadata:
        name: mysql
      spec:
        resources:
          requests:
            storage: 100Gi
    - metadata:
        name: vmi
      spec:
        resources:
          requests:
            storage: 200Gi