正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

OpenBaoチャート

  • プラン: Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed
  • ステータス: 実験的機能

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

OpenBao chartを使用してOpenBaoをインストールできます。これは、GitLab Secrets Managerを有効にするために必要です。

既知の問題

  • ダウンタイムなしでOpenBaoをアップグレードすることはできません。ダウンタイムなしのアップグレードは、OpenBaoチャートのイシュー13で提案されています。
  • GitLab Geoはサポートされていません。基本的な検証は合格しましたが、フェイルオーバーと推奨設定はまだテストおよび文書化されていません。完全な検証については、GitLabイシュー568357で説明されています。
  • GitLab OperatorでOpenBaoをデプロイすることはできません。
  • OpenBaoイメージのFIPSバリアントはすでにビルドされていますが、OpenBaoはFIPSで検証されていません。FIPSの検証は、GitLabイシュー574875で追跡されています。
  • OpenBaoチャートと、OpenBao監査イベントのGitLabへのストリーミングを同時に有効にすることはできません。詳細については、イシュー582828を参照してください。

GitLabシークレットマネージャーとOpenBaoのセットアップ

  1. 既存のGitLabインスタンスで、OpenBaoを有効にします:

    # Enable OpenBao integration
    global:
      openbao:
        enabled: true
    # Install bundled OpenBao
    openbao:
      install: true
  2. GitLabの上部バーで、検索または移動先を選択して、プロジェクトを見つけます。

  3. 設定 > 一般を選択します。

  4. 可視性、プロジェクトの機能、権限を展開します。

  5. Secrets Managerのトグルをオンにして、Secrets Managerがプロビジョニングされるまで待ちます。

OpenBaoのアップグレードのロールバック

OpenBaoのアップグレードは、下位互換性のないPostgreSQLデータへの変更を行う可能性があり、OpenBaoのアップグレードをロールバックする必要がある場合、互換性の問題が発生する可能性があります。

OpenBaoをアップグレードする前に、必ずバックアップしてください。OpenBaoのアップグレードをロールバックする必要がある場合は、OpenBaoのバージョンに一致するデータベースバックアップも復元します。

詳細については、OpenBao upgrade documentationを参照してください。

OpenBaoのバックアップ

OpenBaoを完全にバックアップするには、以下が必要です:

  • Unsealキー。これらのキーは、復元後にOpenBaoデータにアクセスするために不可欠です。OpenBaoシークレットのsecret backup proceduresに従ってください。
  • PostgreSQLデータベース。

デフォルトでは、OpenBao PostgreSQLデータはチャートのバンドルされたバックアップ手順の一部としてバックアップされます。

別のデータベース(論理または物理)を使用するようにOpenBaoを設定した場合は、このデータベースを手動でバックアップする必要があります。デフォルトのバックアップツールは、他の外部データベースを認識していないため、標準のPostgreSQL設定のみを対象としています。同期の問題を回避するために、GitLabデータベースとOpenBaoデータベースを同時にバックアップする必要があります。

OpenBaoの復元

デフォルトでは、OpenBao PostgreSQLデータはチャートのバンドルされた復元手順の一部として復元されます。

別のデータベース(論理的または物理的)を使用するようにOpenBaoを設定した場合、OpenBaoデータベースのバックアップはバンドルされたバックアップユーティリティで復元できず、手動で復元する必要があります。

OpenBaoのバックアップを復元する前に、OpenBaoがスケールダウンされていることを確認してください。データベーススキーマを再作成しようとし、予期しないエラーが発生する可能性があります。OpenBaoをスケールダウンするには、以下を実行します:

kubectl scale deploy -lapp=openbao,release=<helm release name> -n <namespace> --replicas=0

OpenBaoの設定オプション

次の表に、使用可能なすべてのOpenBao設定オプションを示します。

インストールコマンドラインオプション

以下の表には、--setフラグを使用して、helm installコマンドに指定できるすべてのチャート構成が記載されています。

