11 changed files with 297 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||
MIT License |
|||
|
|||
Copyright (c) 2022 n8n - Workflow Automation |
|||
|
|||
Permission is hereby granted, free of charge, to any person obtaining a copy |
|||
of this software and associated documentation files (the "Software"), to deal |
|||
in the Software without restriction, including without limitation the rights |
|||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|||
copies of the Software, and to permit persons to whom the Software is |
|||
furnished to do so, subject to the following conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be included in all |
|||
copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
|||
SOFTWARE. |
@ -0,0 +1,28 @@ |
|||
# n8n-kubernetes-hosting |
|||
|
|||
Get up and running with n8n on the following platforms: |
|||
|
|||
* [AWS](https://docs.n8n.io/hosting/server-setups/aws/) |
|||
* [Azure](https://docs.n8n.io/hosting/server-setups/azure/) |
|||
* [Google Cloud Platform](https://docs.n8n.io/hosting/server-setups/google-cloud/) |
|||
|
|||
If you have questions after trying the tutorials, check out the [forums](https://community.n8n.io/). |
|||
|
|||
## Prerequisites |
|||
|
|||
Self-hosting n8n requires technical knowledge, including: |
|||
|
|||
* Setting up and configuring servers and containers |
|||
* Managing application resources and scaling |
|||
* Securing servers and applications |
|||
* Configuring n8n |
|||
|
|||
n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/). |
|||
|
|||
## Contributions |
|||
|
|||
For common changes, please open a PR to `main` branch and we will merge this |
|||
into cloud provider specific branches. |
|||
|
|||
If you have a contribution specific to a cloud provider, please open your PR to |
|||
the relevant branch. |
@ -0,0 +1,13 @@ |
|||
apiVersion: v1 |
|||
kind: PersistentVolumeClaim |
|||
metadata: |
|||
labels: |
|||
service: n8n-claim0 |
|||
name: n8n-claim0 |
|||
namespace: n8n |
|||
spec: |
|||
accessModes: |
|||
- ReadWriteOnce |
|||
resources: |
|||
requests: |
|||
storage: 2Gi |
@ -0,0 +1,78 @@ |
|||
apiVersion: apps/v1 |
|||
kind: Deployment |
|||
metadata: |
|||
labels: |
|||
service: n8n |
|||
name: n8n |
|||
namespace: n8n |
|||
spec: |
|||
replicas: 1 |
|||
selector: |
|||
matchLabels: |
|||
service: n8n |
|||
strategy: |
|||
type: Recreate |
|||
template: |
|||
metadata: |
|||
labels: |
|||
service: n8n |
|||
spec: |
|||
initContainers: |
|||
- name: volume-permissions |
|||
image: busybox:1.36 |
|||
command: ["sh", "-c", "chown 1000:1000 /data"] |
|||
volumeMounts: |
|||
- name: n8n-claim0 |
|||
mountPath: /data |
|||
containers: |
|||
- command: |
|||
- /bin/sh |
|||
args: |
|||
- -c |
|||
- sleep 5; n8n start |
|||
env: |
|||
- name: DB_TYPE |
|||
value: postgresdb |
|||
- name: DB_POSTGRESDB_HOST |
|||
value: postgres-service.n8n.svc.cluster.local |
|||
- name: DB_POSTGRESDB_PORT |
|||
value: "5432" |
|||
- name: DB_POSTGRESDB_DATABASE |
|||
value: n8n |
|||
- name: DB_POSTGRESDB_USER |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: postgres-secret |
|||
key: POSTGRES_NON_ROOT_USER |
|||
- name: DB_POSTGRESDB_PASSWORD |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: postgres-secret |
|||
key: POSTGRES_NON_ROOT_PASSWORD |
|||
- name: N8N_PROTOCOL |
|||
value: http |
|||
- name: N8N_PORT |
|||
value: "5678" |
|||
image: n8nio/n8n |
|||
name: n8n |
|||
ports: |
|||
- containerPort: 5678 |
|||
resources: |
|||
requests: |
|||
memory: "250Mi" |
|||
limits: |
|||
memory: "500Mi" |
|||
volumeMounts: |
|||
- mountPath: /home/node/.n8n |
|||
name: n8n-claim0 |
|||
restartPolicy: Always |
|||
volumes: |
|||
- name: n8n-claim0 |
|||
persistentVolumeClaim: |
|||
claimName: n8n-claim0 |
|||
- name: n8n-secret |
|||
secret: |
|||
secretName: n8n-secret |
|||
- name: postgres-secret |
|||
secret: |
|||
secretName: postgres-secret |
@ -0,0 +1,16 @@ |
|||
apiVersion: v1 |
|||
kind: Service |
|||
metadata: |
|||
labels: |
|||
service: n8n |
|||
name: n8n |
|||
namespace: n8n |
|||
spec: |
|||
type: LoadBalancer |
|||
ports: |
|||
- name: "5678" |
|||
port: 5678 |
|||
targetPort: 5678 |
|||
protocol: TCP |
|||
selector: |
|||
service: n8n |
@ -0,0 +1,4 @@ |
|||
apiVersion: v1 |
|||
kind: Namespace |
|||
metadata: |
|||
name: n8n |
@ -0,0 +1,11 @@ |
|||
kind: PersistentVolumeClaim |
|||
apiVersion: v1 |
|||
metadata: |
|||
name: postgresql-pv |
|||
namespace: n8n |
|||
spec: |
|||
accessModes: |
|||
- ReadWriteOnce |
|||
resources: |
|||
requests: |
|||
storage: 300Gi |
@ -0,0 +1,17 @@ |
|||
apiVersion: v1 |
|||
kind: ConfigMap |
|||
metadata: |
|||
name: init-data |
|||
namespace: n8n |
|||
data: |
|||
init-data.sh: | |
|||
#!/bin/bash |
|||
set -e; |
|||
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then |
|||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL |
|||
CREATE USER "${POSTGRES_NON_ROOT_USER}" WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}'; |
|||
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO "${POSTGRES_NON_ROOT_USER}"; |
|||
EOSQL |
|||
else |
|||
echo "SETUP INFO: No Environment variables given!" |
|||
fi |
@ -0,0 +1,81 @@ |
|||
apiVersion: apps/v1 |
|||
kind: Deployment |
|||
metadata: |
|||
labels: |
|||
service: postgres-n8n |
|||
name: postgres |
|||
namespace: n8n |
|||
spec: |
|||
replicas: 1 |
|||
selector: |
|||
matchLabels: |
|||
service: postgres-n8n |
|||
strategy: |
|||
rollingUpdate: |
|||
maxSurge: 1 |
|||
maxUnavailable: 1 |
|||
type: RollingUpdate |
|||
template: |
|||
metadata: |
|||
labels: |
|||
service: postgres-n8n |
|||
spec: |
|||
containers: |
|||
- image: postgres:11 |
|||
name: postgres |
|||
resources: |
|||
limits: |
|||
cpu: "4" |
|||
memory: 4Gi |
|||
requests: |
|||
cpu: "1" |
|||
memory: 2Gi |
|||
ports: |
|||
- containerPort: 5432 |
|||
volumeMounts: |
|||
- name: postgresql-pv |
|||
mountPath: /var/lib/postgresql/data |
|||
- name: init-data |
|||
mountPath: /docker-entrypoint-initdb.d/init-n8n-user.sh |
|||
subPath: init-data.sh |
|||
env: |
|||
- name: PGDATA |
|||
value: /var/lib/postgresql/data/pgdata |
|||
- name: POSTGRES_USER |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: postgres-secret |
|||
key: POSTGRES_USER |
|||
- name: POSTGRES_PASSWORD |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: postgres-secret |
|||
key: POSTGRES_PASSWORD |
|||
- name: POSTGRES_DB |
|||
value: n8n |
|||
- name: POSTGRES_NON_ROOT_USER |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: postgres-secret |
|||
key: POSTGRES_NON_ROOT_USER |
|||
- name: POSTGRES_NON_ROOT_PASSWORD |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: postgres-secret |
|||
key: POSTGRES_NON_ROOT_PASSWORD |
|||
- name: POSTGRES_HOST |
|||
value: postgres-service |
|||
- name: POSTGRES_PORT |
|||
value: '5432' |
|||
restartPolicy: Always |
|||
volumes: |
|||
- name: postgresql-pv |
|||
persistentVolumeClaim: |
|||
claimName: postgresql-pv |
|||
- name: postgres-secret |
|||
secret: |
|||
secretName: postgres-secret |
|||
- name: init-data |
|||
configMap: |
|||
name: init-data |
|||
defaultMode: 0744 |
@ -0,0 +1,12 @@ |
|||
apiVersion: v1 |
|||
kind: Secret |
|||
metadata: |
|||
namespace: n8n |
|||
name: postgres-secret |
|||
type: Opaque |
|||
stringData: |
|||
POSTGRES_USER: changeUser |
|||
POSTGRES_PASSWORD: changePassword |
|||
POSTGRES_DB: n8n |
|||
POSTGRES_NON_ROOT_USER: changeUser |
|||
POSTGRES_NON_ROOT_PASSWORD: changePassword |
@ -0,0 +1,16 @@ |
|||
apiVersion: v1 |
|||
kind: Service |
|||
metadata: |
|||
labels: |
|||
service: postgres-n8n |
|||
name: postgres-service |
|||
namespace: n8n |
|||
spec: |
|||
clusterIP: None |
|||
ports: |
|||
- name: "5432" |
|||
port: 5432 |
|||
targetPort: 5432 |
|||
protocol: TCP |
|||
selector: |
|||
service: postgres-n8n |
Loading…
Reference in new issue