永続ストレージ
次のコンポーネントでは、永続ストレージを使用できます:
- OpenSearch
- OpenSearchダッシュボード
- Prometheus
- Grafana
- Keycloak/MySQL
デフォルトでは、各Verrazzanoインストール・プロファイルのストレージ特性は異なります。devプロファイルではエフェメラル・ストレージのみが使用されますが、他のすべてのプロファイルでは、リストされている各コンポーネントで永続ストレージが使用されます。詳細は、プロファイル構成を参照してください。
ノート
本番環境では、エフェメラル・ストレージはお薦めしません。Kubernetesポッドはいつでも再起動できるため、非永続ストレージが使用されている場合、データが失われ、システムが不安定になります。永続ストレージは、評価または開発以外のあらゆるユースケースで推奨されます。各プロファイルには独自のデフォルトの永続性設定がありますが、いずれの場合も、プロファイルのデフォルトをオーバーライドして永続性設定をカスタマイズするオプションがあります。
これらのコンポーネントの永続性設定は、次のように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を使用した永続性のグローバルなカスタマイズ
- volumeSourceを使用したKeycloakのPersistentVolumeClaim設定のカスタマイズ
- グローバルおよびローカルの永続性設定の同時使用
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