🫓

OpenBao の vault-k8s 互換性の対応状況

に公開

以前 k8s で hashicorp vault を動かす記事 を書いたときにおまけ程度に openbao について触れましたが、2024/2 時点ではプロジェクトのページ等はない状況でした。最近になって見返したところドキュメントが結構充実していて kubernetes 上での動作についても記載があったため、hashicorp vault k8s 互換の機能が備わっているか見ていきます。

OpenBao について

Openbao は HashiCorp Vault と同様に各サービスに使う認証情報や任意の key-value など種々の機密情報を一元管理するための Secret Management です。terraform のライセンス変更を契機として opentofu が fork されたのと同じように vault の v1.14.8 ~ v1.14.9 から fork されたプロジェクトであり、現在は Linux Foundation のもと開発が進められています。

https://openbao.org/

https://github.com/openbao/openbao

HashiCorp vault k8s との互換性について

openbao では server, authentication, policy, secret engine, agent, proxy など vault のコアな機能はほぼ備わっており、helm chart を利用して k8s クラスタ上にデプロイする方法 も公式にサポートされています。
となると、以前書いた記事 で試した vault secret operator など種々の機能が openbao でも提供されているのか、互換性がありvault k8s を openbao に置き換えることができるのかといった点が気になります。そこで以前の記事で試した以下の機能について互換性があるかどうか見ていきます。

  • helm install
  • vault CLI
  • CSI provider
  • Agent injector
  • Secret Operator

helm install + unseal

openbao は helm chart が用意されいるので、これを使うことで簡単に k8s クラスタ上にデプロイできます。install mode は vault と同様に以下の 4 つから指定できます。

  • dev
  • standalone (デフォルト)
  • HA
  • External

standalone でインストールするときは以下。

$ helm repo add openbao https://openbao.github.io/openbao-helm
$ helm install openbao openbao/openbao -n openbao --create-namespace

standalone では vault pod に相当する openbao pod が起動します。

$ k get pod -n openbao
NAME                                      READY   STATUS    RESTARTS   AGE
openbao-0                                 1/1     Running   0          7h26m

openbao pod は seal された状態で起動するため vault と同様に init 処理と unseal を行う必要があります。vaultbao に置き換えた bao operator init コマンドがそのまま使用できます。

$ kubectl exec -ti openbao-0 -- bao operator init

実行時に unseal key と root token が表示される点も同じ。

Unseal Key 1: Ay4AU20/cJEn/qNT0Ck0ElJP1lb6zwsDIeAxDgZVJUxg
Unseal Key 2: 8SrHxIPBYvhKQlkBqqCfdKV1Dv1iySwye4B0wiJpaN7F
Unseal Key 3: TDHpWjUCh7/Pvw8quK9CgTTd2Av1lrKmrRYBrpbQKfXP
Unseal Key 4: i9stE9tBE1uUtkF+1lQpFoSf5RitZ+Y2q5F59kf5GrWp
Unseal Key 5: DejmwWHObiLAEIicAAoi4bPDbgOHEPzNezfbdz9ASJW5

Initial Root Token: s.gMDUU4tQ9mi19y7rmK2FKJmE

bao operator unseal を 3 回実行すれば unseal が完了します。

kubectl exec -ti openbao-0 -- bao operator unseal Ay4AU20/cJEn/qNT0Ck0ElJP1lb6zwsDIeAxDgZVJUxg
kubectl exec -ti openbao-0 -- bao operator unseal 8SrHxIPBYvhKQlkBqqCfdKV1Dv1iySwye4B0wiJpaN7F
kubectl exec -ti openbao-0 -- bao operator unseal TDHpWjUCh7/Pvw8quK9CgTTd2Av1lrKmrRYBrpbQKfXP

unseal 完了は pod log で確認可能。

2025-04-30T08:49:57.620Z [INFO]  core: post-unseal setup complete
2025-04-30T08:49:57.620Z [INFO]  core: vault is unsealed

OpenBao CLI

https://openbao.org/docs/commands/

openbao CLI は本家の vault CLI と同様に openbao の設定や secret の読み書きをコマンド経由で実行できます。
github releasebao-[version]-[os]... から os や arch に合ったものがインストール可能

