K8s/N8N
K8s » Config
|
K8s » Config | |
|---|---|
export KUBECONFIG=${HOME}/.kube/aws-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/dev-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/gcp-kubeconfig.yaml
|
export KUBECONFIG=${HOME}/.kube/shahed-aa-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/shahed-ab-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/shahed-ac-kubeconfig.yaml
|
export KUBECONFIG=${HOME}/.kube/shahed-ae-kubeconfig.yaml
kubectl config get-contexts
kubectl config view
| |
K8s » Storage
|
K8s » Storage | |
|---|---|
cat <<'EXE'| sudo bash
mkdir -p /var/minikube/pvc/n8n/data-n8n-0/
chown -R 1000:1000 /var/minikube/pvc/n8n/
EXE
| |
cat <<'YML'| kubectl apply -f -
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: n8n-data-n8n-0
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: hostpath
hostPath:
path: /var/hostpath_pv/n8n/data-n8n-0
type: DirectoryOrCreate
YML
|
|
K8s » Database
|
K8s » Database |
|---|
ssh -qt shahed@shahed-ae.local.or.tunnel.ip bash
echo -n 'Password: ';read -s N8N_PASSWORD;export N8N_PASSWORD;echo
# Password: sadaqah!
cat << DDL | psql
\! printf '\n'
SELECT 'CREATE DATABASE shahed_n8n'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'shahed_n8n')\gexec
CREATE USER shahed_n8n WITH ENCRYPTED PASSWORD '${N8N_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE shahed_n8n TO shahed_n8n;
ALTER DATABASE shahed_n8n OWNER TO shahed_n8n;
DDL
|
echo -n 'Password: ';read -s PGBOUNCER_PASSWORD;export PGBOUNCER_PASSWORD;echo
# Password: sadaqah!
cat << DDL | psql
\! printf '\n'
SELECT 'CREATE DATABASE bouncer'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'bouncer')\gexec
CREATE USER bouncer WITH ENCRYPTED PASSWORD '${PGBOUNCER_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE bouncer TO bouncer;
ALTER DATABASE bouncer OWNER TO bouncer;
DDL
|
K8s » Deploy
|
K8s » Deploy | |
|---|---|
kubectl config get-contexts
kubectl config view
|
kubectl create ns n8n
kubectl get ns|grep n8n
|
cat <<'ENV'| kubectl -n n8n create configmap n8n --from-env-file=/dev/stdin
N8N_PORT=5678
N8N_HOST=n8n.shahed.biz
N8N_RUNNERS_ENABLED=true
GENERIC_TIMEZONE=Asia/Kuala_Lumpur
WEBHOOK_URL=https://n8n.shahed.biz/
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
ENV
cat <<'ENV'| kubectl -n n8n create secret generic n8n --from-env-file=/dev/stdin
DB_TYPE=postgresdb
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_USER=shahed_n8n
DB_POSTGRESDB_PASSWORD=sadaqah!
DB_POSTGRESDB_DATABASE=shahed_n8n
DB_POSTGRESDB_HOST=pgbouncer.pgbouncer
ENV
| |
cat <<'YML'| kubectl apply -n n8n -f -
---
apiVersion: v1
kind: Service
metadata:
name: n8n
namespace: n8n
labels:
app.kubernetes.io/name: n8n
app.kubernetes.io/instance: n8n
app.kubernetes.io/version: 1.0.0
app.kubernetes.io/managed-by: kubectl
spec:
selector:
app: n8n
ports:
- targetPort: 5678
protocol: TCP
port: 5678
name: n8n
type: ClusterIP
YML
|
cat <<'YML'| kubectl apply -n n8n -f -
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-n8n-0
namespace: n8n
labels:
app.kubernetes.io/name: n8n
app.kubernetes.io/instance: n8n
app.kubernetes.io/version: 1.0.0
app.kubernetes.io/managed-by: kubectl
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: hostpath
volumeName: n8n-data-n8n-0
YML
|
cat <<'YML'| kubectl apply -n n8n -f -
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: n8n
namespace: n8n
labels:
app: n8n
app.kubernetes.io/name: n8n
app.kubernetes.io/instance: n8n
app.kubernetes.io/version: 1.0.0
app.kubernetes.io/managed-by: kubectl
annotations:
kubernetes.io/change-cause: "CKI-1| Initial Deployment"
spec:
replicas: 1
selector:
matchLabels:
app: n8n
template:
metadata:
labels:
app: n8n
spec:
containers:
- name: n8n
image: docker.n8n.io/n8nio/n8n
ports:
- containerPort: 5678
protocol: TCP
name: n8n
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 250m
memory: 512Mi
envFrom:
- secretRef:
name: n8n
- configMapRef:
name: n8n
volumeMounts:
- mountPath: /home/node/.n8n
name: data-n8n-0
volumes:
- name: data-n8n-0
persistentVolumeClaim:
claimName: data-n8n-0
YML
| |
K8s » Ingress
|
K8s » Ingress |
|---|
cat << YML | kubectl apply -n n8n -f -
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: n8n
namespace: n8n
labels:
app.kubernetes.io/name: n8n
app.kubernetes.io/instance: n8n
app.kubernetes.io/version: 1.0.0
app.kubernetes.io/managed-by: kubectl
spec:
ingressClassName: nginx
rules:
- host: n8n.shahed.biz
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: n8n
port:
number: 5678
YML
|
K8s » Verify
|
K8s » Verify | |
|---|---|
xdg-open https://www.cdn77.com/tls-test/result?domain=n8n.shahed.biz
xdg-open https://n8n.shahed.biz
| |
kubectl -n n8n exec -it svc/n8n -c n8n -- ash
kubectl -n n8n exec -it svc/n8n -- ash
kubectl -n n8n logs -f svc/n8n -c n8n
kubectl -n n8n logs -f svc/n8n
|
---
Page: https://n8n.shahed.biz
user: tool.tech@shahed.biz
pass: sadaqah!
|
K8s » Scaling
|
K8s » Scaling |
|---|
cat <<YML | kubectl -n n8n patch deploy/n8n --patch-file=/dev/stdin
---
spec:
replicas: 0
YML
cat <<YML | kubectl -n n8n patch deploy/n8n --patch-file=/dev/stdin
---
spec:
replicas: 1
YML
cat <<YML | kubectl -n n8n patch deploy/n8n --patch-file=/dev/stdin
---
metadata:
annotations:
kubernetes.io/change-cause: "CKI-2| Resources Updated"
spec:
template:
spec:
containers:
- name: n8n
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
YML
|
K8s » Rolling
|
K8s » Rollout |
|---|
kubectl -n n8n rollout history deploy/n8n
kubectl -n n8n rollout pause deploy/n8n
cat <<YML | kubectl -n n8n patch deploy/n8n --patch-file=/dev/stdin
---
metadata:
annotations:
kubernetes.io/change-cause: "CKI-2| Container Updated"
spec:
template:
spec:
containers:
- name: n8n
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
YML
kubectl -n n8n annotate deploy/n8n --overwrite \
kubernetes.io/change-cause="CKI-2| Resources Updated"
kubectl -n n8n rollout resume deploy/n8n
kubectl -n n8n rollout history deploy/n8n
|
kubectl -n n8n rollout undo deploy/n8n --to-revision=1
kubectl -n n8n rollout history deploy/n8n
kubectl -n n8n annotate deploy/n8n --overwrite \
kubernetes.io/change-cause="CKI-3| Revert Back to CKI-1"
kubectl -n n8n rollout history deploy/n8n
|
K8s » Delete
|
K8s » Delete | |
|---|---|
kubectl delete svc --all -n n8n
kubectl delete deploy --all -n n8n
kubectl delete pvc --all -n n8n
|
kubectl delete pv n8n-data-n8n-0
kubectl delete all --all -n n8n
kubectl delete ns n8n
|
Playground
|
Playground | |
|---|---|
kubectl -n n8n get secret n8n -o json|jq -r '.data."DB_POSTGRESDB_PASSWORD"'|base64 -d;echo
kubectl -n n8n get cm n8n -o json|jq -r '.data."GENERIC_TIMEZONE"';echo
| |
kubectl -n n8n rollout history deploy/n8n
kubectl -n n8n rollout restart deploy/n8n
kubectl -n n8n rollout undo deploy/n8n
|
kubectl -n n8n rollout pause deploy/n8n
kubectl -n n8n rollout resume deploy/n8n
kubectl -n n8n rollout status deploy/n8n
|
kubectl delete svc --all -n n8n
kubectl delete deploy --all -n n8n
kubectl delete pvc --all -n n8n
|
kubectl delete pv n8n-data-n8n-0
kubectl delete all --all -n n8n
kubectl delete ns n8n
|
kubectl -n n8n exec -it svc/n8n -c n8n -- ash
kubectl -n n8n exec -it svc/n8n -- ash
kubectl -n n8n logs -f svc/n8n -c n8n
kubectl -n n8n logs -f svc/n8n
| |
References
|
References | ||
|---|---|---|