1772 lines
40 KiB
YAML
1772 lines
40 KiB
YAML
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: taiga
|
|
|
|
---
|
|
kind: PersistentVolume
|
|
apiVersion: v1
|
|
metadata:
|
|
name: postgres-pv-volume
|
|
labels:
|
|
type: local
|
|
namespace: taiga
|
|
spec:
|
|
storageClassName: manual
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
capacity:
|
|
storage: 50Gi
|
|
hostPath:
|
|
path: /var/postgres
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: postgres-config
|
|
labels:
|
|
app: postgres
|
|
namespace: taiga
|
|
data:
|
|
postgres-db: taiga
|
|
postgresql.conf: |
|
|
max_connections = 700
|
|
work_mem = 3MB
|
|
shared_buffers = 2048MB
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: postgres-claim
|
|
labels:
|
|
app: postgres
|
|
namespace: taiga
|
|
spec:
|
|
storageClassName: manual
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 50Gi
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: postgresql
|
|
namespace: taiga
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: postgresql
|
|
strategy:
|
|
type: Recreate
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: postgresql
|
|
spec:
|
|
containers:
|
|
- image: postgres:13
|
|
name: postgresql
|
|
env:
|
|
- 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
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: postgres-config
|
|
key: postgres-db
|
|
- name: PGDATA
|
|
value: /var/lib/postgresql/data/db/
|
|
ports:
|
|
- containerPort: 5432
|
|
name: postgresql
|
|
volumeMounts:
|
|
- name: postgres-config-volume
|
|
mountPath: /etc/postgresql/postgresql.conf
|
|
subPath: postgresql.conf
|
|
readOnly: true
|
|
- name: postgre-data-volume
|
|
mountPath: /var/lib/postgresql/data
|
|
volumes:
|
|
- name: postgres-config-volume
|
|
configMap:
|
|
name: postgres-config
|
|
- name: postgre-data-volume
|
|
persistentVolumeClaim:
|
|
claimName: postgres-claim
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: postgresql-service
|
|
namespace: taiga
|
|
spec:
|
|
selector:
|
|
app: postgresql
|
|
ports:
|
|
- port: 5432
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-async-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-async
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-async
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-async
|
|
spec:
|
|
containers:
|
|
- name: taiga-async
|
|
image: taigaio/taiga-back:latest
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- /taiga-back/docker/async_entrypoint.sh
|
|
ports:
|
|
- name: http
|
|
containerPort: 8000
|
|
volumeMounts:
|
|
- name: taiga-static
|
|
mountPath: /taiga-back/static
|
|
readOnly: false
|
|
- name: taiga-media
|
|
mountPath: /taiga-back/media
|
|
readOnly: false
|
|
envFrom:
|
|
- configMapRef:
|
|
name: taiga-configmap
|
|
- secretRef:
|
|
name: taiga-secret
|
|
env:
|
|
- 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
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: postgres-config
|
|
key: postgres-db
|
|
- name: POSTGRES_HOST
|
|
value: postgresql-service
|
|
- name: POSTGRES_PORT
|
|
value: '5432'
|
|
volumes:
|
|
- name: taiga-static
|
|
persistentVolumeClaim:
|
|
claimName: taiga-static-data
|
|
- name: taiga-media
|
|
persistentVolumeClaim:
|
|
claimName: taiga-media-data
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-async-rabbitmq-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-async-rabbitmq
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-async-rabbitmq
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-async-rabbitmq
|
|
spec:
|
|
containers:
|
|
- name: taiga-async-rabbitmq
|
|
image: rabbitmq:3.8-management-alpine
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: amqp
|
|
containerPort: 5672
|
|
volumeMounts:
|
|
- name: taiga-async-rabbitmq-data
|
|
mountPath: /var/lib/rabbitmq
|
|
readOnly: false
|
|
env:
|
|
- name: RABBITMQ_DEFAULT_USER
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_USER
|
|
- name: RABBITMQ_DEFAULT_PASS
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_PASS
|
|
- name: RABBITMQ_ERLANG_COOKIE
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_ERLANG_COOKIE
|
|
- name: RABBITMQ_DEFAULT_VHOST
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: taiga-configmap
|
|
key: RABBITMQ_DEFAULT_VHOST
|
|
volumes:
|
|
- name: taiga-async-rabbitmq-data
|
|
persistentVolumeClaim:
|
|
claimName: taiga-async-rabbitmq-data
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-async-rabbitmq
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-async-rabbitmq
|
|
namespace: taiga
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-async-rabbitmq
|
|
ports:
|
|
- name: amqp
|
|
targetPort: amqp
|
|
port: 5672
|
|
protocol: TCP
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-async
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-async
|
|
namespace: taiga
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-async
|
|
ports:
|
|
- name: http
|
|
targetPort: http
|
|
port: 8000
|
|
protocol: TCP
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-back-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-back
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-back
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-back
|
|
spec:
|
|
initContainers:
|
|
- name: taiga-manage
|
|
image: taigaio/taiga-back:latest
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- /bin/bash
|
|
args:
|
|
- -c
|
|
- source /opt/venv/bin/activate && CELERY_ENABLE=true python manage.py migrate && sleep 15
|
|
ports:
|
|
- name: http
|
|
containerPort: 8000
|
|
volumeMounts:
|
|
- name: taiga-static
|
|
mountPath: /taiga-back/static
|
|
readOnly: false
|
|
- name: taiga-media
|
|
mountPath: /taiga-back/media
|
|
readOnly: false
|
|
envFrom:
|
|
- configMapRef:
|
|
name: taiga-configmap
|
|
- secretRef:
|
|
name: taiga-secret
|
|
env:
|
|
- name: CELERY_ENABLED
|
|
value: 'false'
|
|
- 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
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: postgres-config
|
|
key: postgres-db
|
|
- name: POSTGRES_HOST
|
|
value: postgresql-service
|
|
- name: POSTGRES_PORT
|
|
value: '5432'
|
|
containers:
|
|
- name: taiga-back
|
|
image: taigaio/taiga-back:latest
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: http
|
|
containerPort: 8000
|
|
volumeMounts:
|
|
- name: taiga-static
|
|
mountPath: /taiga-back/static
|
|
readOnly: false
|
|
- name: taiga-media
|
|
mountPath: /taiga-back/media
|
|
readOnly: false
|
|
envFrom:
|
|
- configMapRef:
|
|
name: taiga-configmap
|
|
- secretRef:
|
|
name: taiga-secret
|
|
env:
|
|
- 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
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: postgres-config
|
|
key: postgres-db
|
|
- name: POSTGRES_HOST
|
|
value: postgresql-service
|
|
- name: POSTGRES_PORT
|
|
value: '5432'
|
|
volumes:
|
|
- name: taiga-static
|
|
persistentVolumeClaim:
|
|
claimName: taiga-static-data
|
|
- name: taiga-media
|
|
persistentVolumeClaim:
|
|
claimName: taiga-media-data
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-back
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-back
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-back
|
|
ports:
|
|
- name: http
|
|
targetPort: http
|
|
port: 8000
|
|
protocol: TCP
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: taiga-configmap
|
|
namespace: taiga
|
|
data:
|
|
ENABLE_TELEMETRY: 'false'
|
|
TAIGA_SITES_SCHEME: https
|
|
TAIGA_SITES_DOMAIN: taiga.test.meissa.de
|
|
TAIGA_SUBPATH: ''
|
|
TAIGA_URL: https://taiga.test.meissa.de
|
|
TAIGA_WEBSOCKETS_URL: wss://taiga.test.meissa.de
|
|
PUBLIC_REGISTER_ENABLED: 'false'
|
|
ENABLE_GITHUB_IMPORTER: 'false'
|
|
ENABLE_JIRA_IMPORTER: 'false'
|
|
ENABLE_TRELLO_IMPORTER: 'false'
|
|
RABBITMQ_DEFAULT_VHOST: taiga
|
|
SESSION_COOKIE_SECURE: 'False'
|
|
CSRF_COOKIE_SECURE: 'False'
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: taiga-media-data
|
|
namespace: taiga
|
|
labels:
|
|
app: taiga
|
|
app.kubernetes.part-of: taiga
|
|
spec:
|
|
storageClassName: local-path
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 2Gi
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: taiga-static-data
|
|
namespace: taiga
|
|
labels:
|
|
app: taiga
|
|
app.kubernetes.part-of: taiga
|
|
spec:
|
|
storageClassName: local-path
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 3Gi
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-events-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-events
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-events
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-events
|
|
spec:
|
|
containers:
|
|
- name: taiga-events
|
|
image: taigaio/taiga-events:latest
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: http
|
|
containerPort: 8888
|
|
env:
|
|
- name: RABBITMQ_USER
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_USER
|
|
- name: RABBITMQ_PASS
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_PASS
|
|
- name: SECRET_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: TAIGA_SECRET_KEY
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-events-rabbitmq-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-events-rabbitmq
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-events-rabbitmq
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-events-rabbitmq
|
|
spec:
|
|
containers:
|
|
- name: taiga-events-rabbitmq
|
|
image: rabbitmq:3.8-management-alpine
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: amqp
|
|
containerPort: 5672
|
|
volumeMounts:
|
|
- name: taiga-events-rabbitmq-data
|
|
mountPath: /var/lib/rabbitmq
|
|
readOnly: false
|
|
env:
|
|
- name: RABBITMQ_ERLANG_COOKIE
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_ERLANG_COOKIE
|
|
- name: RABBITMQ_DEFAULT_VHOST
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: taiga-configmap
|
|
key: RABBITMQ_DEFAULT_VHOST
|
|
- name: RABBITMQ_DEFAULT_USER
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_USER
|
|
- name: RABBITMQ_DEFAULT_PASS
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: RABBITMQ_PASS
|
|
volumes:
|
|
- name: taiga-events-rabbitmq-data
|
|
persistentVolumeClaim:
|
|
claimName: taiga-events-rabbitmq-data
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-events-rabbitmq
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-events-rabbitmq
|
|
namespace: taiga
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-events-rabbitmq
|
|
ports:
|
|
- name: amqp
|
|
targetPort: amqp
|
|
port: 5672
|
|
protocol: TCP
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-events
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-events
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-events
|
|
ports:
|
|
- name: http
|
|
targetPort: http
|
|
port: 8888
|
|
protocol: TCP
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-front-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-front
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-front
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-front
|
|
spec:
|
|
containers:
|
|
- name: taiga-front
|
|
image: taigaio/taiga-front:latest
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: http
|
|
containerPort: 80
|
|
env:
|
|
- name: TAIGA_URL
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: taiga-configmap
|
|
key: TAIGA_URL
|
|
- name: TAIGA_SUBPATH
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: taiga-configmap
|
|
key: TAIGA_SUBPATH
|
|
- name: TAIGA_WEBSOCKETS_URL
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: taiga-configmap
|
|
key: TAIGA_WEBSOCKETS_URL
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-front
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-front
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-front
|
|
ports:
|
|
- name: http
|
|
targetPort: http
|
|
port: 80
|
|
protocol: TCP
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: taiga-gateway-configmap
|
|
namespace: taiga
|
|
data:
|
|
default.conf: |-
|
|
server {
|
|
listen 80 default_server;
|
|
|
|
client_max_body_size 100M;
|
|
charset utf-8;
|
|
|
|
# Frontend
|
|
location / {
|
|
proxy_pass http://taiga-front/;
|
|
proxy_pass_header Server;
|
|
proxy_set_header Host $http_host;
|
|
proxy_redirect off;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Scheme $scheme;
|
|
}
|
|
|
|
# Api
|
|
location /api {
|
|
proxy_pass http://taiga-back:8000/api;
|
|
proxy_pass_header Server;
|
|
proxy_set_header Host $http_host;
|
|
proxy_redirect off;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Scheme $scheme;
|
|
}
|
|
|
|
# Admin
|
|
location /admin {
|
|
proxy_pass http://taiga-back:8000/admin;
|
|
proxy_pass_header Server;
|
|
proxy_set_header Host $http_host;
|
|
proxy_redirect off;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Scheme $scheme;
|
|
}
|
|
|
|
# Static
|
|
location /static {
|
|
root /taiga;
|
|
}
|
|
|
|
# Media
|
|
location /_protected {
|
|
internal;
|
|
alias /taiga/media/;
|
|
add_header Content-disposition "attachment";
|
|
}
|
|
|
|
# Unprotected section
|
|
location /media/exports {
|
|
alias /taiga/media/exports/;
|
|
add_header Content-disposition "attachment";
|
|
}
|
|
|
|
location /media {
|
|
proxy_set_header Host $http_host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Scheme $scheme;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_pass http://taiga-protected:8003/;
|
|
proxy_redirect off;
|
|
}
|
|
|
|
# Events
|
|
location /events {
|
|
proxy_pass http://taiga-events:8888/events;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_connect_timeout 7d;
|
|
proxy_send_timeout 7d;
|
|
proxy_read_timeout 7d;
|
|
}
|
|
}
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-gateway-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-gateway
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-gateway
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-gateway
|
|
spec:
|
|
restartPolicy: Always
|
|
containers:
|
|
- name: taiga-gateway
|
|
image: nginx:1.19-alpine
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: http
|
|
containerPort: 80
|
|
volumeMounts:
|
|
- name: taiga-gateway-configmap
|
|
mountPath: /etc/nginx/conf.d
|
|
readOnly: false
|
|
- name: taiga-static
|
|
mountPath: /taiga/static
|
|
readOnly: false
|
|
- name: taiga-media
|
|
mountPath: /taiga/media
|
|
readOnly: false
|
|
volumes:
|
|
- name: taiga-gateway-configmap
|
|
configMap:
|
|
name: taiga-gateway-configmap
|
|
- name: taiga-static
|
|
persistentVolumeClaim:
|
|
claimName: taiga-static-data
|
|
- name: taiga-media
|
|
persistentVolumeClaim:
|
|
claimName: taiga-media-data
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-gateway
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-gateway
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-gateway
|
|
ports:
|
|
- name: http
|
|
targetPort: http
|
|
port: 80
|
|
protocol: TCP
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: taiga-protected-deployment
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-protected
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/component: taiga-protected
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: taiga-protected
|
|
spec:
|
|
containers:
|
|
- name: taiga-protected
|
|
image: taigaio/taiga-protected:latest
|
|
imagePullPolicy: IfNotPresent
|
|
ports:
|
|
- name: http
|
|
containerPort: 8003
|
|
env:
|
|
- name: MAX_AGE
|
|
value: '5'
|
|
- name: SECRET_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: taiga-secret
|
|
key: TAIGA_SECRET_KEY
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: taiga-protected
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: c4k-taiga
|
|
app.kubernetes.io/component: taiga-protected
|
|
spec:
|
|
type: ClusterIP
|
|
selector:
|
|
app.kubernetes.io/component: taiga-protected
|
|
ports:
|
|
- name: http
|
|
targetPort: http
|
|
port: 8003
|
|
protocol: TCP
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: taiga-async-rabbitmq-data
|
|
namespace: taiga
|
|
labels:
|
|
app: taiga
|
|
app.kubernetes.part-of: taiga
|
|
spec:
|
|
storageClassName: local-path
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 4Gi
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: taiga-events-rabbitmq-data
|
|
namespace: taiga
|
|
labels:
|
|
app: taiga
|
|
app.kubernetes.part-of: taiga
|
|
spec:
|
|
storageClassName: local-path
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 5Gi
|
|
|
|
---
|
|
apiVersion: cert-manager.io/v1
|
|
kind: Certificate
|
|
metadata:
|
|
name: taiga-gateway
|
|
labels:
|
|
app.kubernetes.part-of: taiga-gateway
|
|
namespace: taiga
|
|
spec:
|
|
secretName: taiga-gateway
|
|
commonName: taiga.test.meissa.de
|
|
duration: 2160h
|
|
renewBefore: 720h
|
|
dnsNames:
|
|
- taiga.test.meissa.de
|
|
issuerRef:
|
|
name: staging
|
|
kind: ClusterIssuer
|
|
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
namespace: taiga
|
|
annotations:
|
|
traefik.ingress.kubernetes.io/router.entrypoints: web, websecure
|
|
traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd
|
|
metallb.universe.tf/address-pool: public
|
|
name: taiga-gateway
|
|
labels:
|
|
app.kubernetes.part-of: taiga-gateway
|
|
spec:
|
|
tls:
|
|
- hosts:
|
|
- taiga.test.meissa.de
|
|
secretName: taiga-gateway
|
|
rules:
|
|
- host: taiga.test.meissa.de
|
|
http:
|
|
paths:
|
|
- pathType: Prefix
|
|
path: /
|
|
backend:
|
|
service:
|
|
name: taiga-gateway
|
|
port:
|
|
number: 80
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: backup-config
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.io/name: backup
|
|
app.kubernetes.io/part-of: taiga
|
|
data:
|
|
restic-repository: repo-path
|
|
|
|
---
|
|
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: taiga-backup
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: taiga
|
|
spec:
|
|
schedule: 10 23 * * *
|
|
successfulJobsHistoryLimit: 1
|
|
failedJobsHistoryLimit: 1
|
|
jobTemplate:
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: backup-app
|
|
image: domaindrivenarchitecture/c4k-taiga-backup
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- backup.bb
|
|
env:
|
|
- 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
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: postgres-config
|
|
key: postgres-db
|
|
- name: POSTGRES_HOST
|
|
value: postgresql-service:5432
|
|
- name: POSTGRES_SERVICE
|
|
value: postgresql-service
|
|
- name: POSTGRES_PORT
|
|
value: '5432'
|
|
- name: AWS_DEFAULT_REGION
|
|
value: eu-central-1
|
|
- name: AWS_ACCESS_KEY_ID_FILE
|
|
value: /var/run/secrets/backup-secrets/aws-access-key-id
|
|
- name: AWS_SECRET_ACCESS_KEY_FILE
|
|
value: /var/run/secrets/backup-secrets/aws-secret-access-key
|
|
- name: RESTIC_REPOSITORY
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: backup-config
|
|
key: restic-repository
|
|
- name: RESTIC_PASSWORD_FILE
|
|
value: /var/run/secrets/backup-secrets/restic-password
|
|
volumeMounts:
|
|
- name: taiga-media
|
|
mountPath: /media
|
|
readOnly: true
|
|
- name: backup-secret-volume
|
|
mountPath: /var/run/secrets/backup-secrets
|
|
readOnly: true
|
|
volumes:
|
|
- name: taiga-media
|
|
persistentVolumeClaim:
|
|
claimName: taiga-media-data
|
|
- name: backup-secret-volume
|
|
secret:
|
|
secretName: backup-secret
|
|
restartPolicy: OnFailure
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: backup-restore
|
|
namespace: taiga
|
|
spec:
|
|
replicas: 0
|
|
selector:
|
|
matchLabels:
|
|
app: backup-restore
|
|
strategy:
|
|
type: Recreate
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: backup-restore
|
|
app.kubernetes.io/name: backup-restore
|
|
app.kubernetes.io/part-of: taiga
|
|
spec:
|
|
containers:
|
|
- image: domaindrivenarchitecture/c4k-taiga-backup
|
|
name: backup-app
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- wait.bb
|
|
env:
|
|
- 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
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: postgres-config
|
|
key: postgres-db
|
|
- name: POSTGRES_HOST
|
|
value: postgresql-service:5432
|
|
- name: POSTGRES_SERVICE
|
|
value: postgresql-service
|
|
- name: POSTGRES_PORT
|
|
value: '5432'
|
|
- name: AWS_DEFAULT_REGION
|
|
value: eu-central-1
|
|
- name: AWS_ACCESS_KEY_ID_FILE
|
|
value: /var/run/secrets/backup-secrets/aws-access-key-id
|
|
- name: AWS_SECRET_ACCESS_KEY_FILE
|
|
value: /var/run/secrets/backup-secrets/aws-secret-access-key
|
|
- name: RESTIC_REPOSITORY
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: backup-config
|
|
key: restic-repository
|
|
- name: RESTIC_PASSWORD_FILE
|
|
value: /var/run/secrets/backup-secrets/restic-password
|
|
- name: RESTIC_NEW_PASSWORD_FILE
|
|
value: /var/run/secrets/backup-secrets/restic-new-password
|
|
volumeMounts:
|
|
- name: taiga-media
|
|
mountPath: /media
|
|
readOnly: false
|
|
- name: backup-secret-volume
|
|
mountPath: /var/run/secrets/backup-secrets
|
|
readOnly: true
|
|
volumes:
|
|
- name: taiga-media
|
|
persistentVolumeClaim:
|
|
claimName: taiga-media-data
|
|
- name: backup-secret-volume
|
|
secret:
|
|
secretName: backup-secret
|
|
|
|
---
|
|
kind: Namespace
|
|
apiVersion: v1
|
|
metadata:
|
|
name: monitoring
|
|
labels:
|
|
name: monitoring
|
|
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
labels:
|
|
name: prometheus
|
|
name: prometheus
|
|
rules:
|
|
- apiGroups:
|
|
- ''
|
|
resources:
|
|
- nodes
|
|
- nodes/proxy
|
|
- nodes/metrics
|
|
- services
|
|
- endpoints
|
|
- pods
|
|
- ingresses
|
|
- configmaps
|
|
- events
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- extensions
|
|
- networking.k8s.io
|
|
resources:
|
|
- ingresses/status
|
|
- ingresses
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- nonResourceURLs:
|
|
- /metrics
|
|
verbs:
|
|
- get
|
|
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
labels:
|
|
name: prometheus
|
|
name: prometheus
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: prometheus
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: prometheus
|
|
namespace: monitoring
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: prometheus
|
|
namespace: monitoring
|
|
labels:
|
|
app.kubernetes.io/name: prometheus
|
|
annotations:
|
|
metallb.universe.tf/address-pool: private
|
|
spec:
|
|
type: LoadBalancer
|
|
selector:
|
|
app.kubernetes.io/name: prometheus
|
|
ports:
|
|
- name: prometheus-http
|
|
protocol: TCP
|
|
port: 9000
|
|
targetPort: 9090
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
automountServiceAccountToken: true
|
|
metadata:
|
|
labels:
|
|
name: prometheus
|
|
name: prometheus
|
|
namespace: monitoring
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: prometheus
|
|
name: prometheus
|
|
namespace: monitoring
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: prometheus
|
|
replicas: 1
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: prometheus
|
|
spec:
|
|
serviceAccountName: prometheus
|
|
enableServiceLinks: true
|
|
containers:
|
|
- name: prometheus
|
|
image: quay.io/prometheus/prometheus:v2.39.1
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- --config.file=/etc/prometheus/prometheus.yaml
|
|
- --storage.tsdb.path=/prometheus/
|
|
- --storage.tsdb.retention.time=1d
|
|
ports:
|
|
- containerPort: 9090
|
|
volumeMounts:
|
|
- name: prometheus-config-volume
|
|
mountPath: /etc/prometheus/
|
|
readOnly: true
|
|
- name: prometheus-storage-volume
|
|
mountPath: /prometheus/
|
|
volumes:
|
|
- name: prometheus-config-volume
|
|
secret:
|
|
secretName: prometheus-conf
|
|
defaultMode: 420
|
|
- name: prometheus-storage-volume
|
|
emptyDir: {}
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
labels:
|
|
name: node-exporter
|
|
name: node-exporter
|
|
namespace: monitoring
|
|
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
labels:
|
|
name: node-exporter
|
|
name: node-exporter
|
|
rules:
|
|
- apiGroups:
|
|
- ''
|
|
resources:
|
|
- nodes
|
|
- nodes/proxy
|
|
- nodes/metrics
|
|
- services
|
|
- endpoints
|
|
- pods
|
|
- ingresses
|
|
- configmaps
|
|
- events
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- extensions
|
|
- networking.k8s.io
|
|
resources:
|
|
- ingresses/status
|
|
- ingresses
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- extensions
|
|
resources:
|
|
- podsecuritypolicies
|
|
verbs:
|
|
- use
|
|
resourceNames:
|
|
- node-exporter
|
|
- nonResourceURLs:
|
|
- /metrics
|
|
verbs:
|
|
- get
|
|
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
labels:
|
|
name: node-exporter
|
|
name: node-exporter
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: node-exporter
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: node-exporter
|
|
namespace: monitoring
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: node-exporter
|
|
name: node-exporter
|
|
namespace: monitoring
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: node-exporter
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: node-exporter
|
|
spec:
|
|
serviceAccountName: node-exporter
|
|
containers:
|
|
- name: node-exporter
|
|
image: prom/node-exporter
|
|
imagePullPolicy: IfNotPresent
|
|
args:
|
|
- --path.sysfs=/host/sys
|
|
- --path.rootfs=/host/root
|
|
- --no-collector.conntrack
|
|
- --no-collector.wifi
|
|
- --no-collector.hwmon
|
|
- --no-collector.infiniband
|
|
- --no-collector.filefd
|
|
- --no-collector.mdadm
|
|
- --no-collector.netclass
|
|
- --no-collector.nfs
|
|
- --no-collector.nfsd
|
|
- --no-collector.powersupplyclass
|
|
- --no-collector.pressure
|
|
- --no-collector.rapl
|
|
- --no-collector.schedstat
|
|
- --no-collector.sockstat
|
|
- --no-collector.softnet
|
|
- --no-collector.tapestats
|
|
- --no-collector.thermal_zone
|
|
- --no-collector.xfs
|
|
- --no-collector.zfs
|
|
- --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)
|
|
- --collector.netclass.ignored-devices=^(veth.*)$
|
|
ports:
|
|
- containerPort: 9100
|
|
protocol: TCP
|
|
resources:
|
|
limits:
|
|
cpu: 250m
|
|
memory: 180Mi
|
|
requests:
|
|
cpu: 102m
|
|
memory: 180Mi
|
|
volumeMounts:
|
|
- mountPath: /host/sys
|
|
mountPropagation: HostToContainer
|
|
name: sys
|
|
readOnly: true
|
|
- mountPath: /host/root
|
|
mountPropagation: HostToContainer
|
|
name: root
|
|
readOnly: true
|
|
volumes:
|
|
- hostPath:
|
|
path: /sys
|
|
name: sys
|
|
- hostPath:
|
|
path: /
|
|
name: root
|
|
|
|
---
|
|
kind: Service
|
|
apiVersion: v1
|
|
metadata:
|
|
name: node-exporter
|
|
namespace: monitoring
|
|
labels:
|
|
app.kubernetes.io/name: node-exporter
|
|
annotations:
|
|
prometheus.io/scrape: 'true'
|
|
prometheus.io/port: '9100'
|
|
spec:
|
|
selector:
|
|
app.kubernetes.io/name: node-exporter
|
|
ports:
|
|
- name: node-exporter-http
|
|
protocol: TCP
|
|
port: 9100
|
|
targetPort: 9100
|
|
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: exporter
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
app.kubernetes.io/version: 2.7.0
|
|
name: kube-state-metrics
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: kube-state-metrics
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: kube-state-metrics
|
|
namespace: monitoring
|
|
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: exporter
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
app.kubernetes.io/version: 2.7.0
|
|
name: kube-state-metrics
|
|
rules:
|
|
- apiGroups:
|
|
- ''
|
|
resources:
|
|
- configmaps
|
|
- secrets
|
|
- nodes
|
|
- pods
|
|
- services
|
|
- serviceaccounts
|
|
- resourcequotas
|
|
- replicationcontrollers
|
|
- limitranges
|
|
- persistentvolumeclaims
|
|
- persistentvolumes
|
|
- namespaces
|
|
- endpoints
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- apps
|
|
resources:
|
|
- statefulsets
|
|
- daemonsets
|
|
- deployments
|
|
- replicasets
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- batch
|
|
resources:
|
|
- cronjobs
|
|
- jobs
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- autoscaling
|
|
resources:
|
|
- horizontalpodautoscalers
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- authentication.k8s.io
|
|
resources:
|
|
- tokenreviews
|
|
verbs:
|
|
- create
|
|
- apiGroups:
|
|
- authorization.k8s.io
|
|
resources:
|
|
- subjectaccessreviews
|
|
verbs:
|
|
- create
|
|
- apiGroups:
|
|
- policy
|
|
resources:
|
|
- poddisruptionbudgets
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- certificates.k8s.io
|
|
resources:
|
|
- certificatesigningrequests
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- discovery.k8s.io
|
|
resources:
|
|
- endpointslices
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- storage.k8s.io
|
|
resources:
|
|
- storageclasses
|
|
- volumeattachments
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- admissionregistration.k8s.io
|
|
resources:
|
|
- mutatingwebhookconfigurations
|
|
- validatingwebhookconfigurations
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- networking.k8s.io
|
|
resources:
|
|
- networkpolicies
|
|
- ingressclasses
|
|
- ingresses
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- coordination.k8s.io
|
|
resources:
|
|
- leases
|
|
verbs:
|
|
- list
|
|
- watch
|
|
- apiGroups:
|
|
- rbac.authorization.k8s.io
|
|
resources:
|
|
- clusterrolebindings
|
|
- clusterroles
|
|
- rolebindings
|
|
- roles
|
|
verbs:
|
|
- list
|
|
- watch
|
|
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: exporter
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
app.kubernetes.io/version: 2.7.0
|
|
name: kube-state-metrics
|
|
namespace: monitoring
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: exporter
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
app.kubernetes.io/version: 2.7.0
|
|
spec:
|
|
serviceAccountName: kube-state-metrics
|
|
automountServiceAccountToken: true
|
|
containers:
|
|
- name: kube-state-metrics
|
|
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.7.0
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /healthz
|
|
port: 8080
|
|
initialDelaySeconds: 5
|
|
timeoutSeconds: 5
|
|
ports:
|
|
- containerPort: 8080
|
|
name: http-metrics
|
|
- containerPort: 8081
|
|
name: telemetry
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /
|
|
port: 8081
|
|
initialDelaySeconds: 5
|
|
timeoutSeconds: 5
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
readOnlyRootFilesystem: true
|
|
runAsUser: 65534
|
|
nodeSelector:
|
|
kubernetes.io/os: linux
|
|
|
|
---
|
|
apiVersion: v1
|
|
automountServiceAccountToken: false
|
|
kind: ServiceAccount
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: exporter
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
app.kubernetes.io/version: 2.7.0
|
|
name: kube-state-metrics
|
|
namespace: monitoring
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/component: exporter
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
app.kubernetes.io/version: 2.7.0
|
|
name: kube-state-metrics
|
|
namespace: monitoring
|
|
spec:
|
|
clusterIP: None
|
|
ports:
|
|
- name: http-metrics
|
|
port: 8080
|
|
targetPort: http-metrics
|
|
- name: telemetry
|
|
port: 8081
|
|
targetPort: telemetry
|
|
selector:
|
|
app.kubernetes.io/name: kube-state-metrics
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: postgres-secret
|
|
namespace: taiga
|
|
type: Opaque
|
|
data:
|
|
postgres-user: dGFpZ2E=
|
|
postgres-password: dGFpZ2EtZGItcGFzc3dvcmQ=
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: taiga-secret
|
|
namespace: taiga
|
|
labels:
|
|
app.kubernetes.part-of: taiga
|
|
data:
|
|
TAIGA_SECRET_KEY: c29tZS1rZXk=
|
|
EMAIL_HOST_USER: bWFpbGVyLXVzZXI=
|
|
EMAIL_HOST_PASSWORD: bWFpbGVyLXB3
|
|
RABBITMQ_USER: cmFiYml0LXVzZXI=
|
|
RABBITMQ_PASS: cmFiYml0LXB3
|
|
RABBITMQ_ERLANG_COOKIE: cmFiYml0LWVybGFuZw==
|
|
DJANGO_SUPERUSER_USERNAME: dGFpZ2EtYWRtaW4=
|
|
DJANGO_SUPERUSER_PASSWORD: c3VwZXItcGFzc3dvcmQ=
|
|
DJANGO_SUPERUSER_EMAIL: c29tZUBleGFtcGxlLmNvbQ==
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: backup-secret
|
|
namespace: taiga
|
|
type: Opaque
|
|
data:
|
|
aws-access-key-id: QVdTX0tFWV9JRA==
|
|
aws-secret-access-key: QVdTX0tFWV9TRUNSRVQ=
|
|
restic-password: ''
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: prometheus-conf
|
|
namespace: monitoring
|
|
type: Opaque
|
|
stringData:
|
|
prometheus.yaml: |
|
|
global:
|
|
scrape_interval: 60s
|
|
evaluation_interval: 60s
|
|
external_labels:
|
|
cluster: jitsi
|
|
stage: test
|
|
remote_write:
|
|
- url: url-for-your-prom-remote-write-endpoint
|
|
basic_auth:
|
|
username: user
|
|
password: password
|
|
write_relabel_configs:
|
|
- source_labels:
|
|
- __name__
|
|
regex: node_cpu_sec.+|node_load[0-9]+|node_memory_Buf.*|node_memory_Mem.*|node_memory_Cached.*|node_disk_[r,w,i].*|node_filesystem_[s,a].*|node_network_receive_bytes_total|node_network_transmit_bytes_total|traefik_entrypoint_.*_total|traefik_entrypoint_.*_seconds_count|traefik_router_.*_total|traefik_router_.*_seconds_count|traefik_service_.*_total|traefik_service_.*_seconds_count|traefik_tls_certs_not_after|kube_pod_container_status_restarts_total|kube_pod_status_reason|kube_node_status_capacity|kube_node_status_allocatable|kube_cronjob_status_active|kube_job_status_failed
|
|
action: keep
|
|
rule_files:
|
|
- /etc/prometheus/prometheus.rules
|
|
scrape_configs:
|
|
- job_name: kubernetes-nodes
|
|
kubernetes_sd_configs:
|
|
- role: node
|
|
scheme: https
|
|
tls_config:
|
|
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
|
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
|
|
relabel_configs:
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_node_label_(.+)
|
|
- target_label: __address__
|
|
replacement: kubernetes.default.svc:443
|
|
- source_labels:
|
|
- __meta_kubernetes_node_name
|
|
regex: (.+)
|
|
target_label: __metrics_path__
|
|
replacement: /api/v1/nodes/${1}/proxy/metrics
|
|
- job_name: node-exporter
|
|
kubernetes_sd_configs:
|
|
- role: endpoints
|
|
relabel_configs:
|
|
- source_labels:
|
|
- __meta_kubernetes_endpoints_name
|
|
regex: node-exporter
|
|
action: keep
|
|
- job_name: traefik
|
|
kubernetes_sd_configs:
|
|
- role: endpoints
|
|
relabel_configs:
|
|
- source_labels:
|
|
- __meta_kubernetes_endpoints_name
|
|
regex: traefik
|
|
action: keep
|
|
- job_name: kube-state-metrics
|
|
kubernetes_sd_configs:
|
|
- role: endpoints
|
|
relabel_configs:
|
|
- source_labels:
|
|
- __meta_kubernetes_endpoints_name
|
|
regex: kube-state-metrics
|
|
action: keep
|
|
- job_name: prometheus
|
|
static_configs:
|
|
- targets:
|
|
- localhost:9090
|
|
|