本家と同様に環境変数 VAULT_ADDR に openbao のアドレス (svc の cluster-ip)、VAULT_TOKEN にトークンの値を指定します。

export VAULT_ADDR="http://10.111.206.117:8200"
export VAULT_TOKEN="s.gMDUU4tQ9mi19y7rmK2FKJmE"

これにより openbao server に対して接続・認証が成功し、secret の読み書き等の各種コマンドが実行できるようになります。

$ bao secrets enable -path=tmp  kv-v2
Success! Enabled the kv-v2 secrets engine at: tmp/

ちなみに auto completion の設定はまだなさそうです。

$ bao
Usage: bao <command> [args]

Common commands:
    read        Read data and retrieves secrets
    write       Write data, configuration, and secrets
    delete      Delete secrets and configuration
    list        List data or secrets
    login       Authenticate locally
    agent       Start an OpenBao agent
    server      Start an OpenBao server
    status      Print seal and HA status
    unwrap      Unwrap a wrapped secret

Other commands:
    audit                Interact with audit devices
    auth                 Interact with auth methods
    debug                Runs the debug command
    kv                   Interact with OpenBao's Key-Value storage
    lease                Interact with leases
    monitor              Stream log messages from an OpenBao server
    namespace            Interact with namespaces
    operator             Perform operator-specific tasks
    patch                Patch data, configuration, and secrets
    path-help            Retrieve API help for paths
    pki                  Interact with OpenBao's PKI Secrets Engine
    plugin               Interact with OpenBao plugins and catalog
    policy               Interact with policies
    print                Prints runtime configurations
    proxy                Start an OpenBao Proxy
    scan                 Scan (recursively list) data or secrets
    secrets              Interact with secrets engines
    ssh                  Initiate an SSH session
    token                Interact with tokens
    transit              Interact with OpenBao's Transit Secrets Engine
    version-history      Prints the version history of the target Vault server

Openbao CSI provider

vault CSI provider に対応する openbao CSI provider はドキュメントには記載がなく、github issue などでいくつか言及されている部分はあるもののまだ実装や整備はされていない状況のようです。

一応以下の repository で開発は進められていますが、最終更新は 10 ヶ月前であり積極的には開発されている状況ではなさそう。

https://github.com/openbao/openbao-csi-provider

機能自体は helm chart values に含まれており、helm install する際に --set csi.enabled=true を指定することで csi provider 関連のリソースも合わせてインストールされます。
ただ CSI provider pod で使用されるコンテナイメージは元の vault CSI provider と同じ docker.io/hashicorp/vault-csi-provider となっています。

values.yml
# secrets-store-csi-driver-provider-vault
csi:
  # -- True if you want to install a secrets-store-csi-driver-provider-vault daemonset.
  #
  # Requires installing the secrets-store-csi-driver separately, see:
  # https://github.com/kubernetes-sigs/secrets-store-csi-driver#install-the-secrets-store-csi-driver
  #
  # With the driver and provider installed, you can mount OpenBao secrets into volumes
  # similar to the OpenBao Agent injector, and you can also sync those secrets into
  # Kubernetes secrets.
  enabled: false

  image:
    # -- image registry to use for csi image
    registry: "docker.io"
    # -- image repo to use for csi image
    repository: "hashicorp/vault-csi-provider"
    # -- image tag to use for csi image
    tag: "1.4.0"
    # -- image pull policy to use for csi image. if tag is "latest", set to "Always"
    pullPolicy: IfNotPresent

一応 Vault CSI Provider の動作確認 と同じように secret の pod へのマウントなどの機能を確認しましたが、vault-csi-provider と同じコンテナイメージを使っているので特に問題なく動作しました。

OpenBao Agent Injector

Vault Agent に対応するコンポーネントとして Openbao Agent があり、こちらはドキュメントも充実していることから積極的に開発されているようです。k8s 用の Agent の機能である Agent injector に関して固有のページはなさそうですが、Vault Agent injector と互換性があり同様の使い方で利用できるようになっています。

openbao agent injector を有効化するには helm install 時に -set agent.enabled=true を指定します。ただデフォルトで true に設定されているので明示的に指定しなくても有効化されます。

