Cases4 cases
1 to 4 of 4
IL-0158An expired credential caused authentication failures that stopped LKE and LKE-E from deploying clusters and nodes in all regions, which also blocked node recycling and cluster autoscalingLinode2026- Symptoms
From 11:45 UTC on 16 April 2026, customers of Linode Kubernetes Engine (LKE) and Linode Kubernetes Engine Enterprise (LKE-E) could not deploy new clusters or add new nodes to existing clusters. Because no new node could be deployed, node recycling and cluster autoscaling did not work either. The problem hit every region where LKE runs.
- Trigger
A credential expired, which caused authentication failures when LKE and LKE-E deployed clusters and nodes. One status update describes it as an expired certificate.
- Root cause
- Component
- Contributing factor
- –
- Detection
The first status page update, saying the team was investigating an emerging issue affecting LKE and LKE-E in all regions, was posted at 13:20 UTC.
- Remediation
- created new credentials and deployed them, rotating the expired credential (certificate)
- Action items
- Investigate what led to the credential expiry and take preventive actions
- Lessons
One expired credential stopped every operation that needs a new node, in all regions at once: new clusters, added nodes, node recycling and autoscaling.
IL-0113The managed GKE control plane of Webhook Relay's main cluster failed because its API server certificates had never been rotated, and a manual credential rotation reported success without taking effectWebhook Relay2022- Symptoms
At 12:00 EST the health check system reported that the backend APIs, the frontend and the tunnels in the EU region were down. The team first took it for a transient error, such as an interrupted client request or a server evicted for memory or CPU pressure, but the main dashboard was offline as well.
- Root cause
- Component
- Contributing factor
- Detection
The health check system sent a notification that the service was down; the team then found the main dashboard offline.
- Remediation
- recreated the node pools by hand after the credential rotation failed to recreate them
- duplicated the main cluster's services into a newly created GKE cluster
- deleted the Kubernetes Service records in the old cluster so its load balancers could be attached to the new cluster
- detached the StatefulSet from the old cluster and switched all writes to the main disk
- exported the data from the temporary ClickHouse instance and inserted it into the main instance
- Action items
- Change the deployment manifests so services can be switched between clusters quickly without a complicated persistent disk migration
- Lessons
Recovery of existing infrastructure needs a time limit. Throughout the outage the old cluster looked about to recover, and the reluctance to give up on the salvage effort kept the team from starting over with a new cluster much sooner, which would have been the right call. On older GKE clusters, check the validity of the cluster CA certificate, for example by decoding masterAuth.clusterCaCertificate from gcloud container clusters describe and reading it with openssl x509. GKE's multiple availability zones made no difference in this failure.
IL-0521AKS pods could not mount volumes and new nodes got no CNI network interface after the cluster service principal expiredJenkins project2021- Symptoms
From 18:02 UTC on 2 June 2021, the Jenkins infrastructure AKS cluster logged errors about pods that were unable to mount volumes and about scaled-up nodes that were unable to obtain a network virtual interface from the CNI.
- Trigger
The Azure Service Principal credential of the AKS cluster expired at 17:53 UTC on 2 June 2021.
- Root cause
- Component
- Contributing factor
- Detection
The error behind the failures was found in the AKS UI console while the team investigated the root cause of the LTS 2.289.1 release problem.
- Remediation
- Renewed the AKS cluster's Azure Service Principal credential, which made AKS restart all nodes automatically
- Action items
- Add an automatic PagerDuty check that alerts a week before the service principal expires, as is done for certificates
- Keep a team-level calendar for manual operations such as resetting a credential
- Consider managed identities, which renew automatically, instead of the service principal
IL-0460Vault served an expired TLS certificate and almost every GoCardless service pod crash-looped, a 22-minute full outageGoCardless2020- Symptoms
On Sunday 25 October 2020 the GoCardless API, dashboard, payment pages and partner integrations were all unavailable for 22 minutes, from 07:32 to 07:54 GMT. Automated monitoring paged the on-call engineer at 07:32, a minute after every request to the API had started failing because no healthy backend was left.
- Trigger
At 07:22 the TLS certificate Vault was still serving expired. cert-manager had already renewed it, but Vault does not load a new certificate without a restart or a SIGHUP.
- Root cause
- Component
- Contributing factor
- Detection
Automated monitoring detected the failing requests and paged the on-call engineer at 07:32. Certificate expiry monitoring existed for the Layer-7 load balancers but did not cover the TCP load balancer that Vault uses.
- Remediation
- Forced cert-manager to recreate the Vault certificate
- Restarted the Vault cluster by hand so it loaded the new certificate
- Deleted some pods of critical workloads to skip their 5-minute exponential backoff
- Action items
- Check the certificate of the TCP load balancer in front of Vault with the Blackbox exporter, as for the Layer-7 load balancers
- Deploy the Reloader controller to roll Vault when its certificate data changes
- Change theatre-envconsul so envconsul no longer manages the child process and only injects secrets at container startup
- Lessons
A system that almost every service depends on, such as the secrets store, can take everything down at once, and failure scenarios like Vault becoming unreachable had not been tested enough. Assuming the certificate had expired, when it had been renewed but not reloaded, added a slow and unnecessary recreation step to the recovery.
These 4 cases involve Node pool and cert-manager. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause1
Certificate or credential expiry4 cases
- Component
- Contributing factor
- Organisation
IL-0158An expired credential caused authentication failures that stopped LKE and LKE-E from deploying clusters and nodes in all regions, which also blocked node recycling and cluster autoscalingLinode2026IL-0113The managed GKE control plane of Webhook Relay's main cluster failed because its API server certificates had never been rotated, and a manual credential rotation reported success without taking effectWebhook Relay2022IL-0521AKS pods could not mount volumes and new nodes got no CNI network interface after the cluster service principal expiredJenkins project2021IL-0460Vault served an expired TLS certificate and almost every GoCardless service pod crash-looped, a 22-minute full outageGoCardless2020