diff --git a/apps/nginx-canary/namespace.yaml b/apps/nginx-canary/namespace.yaml
new file mode 100644
index 0000000..8d2327f
--- /dev/null
+++ b/apps/nginx-canary/namespace.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: nginx-canary
+ labels:
+ track: canary
diff --git a/apps/nginx-mcp/application.yaml b/apps/nginx-mcp/application.yaml
new file mode 100644
index 0000000..a9be81f
--- /dev/null
+++ b/apps/nginx-mcp/application.yaml
@@ -0,0 +1,20 @@
+apiVersion: argoproj.io/v1alpha1
+kind: Application
+metadata:
+ name: nginx-mcp
+ namespace: argocd
+spec:
+ project: default
+ source:
+ repoURL: http://gitea-http.gitea.svc.cluster.local:3000/admin/k3s-gitops
+ path: apps/nginx-mcp
+ targetRevision: HEAD
+ destination:
+ server: https://kubernetes.default.svc
+ namespace: nginx-mcp
+ syncPolicy:
+ automated:
+ prune: true
+ selfHeal: true
+ syncOptions:
+ - CreateNamespace=true
diff --git a/apps/nginx-mcp/configmap.yaml b/apps/nginx-mcp/configmap.yaml
new file mode 100644
index 0000000..dd292ef
--- /dev/null
+++ b/apps/nginx-mcp/configmap.yaml
@@ -0,0 +1,111 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: nginx-mcp-html
+ namespace: nginx-mcp
+data:
+ index.html: |
+
+
+
+
+
+ Hello from MCP - v1 Stable
+
+
+
+
+
🤖 MCP Powered
+
v1 stable
+
Hello from MCP
+
Deployed via AI-assisted GitOps pipeline
+
+
Your IP Address
+
Detecting...
+
+
+
+
+
+
+ nginx.conf: |
+ server {
+ listen 80;
+ server_name _;
+ root /usr/share/nginx/html;
+ index index.html;
+ location / {
+ try_files $uri $uri/ =404;
+ }
+ }
diff --git a/apps/nginx-mcp/deployment.yaml b/apps/nginx-mcp/deployment.yaml
new file mode 100644
index 0000000..f186104
--- /dev/null
+++ b/apps/nginx-mcp/deployment.yaml
@@ -0,0 +1,56 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: nginx-mcp
+ namespace: nginx-mcp
+ labels:
+ app: nginx-mcp
+ track: stable
+ version: v1.0.0
+spec:
+ replicas: 3
+ selector:
+ matchLabels:
+ app: nginx-mcp
+ template:
+ metadata:
+ labels:
+ app: nginx-mcp
+ track: stable
+ version: v1.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-mcp-html
diff --git a/apps/nginx-mcp/namespace.yaml b/apps/nginx-mcp/namespace.yaml
new file mode 100644
index 0000000..9ed5ca5
--- /dev/null
+++ b/apps/nginx-mcp/namespace.yaml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: nginx-mcp
+ labels:
+ track: stable
diff --git a/apps/nginx-mcp/service.yaml b/apps/nginx-mcp/service.yaml
new file mode 100644
index 0000000..9f89877
--- /dev/null
+++ b/apps/nginx-mcp/service.yaml
@@ -0,0 +1,16 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: nginx-mcp
+ namespace: nginx-mcp
+ labels:
+ app: nginx-mcp
+ track: stable
+spec:
+ selector:
+ app: nginx-mcp
+ ports:
+ - name: http
+ port: 80
+ targetPort: 80
+ type: ClusterIP