agent で pod に secret を注入するには openbao 側で secret の作成や認証有効化などが必要となります。このあたりは vault を bao に置き換えれば以前の記事で使用したコマンドがそのまま利用できます。

# kv v2 secret engine を有効化
$ bao secrets enable -path=secret kv-v2

# テスト用 secret の作成
$ bao kv put  -mount=secret database/secret username=myusername password=mypassword

# k8s 認証の有効化
$ bao auth enable kubernetes

# openbao pod でシェル起動
$ kubectl exec -it openbao-0 -- sh

# openbao server に接続するために環境変数を設定
/ $ export VAULT_ADDR="http://openbao.openbao:8200"
/ $ export VAULT_TOKEN="[root_token の値]"

# kubernetes 認証の k8s ホストを設定
/ $ bao write auth/kubernetes/config kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443"
# policy の設定
$ bao policy write db-policy - <<EOF
path "secret/data/database/*" {
  capabilities = ["read"]
}
EOF

# k8s 認証ロールの作成
$ bao write auth/kubernetes/role/database \
    bound_service_account_names=db \
    bound_service_account_namespaces=default \
    policies=db-policy \
    ttl=20m

# SA 作成
$ k create sa db

pod では annotations に vault agent injector と同じ形式で値を指定します。openbao でも annotation 名は vault.hashicorp.com で動作するようです。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app: demo
spec:
  selector:
    matchLabels:
      app: demo
  replicas: 1
  template:
    metadata:
      annotations:
        vault.hashicorp.com/agent-inject: 'true'
        vault.hashicorp.com/role: database
        vault.hashicorp.com/agent-inject-secret-db-config: secret/database/secret
      labels:
        app: demo
    spec:
      serviceAccountName: db
      containers:
        - name: app
          image: busybox:1.29
          command:
            - "/bin/sleep"
            - "10000"

これにより pod 作成時に init コンテナ vault-agent-initvault-agent コンテナが pod 内に inject され、secret が取得されます。

イメージに注目すると、agent inject を管理する openbao-agent-injector pod では元の vault agent injector と同じコンテナイメージ docker.io/hashicorp/vault-k8s が使用されています。

agent-injector
openbao-agent-injector
Containers:
  sidecar-injector:
    Container ID:  containerd://4b77e25ad1c43cd622077c061571797345591169c8c3365a15927ad93eb7ac51
    Image:         docker.io/hashicorp/vault-k8s:1.4.2
    Image ID:      docker.io/hashicorp/vault-k8s@sha256:690647d935f9bb17b4e9d1eb75d10b1b23cfd63d98ca1c456e88ae1429d6c656
    Port:          <none>
    Host Port:     <none>
    Args:
      agent-inject
      2>&1
    State:          Running
      Started:      Thu, 01 May 2025 07:18:42 +0000
    Ready:          True
    Restart Count:  0
    Liveness:       http-get https://:8080/health/ready delay=5s timeout=5s period=2s #success=1 #failure=2
    Readiness:      http-get https://:8080/health/ready delay=5s timeout=5s period=2s #success=1 #failure=2
    Startup:        http-get https://:8080/health/ready delay=5s timeout=5s period=5s #success=1 #failure=12
    Environment:
      AGENT_INJECT_LISTEN:                                 :8080
      AGENT_INJECT_LOG_LEVEL:                              info
      AGENT_INJECT_VAULT_ADDR:                             http://openbao.openbao.svc:8200
      AGENT_INJECT_VAULT_AUTH_PATH:                        auth/kubernetes
      AGENT_INJECT_VAULT_IMAGE:                            quay.io/openbao/openbao:2.2.0
      AGENT_INJECT_TLS_AUTO:                               openbao-agent-injector-cfg
      AGENT_INJECT_TLS_AUTO_HOSTS:                         openbao-agent-injector-svc,openbao-agent-injector-svc.openbao,openbao-agent-injector-svc.openbao.svc
      AGENT_INJECT_LOG_FORMAT:                             standard
      AGENT_INJECT_REVOKE_ON_SHUTDOWN:                     false
      AGENT_INJECT_CPU_REQUEST:                            250m
      AGENT_INJECT_CPU_LIMIT:                              500m
      AGENT_INJECT_MEM_REQUEST:                            64Mi
      AGENT_INJECT_MEM_LIMIT:                              128Mi
      AGENT_INJECT_DEFAULT_TEMPLATE:                       map
      AGENT_INJECT_TEMPLATE_CONFIG_EXIT_ON_RETRY_FAILURE:  true
      POD_NAME:                                            openbao-agent-injector-6fb589ddf9-k7vrx (v1:metadata.name)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zfxkk (ro)

