Parent: #441
Depends on: Kubernetes workload lifecycle and status
Summary
Complete the initial Kubernetes integration by supporting workload reconfiguration, handling Kubernetes networking semantics, adding end-to-end testing, and documenting local setup and RBAC.
Reconfiguration
Update an existing Kubernetes Deployment when Manager configuration changes.
Support:
- environment variables
- entrypoint/command
- CPU
- memory
Patch the existing Deployment's Pod template rather than replacing the Manager workload identity.
Allow Kubernetes Deployment rollout behavior to replace Pods.
Rollout waiting
After modifying the Deployment:
- wait for the updated generation to be observed
- wait for the desired replica to become available
- use a bounded timeout
- report useful rollout failure information
Networking
Kubernetes networking differs from Proxmox.
A Kubernetes workload must not require a stable MAC address.
For Kubernetes:
macAddress = null
must be valid.
Creation and reconfiguration must not fail solely because a MAC address is unavailable.
Pod IP
Manager may discover and expose the current Ready Pod's IP.
However, Pod IP must be treated as ephemeral because it may change after:
- restart
- rescheduling
- rollout
- node failure
Do not use Pod identity or Pod IP as the permanent Manager workload identity.
Shared provider cleanup
Refactor shared creation/reconfiguration logic so it does not universally assume:
- stable MAC address
- stable IP address
- Proxmox VMID
- Proxmox task IDs
- Proxmox storage
- LXC configuration
Avoid unnecessary Kubernetes-specific branches in shared jobs.
NetBox and DNS
Do not register an ephemeral Kubernetes Pod IP as permanent infrastructure state.
For the initial integration, skip unsupported NetBox/DNS behavior when no stable Kubernetes network endpoint exists.
Stable Service/Ingress networking should be handled separately.
RBAC documentation
Document least-privilege permissions required by Manager.
Manager should not require cluster-admin.
Prefer namespace-scoped permissions for workload operations.
Document any cluster-scoped node discovery permission separately.
Only grant access to Kubernetes resources actually required by the implementation.
Local integration test
Document and test the complete flow using Docker Desktop Kubernetes or kind.
Test using an image such as:
nginx:latest
Flow:
- Configure Kubernetes node.
- Validate Kubernetes API connection.
- Create Manager container.
- Verify Deployment.
- Verify Ready Pod.
- Verify Manager reports running.
- Stop workload.
- Verify replicas = 0.
- Start workload.
- Verify replicas = 1.
- Change environment variable.
- Verify Deployment rollout.
- Change CPU/memory.
- Verify Deployment rollout.
- Read current Pod IP.
- Confirm MAC may remain null.
- Delete workload.
- Verify Deployment and Pods are removed.
Automated tests
Add tests covering:
- reconfiguration patches
- environment updates/removal
- entrypoint updates
- CPU updates
- memory updates
- rollout waiting
- rollout timeout
- Pod discovery
- Pod IP handling
- nullable MAC behavior
- provider-neutral network behavior
- existing provider regression cases
Normal CI should not require a real Kubernetes cluster.
Documentation
Document:
- Kubernetes architecture
- node configuration
- kubeconfig usage
- namespace behavior
- local Kubernetes setup
- workload lifecycle
- reconfiguration
- RBAC
- networking limitations
- ephemeral Pod IP behavior
- unsupported features
Acceptance criteria
Non-goals
The initial integration does not include:
- Kubernetes Services
- Ingress
- LoadBalancers
- NodePorts
- PersistentVolumes
- StatefulSets
- DaemonSets
- Jobs/CronJobs
- Helm
- autoscaling
- multi-container Pods
- arbitrary replica management
- pod exec/log streaming
- Kubernetes cluster creation
Parent: #441
Depends on: Kubernetes workload lifecycle and status
Summary
Complete the initial Kubernetes integration by supporting workload reconfiguration, handling Kubernetes networking semantics, adding end-to-end testing, and documenting local setup and RBAC.
Reconfiguration
Update an existing Kubernetes Deployment when Manager configuration changes.
Support:
Patch the existing Deployment's Pod template rather than replacing the Manager workload identity.
Allow Kubernetes Deployment rollout behavior to replace Pods.
Rollout waiting
After modifying the Deployment:
Networking
Kubernetes networking differs from Proxmox.
A Kubernetes workload must not require a stable MAC address.
For Kubernetes:
macAddress = nullmust be valid.
Creation and reconfiguration must not fail solely because a MAC address is unavailable.
Pod IP
Manager may discover and expose the current Ready Pod's IP.
However, Pod IP must be treated as ephemeral because it may change after:
Do not use Pod identity or Pod IP as the permanent Manager workload identity.
Shared provider cleanup
Refactor shared creation/reconfiguration logic so it does not universally assume:
Avoid unnecessary Kubernetes-specific branches in shared jobs.
NetBox and DNS
Do not register an ephemeral Kubernetes Pod IP as permanent infrastructure state.
For the initial integration, skip unsupported NetBox/DNS behavior when no stable Kubernetes network endpoint exists.
Stable Service/Ingress networking should be handled separately.
RBAC documentation
Document least-privilege permissions required by Manager.
Manager should not require
cluster-admin.Prefer namespace-scoped permissions for workload operations.
Document any cluster-scoped node discovery permission separately.
Only grant access to Kubernetes resources actually required by the implementation.
Local integration test
Document and test the complete flow using Docker Desktop Kubernetes or
kind.Test using an image such as:
nginx:latestFlow:
Automated tests
Add tests covering:
Normal CI should not require a real Kubernetes cluster.
Documentation
Document:
Acceptance criteria
macAddress = null.Non-goals
The initial integration does not include: