Co-authored-by: Chris Farhood <chris@farhood.org> Co-committed-by: Chris Farhood <chris@farhood.org>
This commit was merged in pull request #75.
This commit is contained in:
@@ -8,7 +8,7 @@ Headlamp plugin for kube-vip virtual IP and load balancer visibility. Read-only
|
|||||||
|
|
||||||
- **Plugin name**: `kube-vip`
|
- **Plugin name**: `kube-vip`
|
||||||
- **Target**: Headlamp >= v0.26
|
- **Target**: Headlamp >= v0.26
|
||||||
- **Data sources**: kube-vip DaemonSet/pods in `kube-system`, Services (type:LoadBalancer), Nodes, Leases, `kubevip` ConfigMap
|
- **Data sources**: kube-vip DaemonSet/pods in `headlamp`, Services (type:LoadBalancer), Nodes, Leases, `kubevip` ConfigMap
|
||||||
- **Reference plugin**: `../headlamp-polaris-plugin`
|
- **Reference plugin**: `../headlamp-polaris-plugin`
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
@@ -58,7 +58,7 @@ kube-vip uses **no CRDs**. All state comes from standard Kubernetes resources an
|
|||||||
|
|
||||||
## Key constants (src/api/k8s.ts)
|
## Key constants (src/api/k8s.ts)
|
||||||
|
|
||||||
- Namespace: `kube-system`
|
- Namespace: `headlamp`
|
||||||
- DaemonSet name: `kube-vip-ds`
|
- DaemonSet name: `kube-vip-ds`
|
||||||
- Cloud provider name: `kube-vip-cloud-provider`
|
- Cloud provider name: `kube-vip-cloud-provider`
|
||||||
- ConfigMap name: `kubevip`
|
- ConfigMap name: `kubevip`
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Search for `kube-vip` in the Headlamp Plugin Manager (Settings → Plugins → C
|
|||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Headlamp >= v0.26
|
- Headlamp >= v0.26
|
||||||
- kube-vip deployed in `kube-system` (DaemonSet or static pod)
|
- kube-vip deployed in `headlamp` (DaemonSet or static pod)
|
||||||
- Optional: kube-vip-cloud-provider for IP pool management
|
- Optional: kube-vip-cloud-provider for IP pool management
|
||||||
|
|
||||||
## RBAC
|
## RBAC
|
||||||
@@ -66,7 +66,7 @@ npm run lint # ESLint
|
|||||||
|
|
||||||
| Symptom | Cause | Fix |
|
| Symptom | Cause | Fix |
|
||||||
|---------|-------|-----|
|
|---------|-------|-----|
|
||||||
| "kube-vip Not Detected" | No kube-vip pods in kube-system | Install kube-vip per https://kube-vip.io/docs/installation/ |
|
| "kube-vip Not Detected" | No kube-vip pods in headlamp namespace | Install kube-vip per https://kube-vip.io/docs/installation/ |
|
||||||
| No IP pools shown | kubevip ConfigMap not found | Install kube-vip-cloud-provider |
|
| No IP pools shown | kubevip ConfigMap not found | Install kube-vip-cloud-provider |
|
||||||
| Services show "Pending" VIP | No IP pool configured or pool exhausted | Add IP ranges to kubevip ConfigMap |
|
| Services show "Pending" VIP | No IP pool configured or pool exhausted | Add IP ranges to kubevip ConfigMap |
|
||||||
| Leader shows "—" | No kube-vip leases found | Verify leader election is enabled (`vip_leaderelection=true`) |
|
| Leader shows "—" | No kube-vip leases found | Verify leader election is enabled (`vip_leaderelection=true`) |
|
||||||
|
|||||||
+4
-4
@@ -12,10 +12,10 @@ This plugin is **read-only**. It does not perform any write operations against t
|
|||||||
|
|
||||||
- Services (type: LoadBalancer)
|
- Services (type: LoadBalancer)
|
||||||
- Nodes
|
- Nodes
|
||||||
- Pods in `kube-system`
|
- Pods in `headlamp`
|
||||||
- DaemonSets in `kube-system`
|
- DaemonSets in `headlamp`
|
||||||
- Leases in `kube-system`
|
- Leases in `headlamp`
|
||||||
- ConfigMaps in `kube-system`
|
- ConfigMaps in `headlamp`
|
||||||
|
|
||||||
All data is fetched through Headlamp's built-in API proxy, which respects the user's existing RBAC permissions.
|
All data is fetched through Headlamp's built-in API proxy, which respects the user's existing RBAC permissions.
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import {
|
|||||||
isEgressEnabled,
|
isEgressEnabled,
|
||||||
isKubeVipService,
|
isKubeVipService,
|
||||||
isPodReady,
|
isPodReady,
|
||||||
|
KUBE_VIP_NAMESPACE,
|
||||||
phaseToStatus,
|
phaseToStatus,
|
||||||
} from '../api/k8s';
|
} from '../api/k8s';
|
||||||
import { useKubeVipContext } from '../api/KubeVipDataContext';
|
import { useKubeVipContext } from '../api/KubeVipDataContext';
|
||||||
@@ -105,7 +106,9 @@ export default function OverviewPage() {
|
|||||||
{
|
{
|
||||||
name: 'Status',
|
name: 'Status',
|
||||||
value: (
|
value: (
|
||||||
<StatusLabel status="error">No kube-vip pods found in kube-system</StatusLabel>
|
<StatusLabel status="error">
|
||||||
|
No kube-vip pods found in {KUBE_VIP_NAMESPACE}
|
||||||
|
</StatusLabel>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user