Deleted old folder
parent
3098343360
commit
e67a0d464b
@ -0,0 +1,19 @@
|
|||||||
|
<<<<<<< HEAD
|
||||||
|
FROM alpine:3.7
|
||||||
|
=======
|
||||||
|
FROM alpine:3.8
|
||||||
|
>>>>>>> upstream/master
|
||||||
|
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
dovecot dovecot-pigeonhole-plugin dovecot-fts-lucene rspamd-client \
|
||||||
|
python3 py3-pip \
|
||||||
|
&& pip3 install --upgrade pip \
|
||||||
|
&& pip3 install jinja2 podop tenacity
|
||||||
|
|
||||||
|
COPY conf /conf
|
||||||
|
COPY start.py /start.py
|
||||||
|
|
||||||
|
EXPOSE 110/tcp 143/tcp 993/tcp 4190/tcp 2525/tcp
|
||||||
|
VOLUME ["/data", "/mail"]
|
||||||
|
|
||||||
|
CMD /start.py
|
@ -0,0 +1,14 @@
|
|||||||
|
FROM alpine:edge
|
||||||
|
|
||||||
|
RUN echo "@testing http://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
|
||||||
|
&& apk add --no-cache \
|
||||||
|
dovecot dovecot-sqlite dovecot-pigeonhole-plugin dovecot-pigeonhole-plugin-extdata \
|
||||||
|
rspamd-client@testing python py-jinja2
|
||||||
|
|
||||||
|
COPY conf /conf
|
||||||
|
COPY sieve /var/lib/dovecot
|
||||||
|
COPY start.py /start.py
|
||||||
|
|
||||||
|
EXPOSE 110/tcp 143/tcp 993/tcp 4190/tcp 2525/tcp
|
||||||
|
|
||||||
|
CMD /start.py
|
@ -0,0 +1,14 @@
|
|||||||
|
FROM alpine:3.7
|
||||||
|
|
||||||
|
RUN echo "@testing http://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
|
||||||
|
&& apk add --no-cache \
|
||||||
|
dovecot dovecot-sqlite dovecot-pigeonhole-plugin dovecot-pigeonhole-plugin-extdata \
|
||||||
|
rspamd-client@testing python py-jinja2
|
||||||
|
|
||||||
|
COPY conf /conf
|
||||||
|
COPY sieve /var/lib/dovecot
|
||||||
|
COPY start.py /start.py
|
||||||
|
|
||||||
|
EXPOSE 110/tcp 143/tcp 993/tcp 4190/tcp 2525/tcp
|
||||||
|
|
||||||
|
CMD /start.py
|
@ -0,0 +1,15 @@
|
|||||||
|
FROM alpine:3.8
|
||||||
|
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
dovecot dovecot-pigeonhole-plugin dovecot-fts-lucene rspamd-client \
|
||||||
|
python3 py3-pip \
|
||||||
|
&& pip3 install --upgrade pip \
|
||||||
|
&& pip3 install jinja2 podop tenacity
|
||||||
|
|
||||||
|
COPY conf /conf
|
||||||
|
COPY start.py /start.py
|
||||||
|
|
||||||
|
EXPOSE 110/tcp 143/tcp 993/tcp 4190/tcp 2525/tcp
|
||||||
|
VOLUME ["/data", "/mail"]
|
||||||
|
|
||||||
|
CMD /start.py
|
@ -1,157 +0,0 @@
|
|||||||
# Install Mailu master on kubernetes
|
|
||||||
|
|
||||||
## Prequisites
|
|
||||||
|
|
||||||
### Structure
|
|
||||||
|
|
||||||
There's chosen to have a double NGINX stack for Mailu, this way the main ingress can still be used to access other websites/domains on your cluster. This is the current structure:
|
|
||||||
|
|
||||||
- `NGINX Ingress controller`: Listens to the nodes ports 80 & 443 and directly forwards all TCP traffic on the E-amail ports (993,143,25,587,...). This is because this `DaemonSet` already consumes ports 80 & 443 and uses `hostNetwork: true`
|
|
||||||
- `Cert manager`: Creates automatic Lets Encrypt certificates based on an `Ingress`-objects domain name.
|
|
||||||
- `Mailu NGINX Front container`: This container receives all the mail traffic forwarded from the ingress controller. The web traffic is also forwarded based on an ingress
|
|
||||||
- `Mailu components`: All Mailu components are split into separate files to make them more
|
|
||||||
|
|
||||||
### What you need
|
|
||||||
- A working Kubernetes cluster (tested with 1.10.5)
|
|
||||||
- A working [cert-manager](https://github.com/jetstack/cert-manager) installation
|
|
||||||
- A working nginx-ingress controller needed for the lets-encrypt certificates. You can find those files in the `nginx` subfolder
|
|
||||||
|
|
||||||
#### Cert manager
|
|
||||||
|
|
||||||
The `Cert-manager` is quite easy to deploy using Helm when reading the [docs](https://cert-manager.readthedocs.io/en/latest/getting-started/2-installing.html).
|
|
||||||
After booting the `Cert-manager` you'll need a `ClusterIssuer` which takes care of all required certificates through `Ingress` items. An example:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
apiVersion: certmanager.k8s.io/v1alpha1
|
|
||||||
kind: ClusterIssuer
|
|
||||||
metadata:
|
|
||||||
name: letsencrypt-prod
|
|
||||||
spec:
|
|
||||||
acme:
|
|
||||||
email: something@example.com
|
|
||||||
http01: {}
|
|
||||||
privateKeySecretRef:
|
|
||||||
key: ""
|
|
||||||
name: letsencrypt-stage
|
|
||||||
server: https://acme-v02.api.letsencrypt.org/directory
|
|
||||||
```
|
|
||||||
|
|
||||||
## Deploying Mailu
|
|
||||||
|
|
||||||
All manifests can be found in the `mailu` subdirectory. All commands below need to be run from this subdirectory
|
|
||||||
|
|
||||||
### Personalization
|
|
||||||
- All services run in the same namespace, currently `mailu-mailserver`. So if you want to use a different one, change the `namespace` value in **every** file
|
|
||||||
- Check the `storage-class` field in the `pvc.yaml` file, you can also change the sizes to your liking. Note that you need `RWX` (read-write-many) and `RWO` (read-write-once) storageclasses.
|
|
||||||
- Check the `configmap.yaml` and adapt it to your needs. Be sure to check the kubernetes DNS values at the end (if you use a different namespace)
|
|
||||||
- Check the `ingress-ssl.yaml` and change it to the domain you want (this is for the kubernetes ingress controller, it will forward to `mailu/nginx` a.k.a. the `front` pod)
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
First run the command to start Mailu:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl create -f rbac.yaml
|
|
||||||
kubectl create -f configmap.yaml
|
|
||||||
kubectl create -f pvc.yaml
|
|
||||||
kubectl create -f ingress-ssl.yaml
|
|
||||||
kubectl create -f redis.yaml
|
|
||||||
kubectl create -f front.yaml
|
|
||||||
kubectl create -f webmail.yaml
|
|
||||||
kubectl create -f imap.yaml
|
|
||||||
kubectl create -f security.yaml
|
|
||||||
kubectl create -f smtp.yaml
|
|
||||||
kubectl create -f fetchmail.yaml
|
|
||||||
kubectl create -f admin.yaml
|
|
||||||
kubectl create -f webdav.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
## Create the first admin account
|
|
||||||
|
|
||||||
When the cluster is online you need to create you master user to access `https://mail.example.com/admin`.
|
|
||||||
Enter the main `admin` pod to create the root account:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl -n mailu-mailserver get po
|
|
||||||
kubectl -n mailu-mailserver exec -it mailu-admin-.... /bin/sh
|
|
||||||
```
|
|
||||||
|
|
||||||
And in the pod run the following command. The command uses following entries:
|
|
||||||
- `admin` Make it an admin user
|
|
||||||
- `root` The first part of the e-mail adres (ROOT@example.com)
|
|
||||||
- `example.com` the domain appendix
|
|
||||||
- `password` the chosen password for the user
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python manage.py admin root example.com password
|
|
||||||
```
|
|
||||||
|
|
||||||
Now you should be able to login on the mail account: `https://mail.example.com/admin`
|
|
||||||
|
|
||||||
## Adaptations
|
|
||||||
|
|
||||||
### Postfix
|
|
||||||
I noticed you need an override for the `postfix` server in order to be able to send mail. I noticed Google wasn't able to deliver mail to my account and it had to do with the `smtpd_authorized_xclient_hosts` value in the config file. The config can be read [here](https://github.com/hacor/Mailu/blob/master/core/postfix/conf/main.cf#L35) and is pointing to a single IP of the service. But the requests come from the host IPs (the NGINX Ingress proxy) and they don't use the service specific IP.
|
|
||||||
|
|
||||||
Enter the `postfix` pod:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl -n mailu-mailserver get po
|
|
||||||
kubectl -n mailu-mailserver exec -it mailu-smtp-.... /bin/sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Now you're in the pod, create an override file like so:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vi /overrides/postfix.cf
|
|
||||||
```
|
|
||||||
|
|
||||||
And give it the following contents, off course replacing `10.2.0.0/16` with the CIDR of your pod range. This way the NGINX pods can also restart and your mail server will still operate
|
|
||||||
|
|
||||||
```bash
|
|
||||||
not_needed = true
|
|
||||||
smtpd_authorized_xclient_hosts = 10.2.0.0/16
|
|
||||||
```
|
|
||||||
|
|
||||||
The first line seems stupid, but is needed because its pasted after a #, so from the second line we're really in action.
|
|
||||||
Save and close the file and exit. Now you need to delete the pod in order to recreate the config file.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl -n mailu-mailserver delete po/mailu-smtp-....
|
|
||||||
```
|
|
||||||
|
|
||||||
### Dovecot
|
|
||||||
- If you are using Dovecot on a shared file system (Glusterfs, NFS,...), you need to create a special override otherwise a lot of indexing errors will occur on your Dovecot pod.
|
|
||||||
- I also higher the number of max connections per IP. Now it's limited to 10.
|
|
||||||
Enter the dovecot pod:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl -n mailu-mailserver get po
|
|
||||||
kubectl -n mailu-mailserver exec -it mailu-imap-.... /bin/sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Create the file `/overrides/dovecot.conf`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vi /overrides/dovecot.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
And enter following contents:
|
|
||||||
```bash
|
|
||||||
mail_nfs_index = yes
|
|
||||||
mail_nfs_storage = yes
|
|
||||||
mail_fsync = always
|
|
||||||
mmap_disable = yes
|
|
||||||
mail_max_userip_connections=100
|
|
||||||
```
|
|
||||||
|
|
||||||
Save and close the file and delete the imap pod to get it recreated.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl -n mailu-mailserver delete po/mailu-imap-....
|
|
||||||
```
|
|
||||||
|
|
||||||
Wait for the pod to recreate and you're online!
|
|
||||||
Happy mailing!
|
|
||||||
|
|
||||||
Wait for the pod to recreate and you're online!
|
|
||||||
Happy mailing!
|
|
@ -1,64 +0,0 @@
|
|||||||
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-admin
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-admin
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: admin
|
|
||||||
image: mailu/admin:master
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
volumeMounts:
|
|
||||||
- name: maildata
|
|
||||||
mountPath: /data
|
|
||||||
subPath: maildata
|
|
||||||
- name: maildata
|
|
||||||
mountPath: /dkim
|
|
||||||
subPath: dkim
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 500Mi
|
|
||||||
cpu: 500m
|
|
||||||
limits:
|
|
||||||
memory: 500Mi
|
|
||||||
cpu: 500m
|
|
||||||
volumes:
|
|
||||||
- name: maildata
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: mail-storage
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: admin
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu-admin
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-admin
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 80
|
|
||||||
protocol: TCP
|
|
@ -1,153 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: mailu-config
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
data:
|
|
||||||
# Mailu main configuration file
|
|
||||||
#
|
|
||||||
# Most configuration variables can be modified through the Web interface,
|
|
||||||
# these few settings must however be configured before starting the mail
|
|
||||||
# server and require a restart upon change.
|
|
||||||
|
|
||||||
###################################
|
|
||||||
# Common configuration variables
|
|
||||||
###################################
|
|
||||||
|
|
||||||
# Set this to the path where Mailu data and configuration is stored
|
|
||||||
ROOT: "/mailu"
|
|
||||||
|
|
||||||
# Mailu version to run (1.0, 1.1, etc. or master)
|
|
||||||
VERSION: "master"
|
|
||||||
|
|
||||||
# Set to a randomly generated 16 bytes string
|
|
||||||
SECRET_KEY: "YourKeyHere"
|
|
||||||
|
|
||||||
# Address where listening ports should bind
|
|
||||||
BIND_ADDRESS4: "127.0.0.1"
|
|
||||||
#BIND_ADDRESS6: "::1"
|
|
||||||
|
|
||||||
# Main mail domain
|
|
||||||
DOMAIN: "example.com"
|
|
||||||
|
|
||||||
# Hostnames for this server, separated with comas
|
|
||||||
HOSTNAMES: "mail.example.com"
|
|
||||||
|
|
||||||
# Postmaster local part (will append the main mail domain)
|
|
||||||
POSTMASTER: "admin"
|
|
||||||
|
|
||||||
# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt)
|
|
||||||
TLS_FLAVOR: "cert"
|
|
||||||
|
|
||||||
# Authentication rate limit (per source IP address)
|
|
||||||
AUTH_RATELIMIT: "10/minute;1000/hour"
|
|
||||||
|
|
||||||
# Opt-out of statistics, replace with "True" to opt out
|
|
||||||
DISABLE_STATISTICS: "False"
|
|
||||||
|
|
||||||
###################################
|
|
||||||
# Optional features
|
|
||||||
###################################
|
|
||||||
|
|
||||||
# Expose the admin interface (value: true, false)
|
|
||||||
ADMIN: "true"
|
|
||||||
# Run the admin interface in debug mode
|
|
||||||
#DEBUG: "True"
|
|
||||||
|
|
||||||
# Choose which webmail to run if any (values: roundcube, rainloop, none)
|
|
||||||
WEBMAIL: "roundcube"
|
|
||||||
|
|
||||||
# Dav server implementation (value: radicale, none)
|
|
||||||
WEBDAV: "radicale"
|
|
||||||
|
|
||||||
# Antivirus solution (value: clamav, none)
|
|
||||||
ANTIVIRUS: "clamav"
|
|
||||||
|
|
||||||
###################################
|
|
||||||
# Mail settings
|
|
||||||
###################################
|
|
||||||
|
|
||||||
# Message size limit in bytes
|
|
||||||
# Default: accept messages up to 50MB
|
|
||||||
MESSAGE_SIZE_LIMIT: "50000000"
|
|
||||||
|
|
||||||
# Networks granted relay permissions, make sure that you include your Docker
|
|
||||||
# internal network (default to 172.17.0.0/16)
|
|
||||||
# For kubernetes this is the CIDR of the pod network
|
|
||||||
RELAYNETS: "10.2.0.0/16"
|
|
||||||
POD_ADDRESS_RANGE: "10.2.0.0/16"
|
|
||||||
|
|
||||||
|
|
||||||
# Will relay all outgoing mails if configured
|
|
||||||
#RELAYHOST=
|
|
||||||
|
|
||||||
# This part is needed for the XCLIENT login for postfix. This should be the POD ADDRESS range
|
|
||||||
FRONT_ADDRESS: "front.mailu-mailserver.svc.cluster.local"
|
|
||||||
|
|
||||||
# Fetchmail delay
|
|
||||||
FETCHMAIL_DELAY: "600"
|
|
||||||
|
|
||||||
# Recipient delimiter, character used to delimiter localpart from custom address part
|
|
||||||
# e.g. localpart+custom@domain;tld
|
|
||||||
RECIPIENT_DELIMITER: "+"
|
|
||||||
|
|
||||||
# DMARC rua and ruf email
|
|
||||||
DMARC_RUA: "root"
|
|
||||||
DMARC_RUF: "root"
|
|
||||||
|
|
||||||
# Welcome email, enable and set a topic and body if you wish to send welcome
|
|
||||||
# emails to all users.
|
|
||||||
WELCOME: "false"
|
|
||||||
WELCOME_SUBJECT: "Welcome to your new email account"
|
|
||||||
WELCOME_BODY: "Welcome to your new email account, if you can read this, then it is configured properly!"
|
|
||||||
|
|
||||||
###################################
|
|
||||||
# Web settings
|
|
||||||
###################################
|
|
||||||
|
|
||||||
# Path to the admin interface if enabled
|
|
||||||
WEB_ADMIN: "/admin"
|
|
||||||
|
|
||||||
# Path to the webmail if enabled
|
|
||||||
WEB_WEBMAIL: "/webmail"
|
|
||||||
|
|
||||||
# Website name
|
|
||||||
SITENAME: "AppSynth"
|
|
||||||
|
|
||||||
# Linked Website URL
|
|
||||||
WEBSITE: "https://example.com"
|
|
||||||
|
|
||||||
# Registration reCaptcha settings (warning, this has some privacy impact)
|
|
||||||
# RECAPTCHA_PUBLIC_KEY=
|
|
||||||
# RECAPTCHA_PRIVATE_KEY=
|
|
||||||
|
|
||||||
# Domain registration, uncomment to enable
|
|
||||||
# DOMAIN_REGISTRATION=true
|
|
||||||
|
|
||||||
###################################
|
|
||||||
# Advanced settings
|
|
||||||
###################################
|
|
||||||
|
|
||||||
# Docker-compose project name, this will prepended to containers names.
|
|
||||||
COMPOSE_PROJECT_NAME: "mailu"
|
|
||||||
|
|
||||||
# Default password scheme used for newly created accounts and changed passwords
|
|
||||||
# (value: SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT)
|
|
||||||
PASSWORD_SCHEME: "SHA512-CRYPT"
|
|
||||||
|
|
||||||
# Header to take the real ip from
|
|
||||||
#REAL_IP_HEADER:
|
|
||||||
|
|
||||||
# IPs for nginx set_real_ip_from (CIDR list separated by commas)
|
|
||||||
#REAL_IP_FROM:
|
|
||||||
|
|
||||||
# Host settings
|
|
||||||
HOST_IMAP: "imap.mailu-mailserver.svc.cluster.local"
|
|
||||||
HOST_POP3: "imap.mailu-mailserver.svc.cluster.local"
|
|
||||||
HOST_SMTP: "smtp.mailu-mailserver.svc.cluster.local"
|
|
||||||
HOST_AUTHSMTP: "smtp.mailu-mailserver.svc.cluster.local"
|
|
||||||
HOST_WEBMAIL: "webmail.mailu-mailserver.svc.cluster.local"
|
|
||||||
HOST_ADMIN: "admin.mailu-mailserver.svc.cluster.local"
|
|
||||||
HOST_WEBDAV: "webdav.mailu-mailserver.svc.cluster.local:5232"
|
|
||||||
HOST_ANTISPAM: "antispam.mailu-mailserver.svc.cluster.local:11332"
|
|
||||||
HOST_REDIS: "redis.mailu-mailserver.svc.cluster.local"
|
|
@ -1,39 +0,0 @@
|
|||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-fetchmail
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-fetchmail
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: fetchmail
|
|
||||||
image: mailu/fetchmail:master
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
volumeMounts:
|
|
||||||
- name: maildata
|
|
||||||
mountPath: /data
|
|
||||||
subPath: maildata
|
|
||||||
ports:
|
|
||||||
- containerPort: 5232
|
|
||||||
- containerPort: 80
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 100Mi
|
|
||||||
cpu: 100m
|
|
||||||
limits:
|
|
||||||
memory: 100Mi
|
|
||||||
cpu: 100m
|
|
||||||
volumes:
|
|
||||||
- name: maildata
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: mail-storage
|
|
@ -1,129 +0,0 @@
|
|||||||
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-front
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-front
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
containers:
|
|
||||||
- name: front
|
|
||||||
image: mailu/nginx:latest
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
volumeMounts:
|
|
||||||
- name: certs
|
|
||||||
mountPath: /certs
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: 80
|
|
||||||
protocol: TCP
|
|
||||||
- name: https
|
|
||||||
containerPort: 443
|
|
||||||
protocol: TCP
|
|
||||||
- name: pop3
|
|
||||||
containerPort: 110
|
|
||||||
protocol: TCP
|
|
||||||
- name: pop3s
|
|
||||||
containerPort: 995
|
|
||||||
protocol: TCP
|
|
||||||
- name: imap
|
|
||||||
containerPort: 143
|
|
||||||
protocol: TCP
|
|
||||||
- name: imaps
|
|
||||||
containerPort: 993
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp
|
|
||||||
containerPort: 25
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-auth
|
|
||||||
containerPort: 10025
|
|
||||||
protocol: TCP
|
|
||||||
- name: imap-auth
|
|
||||||
containerPort: 10143
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtps
|
|
||||||
containerPort: 465
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtpd
|
|
||||||
containerPort: 587
|
|
||||||
protocol: TCP
|
|
||||||
- name: auth
|
|
||||||
containerPort: 8000
|
|
||||||
protocol: TCP
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 100Mi
|
|
||||||
cpu: 100m
|
|
||||||
limits:
|
|
||||||
memory: 200Mi
|
|
||||||
cpu: 200m
|
|
||||||
volumes:
|
|
||||||
- name: certs
|
|
||||||
secret:
|
|
||||||
items:
|
|
||||||
- key: tls.crt
|
|
||||||
path: cert.pem
|
|
||||||
- key: tls.key
|
|
||||||
path: key.pem
|
|
||||||
secretName: letsencrypt-certs-all
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: front
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu-admin
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-front
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 80
|
|
||||||
protocol: TCP
|
|
||||||
- name: https
|
|
||||||
port: 443
|
|
||||||
protocol: TCP
|
|
||||||
- name: pop3
|
|
||||||
port: 110
|
|
||||||
protocol: TCP
|
|
||||||
- name: pop3s
|
|
||||||
port: 995
|
|
||||||
protocol: TCP
|
|
||||||
- name: imap
|
|
||||||
port: 143
|
|
||||||
protocol: TCP
|
|
||||||
- name: imaps
|
|
||||||
port: 993
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp
|
|
||||||
port: 25
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtps
|
|
||||||
port: 465
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtpd
|
|
||||||
port: 587
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-auth
|
|
||||||
port: 10025
|
|
||||||
protocol: TCP
|
|
||||||
- name: imap-auth
|
|
||||||
port: 10143
|
|
||||||
protocol: TCP
|
|
@ -1,80 +0,0 @@
|
|||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-imap
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-imap
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: imap
|
|
||||||
image: mailu/dovecot:master
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /data
|
|
||||||
name: maildata
|
|
||||||
subPath: maildata
|
|
||||||
- mountPath: /mail
|
|
||||||
name: maildata
|
|
||||||
subPath: mailstate
|
|
||||||
- mountPath: /overrides
|
|
||||||
name: maildata
|
|
||||||
subPath: overrides
|
|
||||||
ports:
|
|
||||||
- containerPort: 2102
|
|
||||||
- containerPort: 2525
|
|
||||||
- containerPort: 143
|
|
||||||
- containerPort: 993
|
|
||||||
- containerPort: 4190
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 500Mi
|
|
||||||
cpu: 500m
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
cpu: 1000m
|
|
||||||
volumes:
|
|
||||||
- name: maildata
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: mail-storage
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: imap
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-imap
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
ports:
|
|
||||||
- name: imap-auth
|
|
||||||
port: 2102
|
|
||||||
protocol: TCP
|
|
||||||
- name: imap-transport
|
|
||||||
port: 2525
|
|
||||||
protocol: TCP
|
|
||||||
- name: imap-default
|
|
||||||
port: 143
|
|
||||||
protocol: TCP
|
|
||||||
- name: imap-ssl
|
|
||||||
port: 993
|
|
||||||
protocol: TCP
|
|
||||||
- name: sieve
|
|
||||||
port: 4190
|
|
||||||
protocol: TCP
|
|
@ -1,32 +0,0 @@
|
|||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: mailu-ssl-ingress
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/ingress.class: tectonic
|
|
||||||
kubernetes.io/tls-acme: "true"
|
|
||||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
|
||||||
ingress.kubernetes.io/ssl-redirect: "true"
|
|
||||||
# Replace letsencrypt-prod with the name of the certificate issuer
|
|
||||||
certmanager.k8s.io/cluster-issuer: letsencrypt-prod
|
|
||||||
#ingress.kubernetes.io/rewrite-target: "/"
|
|
||||||
#ingress.kubernetes.io/app-root: "/ui"
|
|
||||||
#ingress.kubernetes.io/follow-redirects: "true"
|
|
||||||
labels:
|
|
||||||
app: mailu
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "mail.example.com"
|
|
||||||
secretName: letsencrypt-certs-all # If unsure how to generate these, check out https://github.com/ployst/docker-letsencrypt
|
|
||||||
rules:
|
|
||||||
- host: "mail.example.com"
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: "/"
|
|
||||||
backend:
|
|
||||||
serviceName: front
|
|
||||||
servicePort: 80
|
|
@ -1,27 +0,0 @@
|
|||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: redis-hdd
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
annotations:
|
|
||||||
volume.beta.kubernetes.io/storage-class: "glusterblock-hdd"
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
---
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: mail-storage
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
annotations:
|
|
||||||
volume.beta.kubernetes.io/storage-class: "gluster-heketi-hdd"
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 100Gi
|
|
@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: mailu-mailserver
|
|
@ -1,56 +0,0 @@
|
|||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-redis
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-redis
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: redis
|
|
||||||
image: redis:4.0-alpine
|
|
||||||
imagePullPolicy: Always
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /data
|
|
||||||
name: redisdata
|
|
||||||
ports:
|
|
||||||
- containerPort: 6379
|
|
||||||
name: redis
|
|
||||||
protocol: TCP
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 200Mi
|
|
||||||
cpu: 100m
|
|
||||||
limits:
|
|
||||||
memory: 300Mi
|
|
||||||
cpu: 200m
|
|
||||||
volumes:
|
|
||||||
- name: redisdata
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: redis-hdd
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: redis
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu-redis
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-redis
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
- name: redis
|
|
||||||
port: 6379
|
|
||||||
protocol: TCP
|
|
@ -1,110 +0,0 @@
|
|||||||
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-security
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-security
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: antispam
|
|
||||||
image: mailu/rspamd:master
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 100Mi
|
|
||||||
cpu: 100m
|
|
||||||
limits:
|
|
||||||
memory: 200Mi
|
|
||||||
cpu: 200m
|
|
||||||
ports:
|
|
||||||
- name: antispam
|
|
||||||
containerPort: 11332
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- name: filter
|
|
||||||
subPath: filter
|
|
||||||
mountPath: /var/lib/rspamd
|
|
||||||
- name: filter
|
|
||||||
mountPath: /dkim
|
|
||||||
subPath: dkim
|
|
||||||
- name: filter
|
|
||||||
mountPath: /etc/rspamd/override.d
|
|
||||||
subPath: rspamd-overrides
|
|
||||||
- name: antivirus
|
|
||||||
image: mailu/clamav:master
|
|
||||||
imagePullPolicy: Always
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 1Gi
|
|
||||||
cpu: 1000m
|
|
||||||
limits:
|
|
||||||
memory: 2Gi
|
|
||||||
cpu: 1000m
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
ports:
|
|
||||||
- name: antivirus
|
|
||||||
containerPort: 3310
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- name: filter
|
|
||||||
subPath: filter
|
|
||||||
mountPath: /data
|
|
||||||
volumes:
|
|
||||||
- name: filter
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: mail-storage
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: antispam
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu-antispam
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-security
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
- name: antispam
|
|
||||||
port: 11332
|
|
||||||
protocol: TCP
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: antivirus
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu-antivirus
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-security
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
- name: antivirus
|
|
||||||
port: 3310
|
|
||||||
protocol: TCP
|
|
@ -1,80 +0,0 @@
|
|||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-smtp
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-smtp
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: smtp
|
|
||||||
image: mailu/postfix:master
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 500Mi
|
|
||||||
cpu: 200m
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
cpu: 500m
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /data
|
|
||||||
name: maildata
|
|
||||||
subPath: maildata
|
|
||||||
- mountPath: /overrides
|
|
||||||
name: maildata
|
|
||||||
subPath: overrides
|
|
||||||
ports:
|
|
||||||
- name: smtp
|
|
||||||
containerPort: 25
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-ssl
|
|
||||||
containerPort: 465
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-starttls
|
|
||||||
containerPort: 587
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-auth
|
|
||||||
containerPort: 10025
|
|
||||||
protocol: TCP
|
|
||||||
volumes:
|
|
||||||
- name: maildata
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: mail-storage
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: smtp
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-smtp
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
- name: smtp
|
|
||||||
port: 25
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-ssl
|
|
||||||
port: 465
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-starttls
|
|
||||||
port: 587
|
|
||||||
protocol: TCP
|
|
||||||
- name: smtp-auth
|
|
||||||
port: 10025
|
|
||||||
protocol: TCP
|
|
@ -1,63 +0,0 @@
|
|||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-webdav
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-webdav
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: radicale
|
|
||||||
image: mailu/radicale:master
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /data
|
|
||||||
name: maildata
|
|
||||||
subPath: dav
|
|
||||||
ports:
|
|
||||||
- containerPort: 5232
|
|
||||||
- containerPort: 80
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 100Mi
|
|
||||||
cpu: 100m
|
|
||||||
limits:
|
|
||||||
memory: 100Mi
|
|
||||||
cpu: 100m
|
|
||||||
volumes:
|
|
||||||
- name: maildata
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: mail-storage
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: webdav
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu-webdav
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-webdav
|
|
||||||
role: mail
|
|
||||||
tier: backend
|
|
||||||
ports:
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 80
|
|
||||||
protocol: TCP
|
|
||||||
- name: http-ui
|
|
||||||
port: 5232
|
|
||||||
protocol: TCP
|
|
@ -1,59 +0,0 @@
|
|||||||
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mailu-roundcube
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mailu-roundcube
|
|
||||||
role: mail
|
|
||||||
tier: frontend
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: roundcube
|
|
||||||
image: mailu/roundcube:1.5
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: mailu-config
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 100Mi
|
|
||||||
cpu: 100m
|
|
||||||
limits:
|
|
||||||
memory: 200Mi
|
|
||||||
cpu: 200m
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /data
|
|
||||||
name: maildata
|
|
||||||
subPath: webmail
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
volumes:
|
|
||||||
- name: maildata
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: mail-storage
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: webmail
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
labels:
|
|
||||||
app: mailu-roundcube
|
|
||||||
role: mail
|
|
||||||
tier: frontend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mailu-roundcube
|
|
||||||
role: mail
|
|
||||||
tier: frontend
|
|
||||||
ports:
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 80
|
|
||||||
protocol: TCP
|
|
@ -1,55 +0,0 @@
|
|||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: default-http-backend
|
|
||||||
labels:
|
|
||||||
app: default-http-backend
|
|
||||||
namespace: kube-ingress
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: default-http-backend
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: default-http-backend
|
|
||||||
spec:
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
containers:
|
|
||||||
- name: default-http-backend
|
|
||||||
# Any image is permissible as long as:
|
|
||||||
# 1. It serves a 404 page at /
|
|
||||||
# 2. It serves 200 on a /healthz endpoint
|
|
||||||
image: gcr.io/google_containers/defaultbackend:1.4
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: 8080
|
|
||||||
scheme: HTTP
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
timeoutSeconds: 5
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 20Mi
|
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 20Mi
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: default-http-backend
|
|
||||||
namespace: kube-ingress
|
|
||||||
labels:
|
|
||||||
app: default-http-backend
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 8080
|
|
||||||
selector:
|
|
||||||
app: default-http-backend
|
|
@ -1,139 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
# keep it under 24 chars
|
|
||||||
name: appsynth-lb
|
|
||||||
namespace: kube-ingress
|
|
||||||
labels:
|
|
||||||
k8s-app: appsynth-lb
|
|
||||||
component: ingress-controller
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
selector:
|
|
||||||
k8s-app: appsynth-lb
|
|
||||||
component: ingress-controller
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
protocol: TCP
|
|
||||||
port: 80
|
|
||||||
targetPort: 80
|
|
||||||
- name: https
|
|
||||||
protocol: TCP
|
|
||||||
port: 443
|
|
||||||
targetPort: 443
|
|
||||||
---
|
|
||||||
kind: ConfigMap
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: udp-services
|
|
||||||
namespace: kube-ingress
|
|
||||||
|
|
||||||
---
|
|
||||||
kind: ConfigMap
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: tcp-services
|
|
||||||
namespace: kube-ingress
|
|
||||||
data:
|
|
||||||
25: "mailu-mailserver/front:25"
|
|
||||||
110: "mailu-mailserver/front:110"
|
|
||||||
465: "mailu-mailserver/front:465"
|
|
||||||
587: "mailu-mailserver/front:587"
|
|
||||||
143: "mailu-mailserver/front:143"
|
|
||||||
993: "mailu-mailserver/front:993"
|
|
||||||
995: "mailu-mailserver/front:995"
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
data:
|
|
||||||
enable-vts-status: "true"
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: nginx-ingress-lb-conf
|
|
||||||
namespace: kube-ingress
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1beta2
|
|
||||||
kind: DaemonSet
|
|
||||||
metadata:
|
|
||||||
name: ingress-controller
|
|
||||||
namespace: kube-ingress
|
|
||||||
annotations:
|
|
||||||
prometheus.io/port: "10254"
|
|
||||||
prometheus.io/scrape: "true"
|
|
||||||
labels:
|
|
||||||
k8s-app: appsynth-lb
|
|
||||||
component: ingress-controller
|
|
||||||
type: nginx
|
|
||||||
spec:
|
|
||||||
updateStrategy:
|
|
||||||
rollingUpdate:
|
|
||||||
maxUnavailable: 1
|
|
||||||
type: RollingUpdate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
k8s-app: appsynth-lb
|
|
||||||
component: ingress-controller
|
|
||||||
type: nginx
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
k8s-app: appsynth-lb
|
|
||||||
component: ingress-controller
|
|
||||||
type: nginx
|
|
||||||
spec:
|
|
||||||
serviceAccount: kube-nginx-ingress
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
nodeSelectorTerms:
|
|
||||||
- matchExpressions:
|
|
||||||
- key: node-role.kubernetes.io/master
|
|
||||||
operator: DoesNotExist
|
|
||||||
containers:
|
|
||||||
- name: nginx-ingress-lb
|
|
||||||
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.16.2
|
|
||||||
args:
|
|
||||||
- /nginx-ingress-controller
|
|
||||||
- --configmap=$(POD_NAMESPACE)/tectonic-custom-error
|
|
||||||
- --default-backend-service=$(POD_NAMESPACE)/default-http-backend
|
|
||||||
#- --default-ssl-certificate=tectonic-system/tectonic-ingress-tls-secret
|
|
||||||
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
|
|
||||||
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
|
|
||||||
- --annotations-prefix=ingress.kubernetes.io
|
|
||||||
- --enable-ssl-passthrough
|
|
||||||
- --ingress-class=tectonic
|
|
||||||
# use downward API
|
|
||||||
env:
|
|
||||||
- name: POD_NAME
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.name
|
|
||||||
- name: POD_NAMESPACE
|
|
||||||
valueFrom:
|
|
||||||
fieldRef:
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: 80
|
|
||||||
hostPort: 80
|
|
||||||
- name: https
|
|
||||||
containerPort: 443
|
|
||||||
hostPort: 443
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: 10254
|
|
||||||
scheme: HTTP
|
|
||||||
livenessProbe:
|
|
||||||
initialDelaySeconds: 10
|
|
||||||
timeoutSeconds: 1
|
|
||||||
httpGet:
|
|
||||||
path: /healthz
|
|
||||||
port: 10254
|
|
||||||
scheme: HTTP
|
|
||||||
hostNetwork: true
|
|
||||||
nodeSelector:
|
|
||||||
node-role.kubernetes.io/node: ""
|
|
||||||
dnsPolicy: ClusterFirst
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
@ -1,129 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: kube-ingress
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
namespace: kube-ingress
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
- endpoints
|
|
||||||
- nodes
|
|
||||||
- pods
|
|
||||||
- secrets
|
|
||||||
verbs:
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- nodes
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- "extensions"
|
|
||||||
resources:
|
|
||||||
- ingresses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- events
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- patch
|
|
||||||
- apiGroups:
|
|
||||||
- "extensions"
|
|
||||||
resources:
|
|
||||||
- ingresses/status
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
||||||
kind: Role
|
|
||||||
metadata:
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
namespace: kube-ingress
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
- pods
|
|
||||||
- secrets
|
|
||||||
- namespaces
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
resourceNames:
|
|
||||||
- "ingress-controller-leader-nginx"
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- endpoints
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- create
|
|
||||||
- update
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
||||||
kind: RoleBinding
|
|
||||||
metadata:
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
namespace: kube-ingress
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: Role
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
namespace: kube-ingress
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: kube-nginx-ingress
|
|
||||||
namespace: kube-ingress
|
|
Loading…
Reference in New Issue