Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 96b7ff0e24 | |||
| f4acf34ccc | |||
| 4813f3c314 | |||
| c83a8c775b | |||
| 1f2287489c | |||
| dd2d942d39 | |||
| 8e9b2c2645 | |||
| ac3d9e87ca | |||
| ad99689f47 | |||
| 90623e32c7 | |||
| aeb762ff85 | |||
| a86fb9f596 | |||
| 079a96f7d2 | |||
| f6abc14a95 | |||
| 8f32bb3545 | |||
| acf8ce55ca | |||
| f5fd03fe75 | |||
| 91abf23ceb | |||
| 44efa23362 | |||
| 78f4db1b46 | |||
| 4b6b57a198 | |||
| b18c738327 | |||
| 7ad3069235 | |||
| 8800d73d68 | |||
| 2a8646a831 | |||
| 8d0c1b4cee | |||
| d7eebd2f4a | |||
| fe1d1dcf3e | |||
| be9fe7ebd5 |
@@ -0,0 +1,20 @@
|
|||||||
|
name: Dual Approval (CTO + QA)
|
||||||
|
|
||||||
|
# Calls the shared dual-approval-check workflow.
|
||||||
|
# Passes when both privilegedescalation-cto and privilegedescalation-qa
|
||||||
|
# have approved the PR. Add "Dual Approval (CTO + QA)" to required_status_checks
|
||||||
|
# in branch protection to enforce this gate.
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_review:
|
||||||
|
types: [submitted, dismissed]
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
types: [opened, reopened, synchronize]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
dual-approval:
|
||||||
|
uses: privilegedescalation/.github/.github/workflows/dual-approval-check.yaml@main
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
pr_number: ${{ github.event.pull_request.number }}
|
||||||
@@ -7,6 +7,8 @@ on:
|
|||||||
description: 'Release version (e.g. 1.0.0)'
|
description: 'Release version (e.g. 1.0.0)'
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
repository_dispatch:
|
||||||
|
types: [release]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@@ -15,6 +17,10 @@ permissions:
|
|||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
uses: privilegedescalation/.github/.github/workflows/plugin-release.yaml@main
|
uses: privilegedescalation/.github/.github/workflows/plugin-release.yaml@main
|
||||||
|
secrets:
|
||||||
|
RELEASE_APP_ID: ${{ secrets.RELEASE_APP_ID }}
|
||||||
|
RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
||||||
with:
|
with:
|
||||||
version: ${{ inputs.version }}
|
version: ${{ inputs.version || github.event.client_payload.version }}
|
||||||
upstream-repo: 'kube-vip/kube-vip'
|
upstream-repo: 'kube-vip/kube-vip'
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,19 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.0.0] - 2026-03-24
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Add missing devDependencies to align with reference plugin: `@mui/material`, `@types/react`, `@types/react-dom`, `notistack`
|
||||||
|
- Pin `vitest` to `^3.2.4`
|
||||||
|
- Add dual-approval caller workflow for CI
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Bump version from 0.1.5 to 1.0.0 (stable release)
|
||||||
|
- Extend Renovate config from org-level preset
|
||||||
|
- Add pinDigests for GitHub Actions SHA pinning
|
||||||
|
|
||||||
## [0.1.3] - 2026-03-04
|
## [0.1.3] - 2026-03-04
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
@@ -38,3 +52,9 @@
|
|||||||
- Nodes page with kube-vip pod status and leader designation
|
- Nodes page with kube-vip pod status and leader designation
|
||||||
- Configuration page with DaemonSet config, IP pools, leases
|
- Configuration page with DaemonSet config, IP pools, leases
|
||||||
- Service detail section injected into native Headlamp Service views
|
- Service detail section injected into native Headlamp Service views
|
||||||
|
|
||||||
|
[1.0.0]: https://github.com/privilegedescalation/headlamp-kube-vip-plugin/compare/v0.1.5...v1.0.0
|
||||||
|
[0.1.3]: https://github.com/privilegedescalation/headlamp-kube-vip-plugin/compare/v0.1.2...v0.1.3
|
||||||
|
[0.1.2]: https://github.com/privilegedescalation/headlamp-kube-vip-plugin/compare/v0.1.1...v0.1.2
|
||||||
|
[0.1.1]: https://github.com/privilegedescalation/headlamp-kube-vip-plugin/compare/v0.1.0...v0.1.1
|
||||||
|
[0.1.0]: https://github.com/privilegedescalation/headlamp-kube-vip-plugin/releases/tag/v0.1.0
|
||||||
|
|||||||
@@ -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 kube-system 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`) |
|
||||||
|
|||||||
+18
-3
@@ -1,4 +1,4 @@
|
|||||||
version: "0.1.4"
|
version: "1.0.2"
|
||||||
name: headlamp-kube-vip
|
name: headlamp-kube-vip
|
||||||
displayName: kube-vip
|
displayName: kube-vip
|
||||||
createdAt: "2026-03-04T00:00:00Z"
|
createdAt: "2026-03-04T00:00:00Z"
|
||||||
@@ -25,7 +25,22 @@ maintainers:
|
|||||||
provider:
|
provider:
|
||||||
name: privilegedescalation
|
name: privilegedescalation
|
||||||
annotations:
|
annotations:
|
||||||
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-kube-vip-plugin/releases/download/v0.1.4/kube-vip-0.1.4.tar.gz"
|
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-kube-vip-plugin/releases/download/v1.0.2/kube-vip-1.0.2.tar.gz"
|
||||||
headlamp/plugin/archive-checksum: sha256:d926d467a091e7b346afd3f6a09abc2205b7a8c290ecf65920f45df6206f7017
|
headlamp/plugin/archive-checksum: sha256:cb6b8b6d93a41c129304c57ed705cdafbcb4d6e7511ce5bad0aa05d5762c3fbf
|
||||||
headlamp/plugin/version-compat: ">=0.26"
|
headlamp/plugin/version-compat: ">=0.26"
|
||||||
headlamp/plugin/distro-compat: "in-cluster"
|
headlamp/plugin/distro-compat: "in-cluster"
|
||||||
|
changes:
|
||||||
|
- kind: changed
|
||||||
|
description: "Fix ArtifactHub checksum for v1.0.0 release tarball"
|
||||||
|
- kind: added
|
||||||
|
description: "v1.0.0 stable release"
|
||||||
|
- kind: changed
|
||||||
|
description: "Bump version from 0.1.5 to 1.0.0"
|
||||||
|
- kind: changed
|
||||||
|
description: "Add missing devDependencies: @mui/material, @types/react, @types/react-dom, notistack; pin vitest to ^3.2.4"
|
||||||
|
- kind: changed
|
||||||
|
description: "Extend Renovate config from org-level preset"
|
||||||
|
- kind: changed
|
||||||
|
description: "Add pinDigests for GitHub Actions SHA pinning"
|
||||||
|
- kind: changed
|
||||||
|
description: "Add dual-approval caller workflow"
|
||||||
|
|||||||
Generated
+2286
-897
File diff suppressed because it is too large
Load Diff
+14
-3
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "kube-vip",
|
"name": "kube-vip",
|
||||||
"version": "0.1.4",
|
"version": "1.0.2",
|
||||||
"description": "Headlamp plugin for kube-vip virtual IP and load balancer visibility",
|
"description": "Headlamp plugin for kube-vip virtual IP and load balancer visibility",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
"homepage": "https://github.com/privilegedescalation/headlamp-kube-vip-plugin#readme",
|
"homepage": "https://github.com/privilegedescalation/headlamp-kube-vip-plugin#readme",
|
||||||
"author": "privilegedescalation",
|
"author": "privilegedescalation",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
"packageManager": "pnpm@10.32.1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "headlamp-plugin start",
|
"start": "headlamp-plugin start",
|
||||||
"build": "headlamp-plugin build",
|
"build": "headlamp-plugin build",
|
||||||
@@ -30,17 +31,27 @@
|
|||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"tar": "^7.5.11",
|
"tar": "^7.5.11",
|
||||||
"undici": "^7.24.3"
|
"undici": "^7.24.3",
|
||||||
|
"lodash": ">=4.18.0",
|
||||||
|
"vite": ">=6.4.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@headlamp-k8s/eslint-config": "^0.6.0",
|
||||||
"@kinvolk/headlamp-plugin": "^0.13.0",
|
"@kinvolk/headlamp-plugin": "^0.13.0",
|
||||||
|
"@mui/material": "^5.15.14",
|
||||||
"@testing-library/jest-dom": "^6.4.8",
|
"@testing-library/jest-dom": "^6.4.8",
|
||||||
"@testing-library/react": "^16.0.0",
|
"@testing-library/react": "^16.0.0",
|
||||||
"@testing-library/user-event": "^14.5.2",
|
"@testing-library/user-event": "^14.5.2",
|
||||||
|
"@types/react": "^18.0.0",
|
||||||
|
"@types/react-dom": "^18.0.0",
|
||||||
|
"eslint": "^8.57.0",
|
||||||
"jsdom": "^24.0.0",
|
"jsdom": "^24.0.0",
|
||||||
|
"notistack": "^3.0.0",
|
||||||
|
"prettier": "^2.8.8",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
"react-router-dom": "^5.3.0",
|
"react-router-dom": "^5.3.0",
|
||||||
"vitest": "^3.0.5"
|
"typescript": "~5.6.2",
|
||||||
|
"vitest": "^3.2.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+11990
File diff suppressed because it is too large
Load Diff
+2
-16
@@ -1,19 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
"extends": ["config:recommended"],
|
"extends": ["github>privilegedescalation/.github:renovate-config"]
|
||||||
"baseBranches": ["main"],
|
|
||||||
"schedule": ["every weekend"],
|
|
||||||
"prConcurrentLimit": 10,
|
|
||||||
"packageRules": [
|
|
||||||
{
|
|
||||||
"matchManagers": ["npm"],
|
|
||||||
"matchUpdateTypes": ["minor", "patch"],
|
|
||||||
"groupName": "npm minor and patch"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"matchManagers": ["github-actions"],
|
|
||||||
"matchUpdateTypes": ["minor", "patch"],
|
|
||||||
"groupName": "github-actions minor and patch"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,7 @@ 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