Files
k8s-version-tracker/templates/base.html
T
claude-code 5ac7b2f5c5
CI/CD / lint-test (push) Failing after 1m40s
CI/CD / build-push (push) Has been skipped
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
2026-07-12 16:15:15 +00:00

50 lines
2.1 KiB
HTML

<!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>