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

推荐订阅源

月光博客
月光博客
J
Java Code Geeks
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
U
Unit 42
B
Blog
宝玉的分享
宝玉的分享
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - Franky
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
The GitHub Blog
The GitHub 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.