diff --git a/template/stacks/core/forgejo/values.yaml b/template/stacks/core/forgejo/values.yaml index 1bf35c2..0cb06cd 100644 --- a/template/stacks/core/forgejo/values.yaml +++ b/template/stacks/core/forgejo/values.yaml @@ -27,6 +27,12 @@ gitea: server: DOMAIN: '{{{ .Env.DOMAIN_GITEA }}}' ROOT_URL: 'https://{{{ .Env.DOMAIN_GITEA }}}:443' + mailer: + ENABLED: true + FROM: forgejo@{{{ .Env.DOMAIN_GITEA }}} + PROTOCOL: smtp + SMTP_ADDR: mailhog.mailhog.svc.cluster.local + SMTP_PORT: 1025 service: ssh: diff --git a/template/stacks/core/ingress-apps/mailhog.yaml b/template/stacks/core/ingress-apps/mailhog.yaml new file mode 100644 index 0000000..ceb6060 --- /dev/null +++ b/template/stacks/core/ingress-apps/mailhog.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: mailhog + namespace: mailhog +spec: + ingressClassName: nginx + rules: + - host: {{{ .Env.DOMAIN }}} + http: + paths: + - backend: + service: + name: mailhog + port: + number: 8025 + path: /mailhog + pathType: Prefix diff --git a/template/stacks/ref-implementation/mailhog.yaml b/template/stacks/ref-implementation/mailhog.yaml new file mode 100644 index 0000000..6fd77df --- /dev/null +++ b/template/stacks/ref-implementation/mailhog.yaml @@ -0,0 +1,25 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: mailhog + namespace: argocd + labels: + env: dev + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://{{{ .Env.DOMAIN_GITEA }}}/giteaAdmin/edfbuilder + targetRevision: HEAD + path: "stacks/ref-implementation/mailhog" + destination: + server: "https://kubernetes.default.svc" + namespace: mailhog + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + selfHeal: true + retry: + limit: -1 diff --git a/template/stacks/ref-implementation/mailhog/README.md b/template/stacks/ref-implementation/mailhog/README.md new file mode 100644 index 0000000..dc80e50 --- /dev/null +++ b/template/stacks/ref-implementation/mailhog/README.md @@ -0,0 +1,54 @@ +# Mailhog + +[MailHog is an email testing tool for developers](https://github.com/mailhog/MailHog). + +## In cluster SMTP service + +Ypu can send ESMTP emails in the cluster to `mailhog.mailhog.svc.cluster.local`, standard port `1025`, as defined in the service manifest: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: mailhog +spec: + ports: + - name: smtp + port: 1025 +``` + +## Ingress + +Mailhog offers both WebUi and API at `https://{{{ .Env.DOMAIN }}}/mailhog`. + +The ingress definition is in `stacks/core/ingress-apps/mailhog.yaml` (BTW, why isn't this ingress file here in this folder ??) routing to the mailhog' service + +```yaml +spec: + rules: + - host: {{{ .Env.DOMAIN }}} + http: + paths: + - backend: + ... + path: /mailhog +``` + +## API + +For usage of the API see https://github.com/mailhog/MailHog/blob/master/docs/APIv2.md + +## Tests + +```bash +kubectl run busybox --rm -it --image=busybox -- /bin/sh + +# inside bsybox +wget -O- http://mailhog.mailhog.svc.cluster.local:8025/mailhog + +# check smtp port +nc -zv mailhog.mailhog.svc.cluster.local 1025 + +# send esmtp, first install swaks +swaks --to test@example.com --from test@example.com --server mailhog:1025 --data "Subject: Test-Mail\n\nDies ist eine Test-Mail." +``` \ No newline at end of file diff --git a/template/stacks/ref-implementation/mailhog/deployment.yaml b/template/stacks/ref-implementation/mailhog/deployment.yaml new file mode 100644 index 0000000..b5023ac --- /dev/null +++ b/template/stacks/ref-implementation/mailhog/deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mailhog-deployment + namespace: mailhog +spec: + replicas: 1 + selector: + matchLabels: + app: mailhog + template: + metadata: + labels: + app: mailhog + spec: + containers: + - name: mailhog + image: mailhog/mailhog + env: + - name: MH_UI_WEB_PATH # set this to same value as in ingress stacks/core/ingress-apps/mailhog.yaml + value: mailhog + ports: + - containerPort: 1025 + name: smtp + - containerPort: 8025 + name: http + resources: + requests: + memory: "64Mi" + cpu: "50m" + limits: + memory: "128Mi" + cpu: "100m" \ No newline at end of file diff --git a/template/stacks/ref-implementation/mailhog/service.yaml b/template/stacks/ref-implementation/mailhog/service.yaml new file mode 100644 index 0000000..77781c8 --- /dev/null +++ b/template/stacks/ref-implementation/mailhog/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: mailhog +spec: + selector: + app: mailhog + ports: + - name: smtp + port: 1025 + - name: http + port: 8025 + type: ClusterIP \ No newline at end of file