Skip to content

fix: bootstrap trusted kubelet serving certificates - #85

Open
r3loac wants to merge 3 commits into
InftyAI:mainfrom
r3loac:main
Open

fix: bootstrap trusted kubelet serving certificates#85
r3loac wants to merge 3 commits into
InftyAI:mainfrom
r3loac:main

Conversation

@r3loac

@r3loac r3loac commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

What changed

Nebula now requests a trusted kubelet serving certificate through the
kubernetes.io/kubelet-serving CSR signer.

The CSR contains the manager Pod IP in its SAN. After approval and issuance,
Nebula atomically replaces the self-signed fallback certificate without
restarting the kubelet API or interrupting existing streams.

Why

Managed Kubernetes control planes such as EKS may verify kubelet serving
certificates. Nebula previously used only a self-signed certificate, causing
kubectl logs and kubectl exec to fail with:

x509: certificate signed by unknown authority

Additional changes

  • Added certificate renewal
  • Added CSR RBAC permissions
  • Added POD_NAME and POD_UID projections
  • Added CSR approval documentation
  • Added certificate bootstrap and IP SAN tests

Verification

  • go test ./pkg/vnode ./cmd -count=1
  • go vet ./...
  • GolangCI-Lint: 0 new issues
  • Kustomize manifests render successfully
  • Linux/amd64 manager build succeeds

Deployment note

The kubernetes.io/kubelet-serving signer requires an external approval
decision. Approve the generated CSR with:

kubectl certificate approve <csr-name>

r3loac added 3 commits August 25, 2026 15:03
- Add a Status printer column derived from the NodePool Ready condition
- Regenerate the NodePool CRD
- Add regression coverage for the printer column
- Document the design, behavior, and deployment workflow
Add a Status printer column derived from the NodePool Ready condition
Regenerate the NodePool CRD
Add regression coverage for the printer column
Document the design, behavior, and deployment workflow
- Request a kubernetes.io/kubelet-serving certificate for the manager Pod IP
- Replace the self-signed certificate after CSR approval without restarting
- Renew serving certificates before expiration
- Add the required Pod identity environment variables and CSR RBAC
- Document CSR approval and kubelet TLS configuration
- Add coverage for certificate installation and IP SAN validation
@InftyAI-Agent InftyAI-Agent added needs-triage Indicates an issue or PR lacks a label and requires one. needs-priority Indicates a PR lacks a label and requires one. do-not-merge/needs-kind Indicates a PR lacks a label and requires one. labels Aug 28, 2026
@InftyAI-Agent
InftyAI-Agent requested a review from kerthcet August 28, 2026 19:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/needs-kind Indicates a PR lacks a label and requires one. needs-priority Indicates a PR lacks a label and requires one. needs-triage Indicates an issue or PR lacks a label and requires one.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants