Skip to content

[VAULT] Vault Kubernetes KMS docs#1997

Open
schavis wants to merge 52 commits intomainfrom
scc/VAULT-41627
Open

[VAULT] Vault Kubernetes KMS docs#1997
schavis wants to merge 52 commits intomainfrom
scc/VAULT-41627

Conversation

@schavis
Copy link
Contributor

@schavis schavis commented Mar 13, 2026

Recreate #1602 with text edits and added process flow diagram with walkthrough

@hashicorp-cla-app
Copy link

hashicorp-cla-app bot commented Mar 13, 2026

CLA assistant check

Thank you for your submission! We require that all contributors sign our Contributor License Agreement ("CLA") before we can accept the contribution. Read and sign the agreement

Learn more about why HashiCorp requires a CLA and what the CLA includes


2 out of 3 committers have signed the CLA.

  • schavis
  • digivava
  • Michael Blaum

Michael Blaum seems not to be a GitHub user.
You need a GitHub account to be able to sign the CLA.
If you have already a GitHub account, please add the email address used for this commit to your account.

Have you signed the CLA already but the status is still pending? Recheck it.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

Vercel Previews Deployed

Name Status Preview Updated (UTC)
Dev Portal ✅ Ready (Inspect) Visit Preview Fri Mar 13 23:46:08 UTC 2026
Unified Docs API ✅ Ready (Inspect) Visit Preview Fri Mar 13 23:41:39 UTC 2026

@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

Broken Link Checker

No broken links found! 🎉

encryption at rest. The Kubernetes API server uses a DEK (data encryption key)
[seed](https://kubernetes.io/docs/tasks/administer-cluster/kms-provider/#kms-encryption-and-per-object-encryption-keys)
to generate DEKs for encrypting and decrypting cluster data. The API server
encrypts and decrypts this DEK seed by calling Vault, rather than storing key
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if it matters that much for this overview, but the API server is not calling Vault, it's calling Vault Kubernetes KMS, which is then calling Vault.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed :)

Vault Kubernetes KMS, automatically renew authentication tokens, and handle
re-authentication if the token expires.

1. The Kubernetes administrator configures a Unix socket for gRPC communication
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's actually remove this step because the plugin does this on behalf of the user now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed 👍🏽


On startup:

1. The Kubernetes API server creates and caches the Vault client.
Copy link
Contributor

@digivava digivava Mar 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove this step as it's not accurate (Vault Kubernetes KMS does this, not the Kubernetes API server) and is already covered by the Vault client-related mention above and below.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. I meant to delete that and missed it while editing 🙃

1. The Kubernetes API server generates a single DEK seed and uses the client to
request encryption from Vault Kubernetes KMS.

1. Vault Kubernetes KMS creates and caches a Vault client that authenticates to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be the top step of this "On startup:" section., because the "generates a single DEK seed" step mentions the client.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved

Success! Data written to: auth/k8s-approle/role/k8s-kms-role
```

1. Fetch the new AppRole ID and secret ID for later use when configuring the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The secret ID is generated by a separate call:

vault write -f auth/k8s-approle/role/k8s-kms-role/secret-id

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added 👍🏽

1. Copy the AppRole secret ID from your Transit plugin to each control plane
node at `/etc/vault-kms/approle-secret-id`.

1. Create a manifest file, `vault-kms-plugin.yaml, for the Vault Kubernetes KMS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there supposed to be another backtick here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, good catch

Copy link
Contributor

@digivava digivava left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for porting this over! I like the updated organization of it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Vault Content update for Vault product docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants