KMS encryption troubleshooting

You can diagnose and resolve common KMS encryption issues to maintain secure key management and cluster availability.

Invalid KMS configuration

Symptom: APIServer resource shows validation errors during KMS encryption configuration.

Diagnosis: Check kube-apiserver Operator logs:

$ oc logs -n openshift-kube-apiserver-operator deploy/kube-apiserver-operator | grep -i "kms\|validation\|error"

Solutions:

  • Verify plugin configuration follows provider requirements

  • Ensure all required fields are specified

  • Verify plugin is running on all control plane nodes:

    $ oc debug node/<node_name> -- chroot /host ls -la /var/run/kmsplugin/kms.sock
KMS permissions errors

Symptom: Encryption migration fails with permission errors.

Diagnosis: Check Operator and plugin logs:

$ oc logs -n openshift-kube-apiserver-operator deploy/kube-apiserver-operator | grep -i "kms\|permission\|access denied"
$ oc debug node/<node_name> -- chroot /host journalctl -u kms-plugin

Solutions:

  • Verify plugin has valid authentication credentials

  • Check if credentials have expired

  • Ensure plugin principal has encrypt and decrypt permissions

  • Verify KMS provider key policy allows plugin access

  • Confirm encryption key is enabled and not scheduled for deletion

Expired or deleted KMS key

Symptom: API server cannot decrypt secrets when accessing encrypted resources.

Diagnosis: Check logs and verify key status:

$ oc logs -n openshift-kube-apiserver -l apiserver=true | grep -i "decrypt\|kms.*error"
$ oc debug node/<node_name> -- chroot /host journalctl -u kms-plugin | grep -i "key\|error"

Solutions:

  • Re-enable the encryption key if disabled

  • Restore from backup if key was permanently deleted

  • Cancel key deletion if scheduled

  • Ensure KMS provider maintains access to previous key versions

Warning

Deleted KMS keys prevent data recovery. Align key retention with backup policies.

API server degraded or unavailable

Symptom: API server becomes degraded or unresponsive after enabling KMS encryption.

Diagnosis: Check Operator status and logs:

$ oc get clusteroperator kube-apiserver
$ oc logs -n openshift-kube-apiserver -l apiserver=true --tail=200 | grep -i kms

Solutions:

  • Check network connectivity between control plane and KMS provider

  • Verify network policies, firewalls, and routes allow communication

  • Monitor KMS provider rate limits and request increases if needed

  • Verify DNS resolution and TLS certificate validation

  • Confirm plugin is running on all control plane nodes:

    $ oc debug node/<node_name> -- chroot /host systemctl status kms-plugin
Encryption migration stuck or slow

Symptom: KMS encryption migration takes unusually long or becomes stuck.

Diagnosis: Check Operator status and migration logs:

$ oc get clusteroperator kube-apiserver
$ oc logs -n openshift-kube-apiserver-operator deploy/kube-apiserver-operator | grep -i migration

Solutions:

  • Migration time depends on data size; monitor progress

  • Monitor KMS provider audit logs for rate limiting or throttling events

  • Check network performance between control plane and KMS provider

Collecting debug information

Collect cluster logs:

$ oc adm must-gather
$ oc get apiserver cluster -o yaml > apiserver.yaml
$ oc logs -n openshift-kube-apiserver-operator deploy/kube-apiserver-operator > kube-apiserver-operator.log
$ oc logs -n openshift-kube-apiserver -l apiserver=true --tail=500 > kube-apiserver.log

Collect KMS provider information:

  • KMS plugin logs from control plane nodes

  • KMS provider audit logs

  • KMS provider key policy and permissions

  • Authentication credentials status

  • Network connectivity test results

Note

Redact credentials, tokens, and sensitive data before sharing logs.