From f7e763b3c2980825f082c7b706f0abf6e2391afe Mon Sep 17 00:00:00 2001 From: AB Date: Sun, 19 Apr 2026 16:22:25 +0300 Subject: [PATCH] Added wedding site --- k8s/apps/wedding/app.yaml | 20 ++++++++++ k8s/apps/wedding/deployment.yaml | 60 +++++++++++++++++++++++++++++ k8s/apps/wedding/ingress.yaml | 26 +++++++++++++ k8s/apps/wedding/kustomization.yaml | 9 +++++ k8s/apps/wedding/rbac.yaml | 42 ++++++++++++++++++++ k8s/apps/wedding/service.yaml | 12 ++++++ 6 files changed, 169 insertions(+) create mode 100644 k8s/apps/wedding/app.yaml create mode 100644 k8s/apps/wedding/deployment.yaml create mode 100644 k8s/apps/wedding/ingress.yaml create mode 100644 k8s/apps/wedding/kustomization.yaml create mode 100644 k8s/apps/wedding/rbac.yaml create mode 100644 k8s/apps/wedding/service.yaml diff --git a/k8s/apps/wedding/app.yaml b/k8s/apps/wedding/app.yaml new file mode 100644 index 0000000..0ea5b1c --- /dev/null +++ b/k8s/apps/wedding/app.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: wedding + namespace: argocd +spec: + project: apps + destination: + namespace: wedding + server: https://kubernetes.default.svc + source: + repoURL: ssh://git@gt.hexor.cy:30022/ab/homelab.git + targetRevision: HEAD + path: k8s/apps/wedding + syncPolicy: + automated: + selfHeal: true + prune: true + syncOptions: + - CreateNamespace=true diff --git a/k8s/apps/wedding/deployment.yaml b/k8s/apps/wedding/deployment.yaml new file mode 100644 index 0000000..d145772 --- /dev/null +++ b/k8s/apps/wedding/deployment.yaml @@ -0,0 +1,60 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: wedding + labels: + app: wedding +spec: + replicas: 1 + selector: + matchLabels: + app: wedding + template: + metadata: + labels: + app: wedding + spec: + initContainers: + - name: git-clone + image: alpine/git:latest + command: + - sh + - -c + - git clone --depth 1 https://gt.hexor.cy/ab/wedding.git /src + volumeMounts: + - name: source + mountPath: /src + - name: zola-build + image: ghcr.io/getzola/zola:v0.19.2 + command: + - sh + - -c + - cd /src && zola build --output-dir /public + volumeMounts: + - name: source + mountPath: /src + - name: public + mountPath: /public + containers: + - name: nginx + image: nginx:alpine + ports: + - containerPort: 80 + protocol: TCP + volumeMounts: + - name: public + mountPath: /usr/share/nginx/html + readOnly: true + resources: + requests: + memory: 32Mi + cpu: 10m + limits: + memory: 64Mi + cpu: 100m + volumes: + - name: source + emptyDir: {} + - name: public + emptyDir: {} diff --git a/k8s/apps/wedding/ingress.yaml b/k8s/apps/wedding/ingress.yaml new file mode 100644 index 0000000..fc13c3a --- /dev/null +++ b/k8s/apps/wedding/ingress.yaml @@ -0,0 +1,26 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: wedding-tls-ingress + annotations: + ingressClassName: traefik + cert-manager.io/cluster-issuer: letsencrypt + traefik.ingress.kubernetes.io/router.middlewares: kube-system-https-redirect@kubernetescrd + acme.cert-manager.io/http01-edit-in-place: "true" +spec: + rules: + - host: wedding.hexor.cy + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: wedding + port: + number: 80 + tls: + - secretName: wedding-tls + hosts: + - wedding.hexor.cy diff --git a/k8s/apps/wedding/kustomization.yaml b/k8s/apps/wedding/kustomization.yaml new file mode 100644 index 0000000..12d7f42 --- /dev/null +++ b/k8s/apps/wedding/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - app.yaml + - rbac.yaml + - deployment.yaml + - service.yaml + - ingress.yaml diff --git a/k8s/apps/wedding/rbac.yaml b/k8s/apps/wedding/rbac.yaml new file mode 100644 index 0000000..7f46390 --- /dev/null +++ b/k8s/apps/wedding/rbac.yaml @@ -0,0 +1,42 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: wedding-deployer + namespace: wedding + +--- +apiVersion: v1 +kind: Secret +metadata: + name: wedding-deployer-token + namespace: wedding + annotations: + kubernetes.io/service-account.name: wedding-deployer +type: kubernetes.io/service-account-token + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: wedding-restart + namespace: wedding +rules: + - apiGroups: ["apps"] + resources: ["deployments"] + verbs: ["get", "patch"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: wedding-deployer-restart + namespace: wedding +subjects: + - kind: ServiceAccount + name: wedding-deployer + namespace: wedding +roleRef: + kind: Role + name: wedding-restart + apiGroup: rbac.authorization.k8s.io diff --git a/k8s/apps/wedding/service.yaml b/k8s/apps/wedding/service.yaml new file mode 100644 index 0000000..c04b182 --- /dev/null +++ b/k8s/apps/wedding/service.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: wedding +spec: + selector: + app: wedding + ports: + - port: 80 + targetPort: 80 + protocol: TCP