一方で pod に inject される vault-agent コンテナでは openbao 固有のイメージ quay.io/openbao/openbao が使用されています。

vault-agent
vault-agent
Init Containers:
  vault-agent-init:
    Container ID:  containerd://9df6c1886bb7b1bc74454b2082edf108f864bd2ff21751a666309eb4a433c235
    Image:         quay.io/openbao/openbao:2.2.0
    Image ID:      quay.io/openbao/openbao@sha256:19612d67a4a95d05a7b77c6ebc6c2ac5dac67a8712d8df2e4c31ad28bee7edaa
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -ec
    Args:
      echo ${VAULT_CONFIG?} | base64 -d > /home/vault/config.json && vault agent -config=/home/vault/config.json
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 01 May 2025 07:26:43 +0000
      Finished:     Thu, 01 May 2025 07:26:43 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     500m
      memory:  128Mi
    Requests:
      cpu:     250m
      memory:  64Mi
    Environment:
      NAMESPACE:         default (v1:metadata.namespace)
      HOST_IP:            (v1:status.hostIP)
      POD_IP:             (v1:status.podIP)
      VAULT_LOG_LEVEL:   info
      VAULT_LOG_FORMAT:  standard
      VAULT_CONFIG:      eyJhdXRvX2F1dGgiOnsibWV0aG9kIjp7InR5cGUiOiJrdWJlcm5ldGVzIiwibW91bnRfcGF0aCI6ImF1dGgva3ViZXJuZXRlcyIsImNvbmZpZyI6eyJyb2xlIjoiZGF0YWJhc2UiLCJ0b2tlbl9wYXRoIjoiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3Rva2VuIn19LCJzaW5rIjpbeyJ0eXBlIjoiZmlsZSIsImNvbmZpZyI6eyJwYXRoIjoiL2hvbWUvdmF1bHQvLnZhdWx0LXRva2VuIn19XX0sImV4aXRfYWZ0ZXJfYXV0aCI6dHJ1ZSwicGlkX2ZpbGUiOiIvaG9tZS92YXVsdC8ucGlkIiwidmF1bHQiOnsiYWRkcmVzcyI6Imh0dHA6Ly9vcGVuYmFvLm9wZW5iYW8uc3ZjOjgyMDAifSwidGVtcGxhdGUiOlt7ImRlc3RpbmF0aW9uIjoiL3ZhdWx0L3NlY3JldHMvZGItY29uZmlnIiwiY29udGVudHMiOiJ7eyB3aXRoIHNlY3JldCBcInNlY3JldC9kYXRhYmFzZS9zZWNyZXRcIiB9fXt7IHJhbmdlICRrLCAkdiA6PSAuRGF0YSB9fXt7ICRrIH19OiB7eyAkdiB9fVxue3sgZW5kIH19e3sgZW5kIH19IiwibGVmdF9kZWxpbWl0ZXIiOiJ7eyIsInJpZ2h0X2RlbGltaXRlciI6In19In1dLCJ0ZW1wbGF0ZV9jb25maWciOnsiZXhpdF9vbl9yZXRyeV9mYWlsdXJlIjp0cnVlfX0=
    Mounts:
      /home/vault from home-init (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-fc6vp (ro)
      /vault/secrets from vault-secrets (rw)
Containers:
  app:
    Container ID:  containerd://cbbf6923b0462257d50c5104bfcc623dd67bd6e5e26364382309b80542b6ec25
    Image:         busybox:1.29
    Image ID:      docker.io/library/busybox@sha256:8ccbac733d19c0dd4d70b4f0c1e12245b5fa3ad24758a11035ee505c629c0796
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sleep
      10000
    State:          Running
      Started:      Thu, 01 May 2025 07:26:43 +0000
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-fc6vp (ro)
      /vault/secrets from vault-secrets (rw)
  vault-agent:
    Container ID:  containerd://4ae04b8562725c656b9b1a0b99cad75725e74159047dedc9b0683330312b588e
    Image:         quay.io/openbao/openbao:2.2.0
    Image ID:      quay.io/openbao/openbao@sha256:19612d67a4a95d05a7b77c6ebc6c2ac5dac67a8712d8df2e4c31ad28bee7edaa
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -ec
    Args:
      echo ${VAULT_CONFIG?} | base64 -d > /home/vault/config.json && vault agent -config=/home/vault/config.json
    State:          Running
      Started:      Thu, 01 May 2025 07:26:43 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     500m
      memory:  128Mi
    Requests:
      cpu:     250m
      memory:  64Mi
    Environment:
      NAMESPACE:         default (v1:metadata.namespace)
      HOST_IP:            (v1:status.hostIP)
      POD_IP:             (v1:status.podIP)
      VAULT_LOG_LEVEL:   info
      VAULT_LOG_FORMAT:  standard
      VAULT_CONFIG:      eyJhdXRvX2F1dGgiOnsibWV0aG9kIjp7InR5cGUiOiJrdWJlcm5ldGVzIiwibW91bnRfcGF0aCI6ImF1dGgva3ViZXJuZXRlcyIsImNvbmZpZyI6eyJyb2xlIjoiZGF0YWJhc2UiLCJ0b2tlbl9wYXRoIjoiL3Zhci9ydW4vc2VjcmV0cy9rdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3Rva2VuIn19LCJzaW5rIjpbeyJ0eXBlIjoiZmlsZSIsImNvbmZpZyI6eyJwYXRoIjoiL2hvbWUvdmF1bHQvLnZhdWx0LXRva2VuIn19XX0sImV4aXRfYWZ0ZXJfYXV0aCI6ZmFsc2UsInBpZF9maWxlIjoiL2hvbWUvdmF1bHQvLnBpZCIsInZhdWx0Ijp7ImFkZHJlc3MiOiJodHRwOi8vb3BlbmJhby5vcGVuYmFvLnN2Yzo4MjAwIn0sInRlbXBsYXRlIjpbeyJkZXN0aW5hdGlvbiI6Ii92YXVsdC9zZWNyZXRzL2RiLWNvbmZpZyIsImNvbnRlbnRzIjoie3sgd2l0aCBzZWNyZXQgXCJzZWNyZXQvZGF0YWJhc2Uvc2VjcmV0XCIgfX17eyByYW5nZSAkaywgJHYgOj0gLkRhdGEgfX17eyAkayB9fToge3sgJHYgfX1cbnt7IGVuZCB9fXt7IGVuZCB9fSIsImxlZnRfZGVsaW1pdGVyIjoie3siLCJyaWdodF9kZWxpbWl0ZXIiOiJ9fSJ9XSwidGVtcGxhdGVfY29uZmlnIjp7ImV4aXRfb25fcmV0cnlfZmFpbHVyZSI6dHJ1ZX19
    Mounts:
      /home/vault from home-sidecar (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-fc6vp (ro)
      /vault/secrets from vault-secrets (rw)

app コンテナでは /vault/secrets 以下に secret を含むファイルが作成される点は vault agent injector と同じ。

$ k exec -it app-79956f485b-mpbw6 -- cat /vault/secrets/db-config
Defaulted container "app" out of: app, vault-agent, vault-agent-init (init)

data: map[password:mypassword username:myusername] # secret に対応
metadata: map[created_time:2025-05-01T07:23:17.938169909Z custom_metadata:<nil> deletion_time: destroyed:false version:1]

Openbao Secrets Operator

Vault Secret Operator に対応するコンポーネントとしては、 vault secret operator の repository から fork したものが以下にあります。

https://github.com/openbao/openbao-secrets-operator

ただこれは以下の issue の対応として fork されただけで、最終更新日も 2 年前となっておりほぼ放置されているような状況となっています。

https://github.com/openbao/openbao/issues/40

その他

Auto unseal

起動時の unseal を自動化する vault auto unseal は openbao でも実装済み

https://openbao.org/docs/concepts/seal/#auto-unseal

webUI

vault は webUI がありますが openbao にも UI 機能があります。

https://openbao.org/docs/configuration/ui/

helm ではデフォルトで有効化されており、openbao svc の port 8200 でアクセスできます。

k port-forward -n openbao services/openbao 8200:8200 --address 0.0.0.0

ログイン画面では method: token, token: [root token の値] でログイン可能。
基本的に vault UI と同じで secret や認証情報、ポリシーなどが確認できます。

image

Terraform provider

terraform では vault provider を使うことで vault の構成などを terraform 側で管理できます。
openbao では固有の provider は現状ありませんが、vault provider に互換性があるので openbao に関しても secret などを作成できます。

例えば、kvv2 の有効化と secret 作成を行う以下の main.tf では、provider "vault" を openbao の address, token に指定すれば残りの部分は変更しなくても動作します。

main.tf
provider "vault" {
  address = "http://10.111.206.117:8200"
  token   = "s.gMDUU4tQ9mi19y7rmK2FKJmE"
}


resource "vault_mount" "kvv2" {
  path        = "kvv2"
  type        = "kv"
  options     = { version = "2" }
  description = "KV Version 2 secret engine mount"
}

resource "vault_kv_secret_v2" "example" {
  mount                      = vault_mount.kvv2.path
  name                       = "secret"
  cas                        = 1
  delete_all_versions        = true
  data_json                  = jsonencode(
  {
    zip       = "zap",
    foo       = "bar"
  }
  )
  custom_metadata {
    max_versions = 5
    data = {
      foo = "vault@example.com",
      bar = "12345"
    }
  }
}

terraform でも動きますが、せっかくなので opentofu を使って apply します。

$ tofu init
$ tofu plan
$ tofu apply -auto-approve

Plan: 2 to add, 0 to change, 0 to destroy.
vault_mount.kvv2: Creating...
vault_mount.kvv2: Creation complete after 0s [id=kvv2]
vault_kv_secret_v2.example: Creating...
vault_kv_secret_v2.example: Creation complete after 0s [id=kvv2/data/secret]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

bao CLI で実際に foo, zip の secret key-value が書き込まれていることが確認できます。

$ bao kv get -mount=kvv2 secret

== Secret Path ==
kvv2/data/secret

======= Metadata =======
Key                Value
---                -----
created_time       2025-05-01T13:56:44.6182995Z
custom_metadata    map[bar:12345 foo:vault@example.com]
deletion_time      n/a
destroyed          false
version            1

=== Data ===
Key    Value
---    -----
foo    bar
zip    zap

対応状況まとめ

hashicorp vault での機能名 openbao での機能名 github repo 対応済み コメント
helm - openbao-helm
vault CLI bao openbao
Vault CSI provider OpenBao CSI Provider openbao-csi-provider 最終更新は 10 ヶ月前 ※1
Vault Agent injector OpenBao Agent injector openbao agent-injector は hashicorp のイメージを使用している。agent 自体は openbao 固有のイメージを使用。
Vault Secrets Operator OpenBao Secrets Operator openbao-secrets-operator 最終更新は 2 年前 ※1

※1: 使えないこともないがコンテナイメージは hashicorp のものなので実質的に vault csi provider などを使っているのと同じ

おわりに

vault CSI provider や vault Secret operator は対応する github repo から fork されているものの、openbao ではまだ正式に対応していない状況でした、一方で agent injector はほぼ vault agent injector と同じように動くので、pod の secret 管理として vault agent injector の機能をメインに使っている場合はそのまま openbao に移行しても問題ないと言えそうです。

openbao を同じような立ち位置の terraform fork の opentofu と比較すると知名度や Github star 数は低いですが(そもそも terraform ユーザー数に対して vault ユーザー数が低いのが原因な気もする)、それなりの頻度で継続的に commit されていること、および Linux foundation の At Large Stage Project[1] に位置づけられていることから今後の拡張が期待されます。

脚注
  1. At Largeプロジェクトとは、TAC(Technical Advisory Committee)が、エッジ・エコシステム全体にとって重要である、または重要になる可能性があると考えるオープンソースの取り組みです。これらは通常、初期段階のプロジェクトであり、コミュニティの支援を受ける代わりに、LF Edgeのオープンエッジプラットフォーム全体に新たな機能を追加しようとしています。 ↩︎

Discussion