feat: add nginx-canary configmap - v2 amber gradient with canary banner
This commit is contained in:
61
apps/nginx-canary/configmap.yaml
Normal file
61
apps/nginx-canary/configmap.yaml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: nginx-canary-config
|
||||||
|
namespace: nginx-canary
|
||||||
|
data:
|
||||||
|
index.html: |
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>MCP Canary v2</title>
|
||||||
|
<style>
|
||||||
|
*{margin:0;padding:0;box-sizing:border-box}
|
||||||
|
body{min-height:100vh;background:linear-gradient(135deg,#1a0a00 0%,#7c2d00 40%,#d97706 70%,#1a0a00 100%);font-family:'Segoe UI',system-ui,sans-serif;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff}
|
||||||
|
.banner{width:100%;background:rgba(220,38,38,.85);color:#fff;text-align:center;padding:12px;font-size:.9rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;position:fixed;top:0;left:0;z-index:10}
|
||||||
|
.card{background:rgba(255,255,255,.07);backdrop-filter:blur(16px);border:1px solid rgba(251,146,60,.3);border-radius:20px;padding:50px 60px;max-width:580px;width:90%;text-align:center;box-shadow:0 8px 60px rgba(217,119,6,.25);margin-top:48px}
|
||||||
|
h1{font-size:2.4rem;font-weight:700;margin-bottom:10px}
|
||||||
|
.badge{display:inline-block;background:linear-gradient(90deg,#d97706,#f59e0b);color:#1a0a00;font-size:.78rem;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:5px 16px;border-radius:99px;margin-bottom:28px}
|
||||||
|
.version{font-size:1rem;color:#fcd34d;margin-bottom:24px;font-weight:500}
|
||||||
|
hr{border:none;border-top:1px solid rgba(251,146,60,.2);margin:24px 0}
|
||||||
|
.ip-label{font-size:.8rem;color:#fbbf24;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px}
|
||||||
|
.ip-value{font-size:1.4rem;font-weight:600;color:#fef3c7;font-family:monospace}
|
||||||
|
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px;text-align:left}
|
||||||
|
.grid-item{background:rgba(255,255,255,.05);border:1px solid rgba(251,146,60,.2);border-radius:10px;padding:10px 14px}
|
||||||
|
.grid-label{font-size:.7rem;color:#fbbf24;text-transform:uppercase;letter-spacing:1px}
|
||||||
|
.grid-value{font-size:.9rem;font-weight:600;color:#fef3c7;font-family:monospace}
|
||||||
|
.footer{margin-top:28px;font-size:.75rem;color:rgba(251,146,60,.5)}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="banner">⚠ This is a CANARY build — not for production use</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="badge">Canary Release</div>
|
||||||
|
<h1>Hello from MCP v2</h1>
|
||||||
|
<div class="version">v2.0.0 canary</div>
|
||||||
|
<hr/>
|
||||||
|
<div class="ip-label">Your IP Address</div>
|
||||||
|
<div class="ip-value" id="ip">detecting...</div>
|
||||||
|
<div class="grid">
|
||||||
|
<div class="grid-item"><div class="grid-label">Track</div><div class="grid-value">canary</div></div>
|
||||||
|
<div class="grid-item"><div class="grid-label">Version</div><div class="grid-value">v2.0.0</div></div>
|
||||||
|
<div class="grid-item"><div class="grid-label">Image</div><div class="grid-value">nginx:1.25-alpine</div></div>
|
||||||
|
<div class="grid-item"><div class="grid-label">Replicas</div><div class="grid-value">2</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">thedevops.dev - nginx-canary namespace</div>
|
||||||
|
</div>
|
||||||
|
<script>fetch('https://api.ipify.org?format=json').then(r=>r.json()).then(d=>document.getElementById('ip').textContent=d.ip).catch(()=>document.getElementById('ip').textContent='unavailable')</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
nginx.conf: |
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
add_header X-Version "v2.0.0" always;
|
||||||
|
add_header X-Track "canary" always;
|
||||||
|
location / { try_files $uri $uri/ /index.html; }
|
||||||
|
location /healthz { return 200 'ok'; add_header Content-Type text/plain; }
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user