From 444fb1058ed88e409344fd9b761a45214edde8c2 Mon Sep 17 00:00:00 2001 From: chemavx Date: Thu, 7 May 2026 20:47:17 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20add=20Ghost=20CMS=20deployment=20for=20?= =?UTF-8?q?Zona=20de=20Exclusi=C3=B3n=20blog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- zona-exclusion/argocd-app.yaml | 20 +++++ zona-exclusion/deployment.yaml | 134 +++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 zona-exclusion/argocd-app.yaml create mode 100644 zona-exclusion/deployment.yaml diff --git a/zona-exclusion/argocd-app.yaml b/zona-exclusion/argocd-app.yaml new file mode 100644 index 0000000..ad39cbc --- /dev/null +++ b/zona-exclusion/argocd-app.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: zona-exclusion + namespace: argocd +spec: + project: default + source: + repoURL: https://git.chemavx.xyz/chemavx/k8s-manifests + targetRevision: HEAD + path: zona-exclusion + destination: + server: https://kubernetes.default.svc + namespace: zona-exclusion + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true diff --git a/zona-exclusion/deployment.yaml b/zona-exclusion/deployment.yaml new file mode 100644 index 0000000..e5ec029 --- /dev/null +++ b/zona-exclusion/deployment.yaml @@ -0,0 +1,134 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: zona-exclusion + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: zona-exclusion-data + namespace: zona-exclusion +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: zona-exclusion + namespace: zona-exclusion + labels: + app: zona-exclusion +spec: + replicas: 1 + selector: + matchLabels: + app: zona-exclusion + template: + metadata: + labels: + app: zona-exclusion + spec: + containers: + - name: zona-exclusion + image: ghost:5-alpine + imagePullPolicy: Always + env: + - name: url + value: "https://zonadeexclusion.com" + - name: NODE_ENV + value: "production" + - name: mail__transport + value: "SMTP" + - name: mail__options__host + value: "smtp.gmail.com" + - name: mail__options__port + value: "587" + - name: mail__options__auth__user + valueFrom: + secretKeyRef: + name: zona-exclusion-secrets + key: smtp-user + - name: mail__options__auth__pass + valueFrom: + secretKeyRef: + name: zona-exclusion-secrets + key: smtp-pass + - name: mail__from + value: "Zona de Exclusión " + volumeMounts: + - name: data + mountPath: /var/lib/ghost/content + resources: + requests: + memory: "256Mi" + cpu: "100m" + limits: + memory: "512Mi" + cpu: "500m" + volumes: + - name: data + persistentVolumeClaim: + claimName: zona-exclusion-data + +--- +apiVersion: v1 +kind: Service +metadata: + name: zona-exclusion + namespace: zona-exclusion +spec: + selector: + app: zona-exclusion + ports: + - port: 80 + targetPort: 2368 + +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: zona-exclusion + namespace: zona-exclusion + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.entrypoints: websecure +spec: + ingressClassName: traefik + rules: + - host: zonadeexclusion.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: zona-exclusion + port: + number: 80 + tls: + - hosts: + - zonadeexclusion.com + secretName: zona-exclusion-tls + +--- +# Secret template — fill with real values and apply manually +# kubectl create secret generic zona-exclusion-secrets \ +# --from-literal=smtp-user=chemavx@gmail.com \ +# --from-literal=smtp-pass=YOUR_APP_PASSWORD \ +# -n zona-exclusion +apiVersion: v1 +kind: Secret +metadata: + name: zona-exclusion-secrets + namespace: zona-exclusion +type: Opaque +stringData: + smtp-user: "REPLACE_ME" + smtp-pass: "REPLACE_ME"