diff --git a/apps/nginx-canary/application.yaml b/apps/nginx-canary/application.yaml new file mode 100644 index 0000000..1cc990e --- /dev/null +++ b/apps/nginx-canary/application.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: nginx-canary + namespace: argocd +spec: + project: default + source: + repoURL: http://gitea-http.gitea.svc.cluster.local:3000/admin/k3s-gitops + path: apps/nginx-canary + targetRevision: HEAD + destination: + server: https://kubernetes.default.svc + namespace: nginx-canary + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true diff --git a/apps/nginx-canary/configmap.yaml b/apps/nginx-canary/configmap.yaml new file mode 100644 index 0000000..4a8e3f8 --- /dev/null +++ b/apps/nginx-canary/configmap.yaml @@ -0,0 +1,180 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-canary-html + namespace: nginx-canary +data: + index.html: | + + + + + + Hello from MCP v2 — Canary + + + +
+
🐤 Canary Release

+
v2.0.0
+

Hello from MCP v2

+

Canary deployment — receiving experimental traffic

+
⚠ This is a CANARY build — not yet promoted to stable
+
+
Your IP Address
+
Detecting...
+
+
+
+
Track
+
canary
+
+
+
Version
+
v2.0.0
+
+
+
Image
+
nginx:1.25-alpine
+
+
+
Replicas
+
2
+
+
+ +
+ + + + 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/ =404; + } + } diff --git a/apps/nginx-canary/deployment.yaml b/apps/nginx-canary/deployment.yaml new file mode 100644 index 0000000..0e5b363 --- /dev/null +++ b/apps/nginx-canary/deployment.yaml @@ -0,0 +1,56 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-canary + namespace: nginx-canary + labels: + app: nginx-canary + track: canary + version: v2.0.0 +spec: + replicas: 2 + selector: + matchLabels: + app: nginx-canary + template: + metadata: + labels: + app: nginx-canary + track: canary + version: v2.0.0 + spec: + containers: + - name: nginx + image: nginx:1.25-alpine + ports: + - containerPort: 80 + volumeMounts: + - name: html + mountPath: /usr/share/nginx/html/index.html + subPath: index.html + - name: html + mountPath: /etc/nginx/conf.d/default.conf + subPath: nginx.conf + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + cpu: 200m + memory: 128Mi + readinessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 10 + periodSeconds: 20 + volumes: + - name: html + configMap: + name: nginx-canary-html diff --git a/apps/nginx-canary/namespace.yaml b/apps/nginx-canary/namespace.yaml index 8d2327f..04f8c8b 100644 --- a/apps/nginx-canary/namespace.yaml +++ b/apps/nginx-canary/namespace.yaml @@ -4,3 +4,4 @@ metadata: name: nginx-canary labels: track: canary + managed-by: argocd diff --git a/apps/nginx-canary/service.yaml b/apps/nginx-canary/service.yaml new file mode 100644 index 0000000..875a6b1 --- /dev/null +++ b/apps/nginx-canary/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: nginx-canary + namespace: nginx-canary + labels: + app: nginx-canary + track: canary +spec: + selector: + app: nginx-canary + ports: + - name: http + port: 80 + targetPort: 80 + type: ClusterIP