パラメータデフォルト説明
logLevelinfoOpenBaoログレベル。
logRequestLeveloffOpenBaoリクエストログレベル。リクエストログを有効にするには、これをlogLevelと同じ値またはそれより高いレベルに設定します。
logFormatjsonOpenBaoログ形式。jsonまたはstandardのいずれか。
serviceAccount.createはいOpenBaoのサービスアカウントを作成します。
serviceAccount.automountはい
serviceAccount.annotations{}追加のサービスアカウントの注釈。
serviceAccount.name生成されたサービスアカウント名をオーバーライドします。
role.create必要なRBAC権限を持つロールを作成します。
securityContext.capabilities{ drop: ["ALL"] }
securityContext.runAsNonRootはい
securityContext.allowPrivilegeEscalationfalse
securityContext.runAsUser65532
podSecurityContext.seccompProfileRuntimeDefault
podSecurityContext.runAsUser65532
podSecurityContext.fsGroup65532
serviceActive.typeClusterIPアクティブなOpenBaoポッドのサービスタイプ。
serviceActive.annotations{}アクティブなOpenBaoポッドのサービス注釈。
serviceInactive.typeClusterIPスタンバイOpenBaoポッドのサービスタイプ。
serviceInactive.annotations{}スタンバイOpenBaoポッドのサービス注釈。
resources{}リソースの制限とリクエスト。
autoscaling.minReplicas2最小OpenBaoレプリカ。
autoscaling.maxReplicas2最大OpenBaoレプリカ。
autoscaling.targetCPUUtilizationPercentage80オートスケールのターゲットCPU使用率。
autoscaling.targetCPUMemoryPercentageオートスケールのターゲットメモリ使用率。
livenessProbeOpenBao活性プローブ。デフォルトについては、OpenBao valuesを確認してください。
readinessProbeOpenBao準備プローブ。デフォルトについては、OpenBao valuesを確認してください。
nodeSelector{}ノードセレクターラベル。
tolerations[]ポッドの割り当ての容認ラベル。
affinity{}ポッド割り当てのアフィニティラベル。
config.uifalseOpenBao UIを有効にします。
config.clusterPort8201OpenBaoクラスターポート。
config.apiPort8200OpenBao APIポート。
config.cacheSize8200物理ストレージサブシステムで使用される読み取りキャッシュのサイズ(エントリ数)。
config.maxRequestSize786432最大リクエストサイズ(バイト単位)。デフォルトは768KBです。
config.maxRequestJsonMemory1048576JSON解析されたリクエストボディの最大サイズ(バイト単位)。デフォルトは1MBです。

コンテナイメージオプション

OpenBaoチャートは、クラウドネイティブGitLabコンテナイメージをデプロイしてOpenBaoをデプロイします。OpenBaoビルドには、アップストリームバージョンからのmodificationsが含まれています。その結果、一部の機能が標準のOpenBaoリリースと異なる場合があります。

パラメータデフォルト説明
image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitlab-openbaoOpenBaoイメージのリポジトリ。
image.pullPolicyIfNotPresentイメージプルポリシー。
image.tagこれをオーバーライドして、カスタムOpenBaoバージョンをデプロイします。
imagePullSecrets[]プライベートリポジトリからイメージをプルするためのシークレット。

IngressおよびTLS設定オプション

OpenBaoチャートは、デフォルトでIngressターミネートTLS暗号化を使用します。

