fix: add request_upgrades.py to image, add web dashboard
- Dockerfile: add COPY for request_upgrades.py (was missing — root cause of Monday upgrade CronJob failing with 'No such file'), add git (needed for repo cloning in upgrade workflow), copy web.py + templates/ - requirements.txt: add fastapi, uvicorn, jinja2 for web dashboard - web.py: FastAPI dashboard with image inventory and upgrade trigger pages - templates/: base layout, images page (namespace→app→container grouped with live version status), upgrade page (outdated list + trigger button + job history) - kubernetes/web-deployment.yaml: Deployment + LoadBalancer at 192.168.87.13 - kubernetes/rbac.yaml: add version-tracker-web ServiceAccount, ClusterRole (read pods/deployments/replicasets/statefulsets/daemonsets/jobs/cronjobs), and namespace Role to create upgrade Jobs - kubernetes/upgrade-cronjob.yaml: fix YAML indentation bug on GITEA_USERNAME and GITEA_COMMITTER_NAME env vars
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="h-full">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>{% block title %}K8s Image Dashboard{% endblock %}</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
|
||||
<style>
|
||||
[x-cloak] { display: none !important; }
|
||||
body { background-color: #0a0f1e; }
|
||||
.status-outdated { @apply bg-red-950 text-red-300 ring-1 ring-red-700; }
|
||||
.status-current { @apply bg-green-950 text-green-300 ring-1 ring-green-800; }
|
||||
.status-floating { @apply bg-yellow-950 text-yellow-300 ring-1 ring-yellow-800; }
|
||||
.status-local { @apply bg-gray-800 text-gray-400 ring-1 ring-gray-700; }
|
||||
.status-skipped { @apply bg-gray-800 text-gray-500 ring-1 ring-gray-700; }
|
||||
.status-pending { @apply bg-blue-950 text-blue-400 ring-1 ring-blue-800; }
|
||||
.status-unknown { @apply bg-gray-800 text-gray-500 ring-1 ring-gray-700; }
|
||||
</style>
|
||||
</head>
|
||||
<body class="h-full text-gray-100 min-h-screen">
|
||||
|
||||
<nav class="bg-gray-900 border-b border-gray-800 sticky top-0 z-50">
|
||||
<div class="max-w-screen-2xl mx-auto px-6 py-3 flex items-center gap-8">
|
||||
<a href="/" class="flex items-center gap-2 text-blue-400 font-bold text-lg tracking-wide hover:text-blue-300">
|
||||
<span class="text-xl">⎈</span>
|
||||
<span>K8s Image Dashboard</span>
|
||||
</a>
|
||||
<div class="flex gap-1">
|
||||
<a href="/"
|
||||
class="px-3 py-1.5 rounded text-sm transition-colors
|
||||
{% if request.url.path == '/' %}bg-gray-700 text-white font-medium{% else %}text-gray-400 hover:text-white hover:bg-gray-800{% endif %}">
|
||||
Images
|
||||
</a>
|
||||
<a href="/upgrade"
|
||||
class="px-3 py-1.5 rounded text-sm transition-colors
|
||||
{% if request.url.path == '/upgrade' %}bg-gray-700 text-white font-medium{% else %}text-gray-400 hover:text-white hover:bg-gray-800{% endif %}">
|
||||
Upgrade
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main class="max-w-screen-2xl mx-auto px-6 py-6">
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user