惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
The Cloudflare Blog
V
Visual Studio Blog
罗磊的独立博客
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
D
Docker
Last Week in AI
Last Week in AI
B
Blog RSS Feed
C
Check Point Blog
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
博客园 - 聂微东
MongoDB | Blog
MongoDB | Blog
雷峰网
雷峰网

OneUptime Blog

How to Monitor Azure App Services (PaaS) with OpenTelemetry Grafana Stack vs OneUptime: DIY Observability or Unified Platform? Your AI Workloads Are About to Blow Up Your Observability Bill The Great Observability Consolidation Is Here How to Write Custom Object Classes for Ceph How to Write Custom Ceph Manager Modules How to Write a ceph.conf Configuration File How to Use Rook-Ceph with OpenShift How to Use Rook-Ceph with Longhorn for Comparison How to Configure Volume Snapshot Class for RBD in Rook How to Configure VolumeReplicationClass Scheduling Intervals in Rook How to Set Up Volume Replication with Rook-Ceph How to Create Volume Group Snapshots with Rook CSI How to Visualize Ceph Network Performance in Grafana How to Enable Virtual Host-Style Bucket Access in Rook How to View Runtime Configuration via Admin Socket How to View Quota Settings and Update Stats in Ceph RGW How to View PG Scaling Recommendations with autoscale-status How to View PG Distribution via Admin Socket How to View Performance Metrics in the Ceph Dashboard How to View OSD Performance Counters in Ceph How to View Connection Status via Admin Socket How to View Ceph Cluster Summary Dashboard via CLI How to Version Control Rook-Ceph Configuration How to Version Control Ceph Infrastructure with Terraform How to Verify Kubernetes Node Requirements for Rook-Ceph Deployment How to Verify Health Before and After Rook Upgrades How to Verify Data Integrity with Deep Scrubbing How to Verify Complete Rook-Ceph Cleanup How to Verify Backup Integrity from Ceph Snapshots
How to Integrate HashiCorp Vault with Rook-Ceph (Kubernet...
Nawaz Dhandala · 2026-03-31 · via OneUptime Blog

Overview

Vault's Kubernetes auth method uses Kubernetes service account JWT tokens to authenticate instead of static Vault tokens. This eliminates token management and renewal concerns, making it the recommended approach for production Rook-Ceph deployments. Vault validates the service account token against the Kubernetes API server.

Step 1 - Enable Vault Kubernetes Auth

On the Vault server, enable and configure the Kubernetes auth method:

vault auth enable kubernetes

vault write auth/kubernetes/config \
  kubernetes_host="https://<kubernetes-api-server>:6443" \
  kubernetes_ca_cert=@/path/to/ca.crt \
  issuer="https://kubernetes.default.svc.cluster.local"

Get the Kubernetes CA certificate:

kubectl config view --raw --minify --flatten \
  -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 --decode > ca.crt

Step 2 - Create a Vault Role for Rook

vault policy write rook-ceph-kms - <<EOF
path "secret/data/rook-ceph/*" {
  capabilities = ["create", "read", "update", "delete", "list"]
}
path "secret/metadata/rook-ceph/*" {
  capabilities = ["list", "delete"]
}
EOF

vault write auth/kubernetes/role/rook-ceph-kms \
  bound_service_account_names=rook-ceph-system,rook-ceph-osd \
  bound_service_account_namespaces=rook-ceph \
  policies=rook-ceph-kms \
  ttl=1h

Step 3 - Configure the KMS ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: rook-ceph-csi-kms-config
  namespace: rook-ceph
data:
  config.json: |-
    {
      "vault-k8s-auth": {
        "encryptionKMSType": "vault",
        "vaultAddress": "https://vault.example.com:8200",
        "vaultBackendPath": "secret/",
        "vaultAuthPath": "/v1/auth/kubernetes/login",
        "vaultRole": "rook-ceph-kms",
        "vaultAuthNamespace": "",
        "vaultCAFromSecret": "vault-ca-cert"
      }
    }

Step 4 - Configure CephCluster with Kubernetes Auth

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  security:
    kms:
      connectionDetails:
        KMS_PROVIDER: vault
        VAULT_ADDR: https://vault.example.com:8200
        VAULT_BACKEND_PATH: secret
        VAULT_AUTH_METHOD: kubernetes
        VAULT_AUTH_KUBERNETES_ROLE: rook-ceph-kms

Note: With Kubernetes auth, tokenSecretName is not needed.

Step 5 - Verify Authentication

Create an encrypted PVC and verify the key was stored in Vault:

# Check Vault for keys created by Rook
vault kv list secret/rook-ceph/

# Check CSI provisioner logs for successful Vault auth
kubectl logs -n rook-ceph deployment/csi-rbdplugin-provisioner -c csi-rbdplugin | grep -i vault

Troubleshoot Authentication Failures

If provisioning fails with Vault auth errors:

# Check Vault audit logs
vault audit enable file file_path=/vault/logs/audit.log

# Verify service account exists
kubectl get serviceaccount rook-ceph-system -n rook-ceph

# Test token auth manually
SA_TOKEN=$(kubectl create token rook-ceph-system -n rook-ceph)
curl --request POST \
  --data "{\"jwt\": \"$SA_TOKEN\", \"role\": \"rook-ceph-kms\"}" \
  https://vault.example.com:8200/v1/auth/kubernetes/login

Summary

Vault Kubernetes auth for Rook-Ceph uses Kubernetes service account tokens for automatic, credential-free KMS integration. Unlike static token auth, there is no TTL management or rotation needed - Vault validates each request against the live Kubernetes API. This approach is zero-maintenance and the recommended production configuration.