パラメータデフォルト説明
global.openbao.hostopenbao.<GitLab Domain>OpenBaoホスト。GitLab WebサービスとOpenBaoチャートの設定に使用されます。
ingress.enabledはいRunnerがOpenBaoに到達できるように、OpenBao Ingressを有効にします。
ingress.hostnameグローバルホスト構成に基づいた外部OpenBaoホスト。Ingressが一致する必要があるホスト名。
ingress.tls.enabledはいIngress TLSを有効にします。
ingress.tls.secretNameKubernetes TLSシークレットの名前。デフォルトではcertmanagerによって管理されます。
ingress.annotationsはいIngressにレンダリングされる注釈。これを使用して、非NGINX Ingressコントローラー用にOpenBaoを設定します。
ingress.configureCertmanagerグローバルcertmanager構成certmanagerを使用してTLS証明書を管理します。
ingress.certmanagerIssuer<release>-issuercertmanager発行者の名前。
ingress.sslPassthroughNginxfalse着信TLS接続をOpenBaoにパススルーするように、Ingressにアノテーションを付けます。certmanagerが設定されている場合、新しいHTTP01チャレンジは別のIngressを介して行われます。
config.tlsDisableはい内部TLSを無効にします。無効にすると、Ingress TLSパススルーも無効になります。
config.metricsListener.tlsDisableはいメトリクスリスナーの内部TLSを無効にします。

エンドツーエンドの暗号化されたTLSでOpenBaoを操作する必要があります。エンドツーエンドTLSを有効にするには、TLS接続を予期し、NGINX Ingressを介してTLS接続を渡すようにOpenBaoを設定します:

global:
  ingress:
    useNewIngressForCerts: true
config:
  tlsDisable: false
ingress:
  sslPassthroughNginx: true

注: SSLパススルーを有効にすると、cert-managerは別のIngressを作成してHTTP01チャレンジを完了する必要があります。バンドルされたcertmanagerとIssuerを使用する場合は、global.ingress.useNewIngressForCertsを設定して、発行者が正しいIngressClassを設定していることを確認してください。

ゲートウェイAPI

OpenBaoチャートを使用すると、HTTPRouteを介してトラフィックを公開できます。がグローバルに有効になっている場合、OpenBaoのリスナーは管理対象のGatewayリソースに作成されます。

パラメータデフォルト説明
gatewayRoute.enabledglobal.gatewayApi.enabledの値にデフォルト設定されますHTTPRouteを介してOpenBaoを公開できるようにします。
gatewayRoute.sectionNameopenbao-webHTTPRouteで使用されるゲートウェイセクション。
gatewayRoute.gatewayNameGitLabチャート管理対象ゲートウェイHTTPRouteで使用されるゲートウェイ名。
gatewayRoute.annotations{}HTTPRouteの追加の注釈。
gatewayRoute.timeouts{}HTTPRouteのカスタムタイムアウト構成。

モニタリング設定オプション

OpenBaoは、バンドルされたPrometheusサブチャートによってスクレイプされるPrometheusメトリクスを公開するように事前構成されています。

パラメータデフォルト説明
config.telemetry.enabledはいテレメトリとモニタリングを有効にします。
config.telemetry.disableHostnameはいゲージ値にローカルホスト名を付加します。
config.telemetry.prometheusRetentionTime24hメトリクスの保持時間。
config.telemetry.metricsPrefixopenbaoすべてのメトリクスのプレフィックス。
config.telemetry.usageGaugePeriod0トークン数、エンティティ数、シークレット数など、高カーディナリティの使用状況データが収集される間隔。
config.telemetry.numLeaseMetricsBuckets1リース有効期限バケットの数。
config.metricsListener.enabledはいメトリクスのリクエストを処理するために、2番目のAPIポートを有効にします。リスナーはすべてのAPIリクエストを処理できますが、認証なしでメトリクスのリクエストを処理します。
config.metricsListener.tlsDisableはいメトリクスリスナーの内部TLSを無効にします。
config.metricsListener.port8209メトリクスリスナーのポート。
config.metricsListener.unauthenticatedMetricsAccessはいメトリクスのリクエストが認証なしで処理されるように許可します。
podMonitor.enabledfalsePrometheus OperatorのPodMonitorリソースを有効にします。クラスターにPrometheus Operatorがインストールされている必要があります。
podMonitor.additionalLabels{}PodMonitorリソースに追加する追加のラベル。
podMonitor.selectorLabels{}スクレイプするポッドをフィルタリングするための追加のセレクターラベル。
podMonitor.endpointConfig{}追加のエンドポイント設定(例: intervalscrapeTimeout)。

封印解除および初期化オプション

OpenBaoチャートは、静的自動封印解除とOpenBao宣言型自己初期化を利用します。

パラメータデフォルト説明
config.unseal.static.enabledはい静的自動封印解除を有効にします。
config.unseal.static.currentKeyIdstatic-unseal-0現在の静的封印解除キーのID。
config.unseal.static.currentKey/srv/openbao/keys/static-unseal-0現在の静的封印解除キーのパス。
config.unseal.static.previousKeyId以前の静的封印解除キーのID。
config.unseal.static.previousKey/srv/openbao/keys/static-unseal-1以前の静的封印解除キーのパス。前のキーIDも設定されている場合にのみ、レンダリングされます。
config.initialize.enabledはいOpenBaoの自己初期化を有効にします。
config.initialize.oidcDiscoveryUrl外部GitLabホストOIDCディスカバリURL。デフォルトは外部GitLabホスト名です。
config.initialize.boundIssuer外部OpenBaoホストOIDC発行者。デフォルトは外部OpenBaoホスト名です。
config.initialize.boundAudiences外部OpenBaoホストOIDCロールオーディエンス。デフォルトは外部OpenBaoホスト名です。
staticUnsealSecret.generatefalseOpenBaoを自動封印解除するための静的キーを生成します。GitLabチャートの共有シークレットチャートで管理されているため、デフォルトはfalseです。
initializeTplOpenBaoを自己初期化するために渡されるテンプレート。デフォルトについては、OpenBao valuesを確認してください。

監査イベントストリーミングオプション

OpenBaoチャートは、イベントをGitLabにストリーミングするように監査デバイスを設定します。

パラメータデフォルト説明
global.openbao.httpAudit.secret<release>-openbao-audit-secretOpenBaoとGitLabの間で共有されるトークンを格納するシークレットの名前。
global.openbao.httpAudit.keytoken共有トークンを格納するシークレットキー。
config.audit.http.enabledfalseHTTPを使用して、監査イベントのGitLabへのストリーミングを有効にします。OpenBaoチャートを有効にする場合は、無効にする必要があります。詳細については、イシュー582828を参照してください。
config.audit.http.streamingUri内部workhorse URL監査イベントのストリーミング先のエンドポイント。
config.audit.http.authTokenPath/srv/openbao/audit/gitlab-authGitLabと共有されるトークンがマウントされているパス。
httpAuditSecret.generatefalse認証済み監査のために、GitLabと共有されるシークレットを生成します。GitLabチャートの共有シークレットチャートで管理されているため、デフォルトはfalseです。
initializeTplOpenBao監査を設定するために渡されるテンプレート。デフォルトについては、OpenBao valuesを確認してください。

外部データベースを設定する

デフォルトでは、OpenBaoは同じ認証情報と設定でメインのGitLabデータベースに接続します。

外部データベースを設定するには:

  1. データベースサーバーでPostgreSQLユーザーとデータベースを作成します:

    -- Create the OpenBao user
    CREATE USER openbao WITH PASSWORD '<password>';
    
    -- Create the OpenBao database
    CREATE DATABASE openbao OWNER openbao;
  2. パスワードを含むKubernetesシークレットを作成します:

    kubectl create secret -n bao generic openbao-db-password --from-literal=password="<password>"
  3. 外部データベースに接続するようにOpenBaoを設定します:

    openbao:
      config:
        storage:
          postgresql:
            connection:
              host: "psql.openbao.example.com"
              port: 5432
              database: openbao
              username: openbao
              # connectTimeout:
              # keepalives:
              # keepalivesIdle:
              # keepalivesInterval:
              # keepalivesCount:
              # tcpUserTimeout:
              # sslMode: "disable"
              password:
                secret: openbao-db-password
                key: password
  4. OpenBaoをデプロイまたはアップグレードします。起動すると、OpenBaoは指定されたデータベースにデータベーススキーマを自動的に作成します。