tutor-cairn/tutorcairn/patches/k8s-deployments
2021-06-08 21:59:36 +02:00

312 lines
8.2 KiB
Plaintext

---
####### Cairn plugin
# log collection
# https://vector.dev/docs/setup/installation/platforms/kubernetes/
# https://github.com/timberio/vector/blob/master/distribution/kubernetes/vector-agent/resources.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: cairn-vector
labels:
app.kubernetes.io/name: cairn-vector
automountServiceAccountToken: true
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cairn-vector
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cairn-vector
labels:
app.kubernetes.io/name: cairn-vector
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cairn-vector
subjects:
- kind: ServiceAccount
name: cairn-vector
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cairn-vector
labels:
app.kubernetes.io/name: cairn-vector
spec:
selector:
matchLabels:
name: cairn-vector
template:
metadata:
labels:
name: cairn-vector
spec:
serviceAccountName: cairn-vector
# Run vector next to LMS
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- lms
topologyKey: kubernetes.io/hostname
containers:
- name: cairn-vector
image: docker.io/timberio/vector:0.13.X-alpine
env:
- name: VECTOR_SELF_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: VECTOR_SELF_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: VECTOR_SELF_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: PROCFS_ROOT
value: /host/proc
- name: SYSFS_ROOT
value: /host/sys
volumeMounts:
- name: data
mountPath: /var/lib/vector
- name: var-log
mountPath: /var/log/
readOnly: true
- mountPath: /etc/vector/vector.toml
name: config
subPath: k8s.toml
readOnly: true
volumes:
- name: data
persistentVolumeClaim:
claimName: cairn-vector
- name: var-log
hostPath:
path: /var/log/
- name: config
configMap:
name: cairn-vector-config
{% if CAIRN_RUN_CLICKHOUSE %}
---
# data storage
apiVersion: apps/v1
kind: Deployment
metadata:
name: cairn-clickhouse
labels:
app.kubernetes.io/name: cairn-clickhouse
spec:
selector:
matchLabels:
app.kubernetes.io/name: cairn-clickhouse
template:
metadata:
labels:
app.kubernetes.io/name: cairn-clickhouse
spec:
containers:
- name: cairn-clickhouse
image: {{ CAIRN_CLICKHOUSE_DOCKER_IMAGE }}
volumeMounts:
- mountPath: /var/lib/clickhouse
name: data
- mountPath: /etc/clickhouse-server/users.d/cairn.xml
name: user-config
subPath: cairn.xml
- mountPath: /scripts/clickhouse-auth.json
name: clickhouse-auth
subPath: auth.json
ports:
- containerPort: 8123
- containerPort: 9000
volumes:
- name: data
persistentVolumeClaim:
claimName: cairn-clickhouse
- name: user-config
configMap:
name: cairn-clickhouse-user-config
- name: clickhouse-auth
configMap:
name: cairn-clickhouse-auth
{% endif %}
---
# cairn frontend
apiVersion: apps/v1
kind: Deployment
metadata:
name: cairn-superset
labels:
app.kubernetes.io/name: cairn-superset
spec:
selector:
matchLabels:
app.kubernetes.io/name: cairn-superset
template:
metadata:
labels:
app.kubernetes.io/name: cairn-superset
spec:
containers:
- name: cairn-superset
image: {{ CAIRN_SUPERSET_DOCKER_IMAGE }}
volumeMounts:
- mountPath: /app/superset_config.py
name: config
subPath: superset_config.py
- mountPath: /app/bootstrap/
name: bootstrap
- mountPath: /scripts/clickhouse-auth.json
name: clickhouse-auth
subPath: auth.json
volumes:
- name: config
configMap:
name: cairn-superset-config
- name: bootstrap
configMap:
name: cairn-superset-bootstrap
- name: clickhouse-auth
configMap:
name: cairn-clickhouse-auth
---
# frontend worker
apiVersion: apps/v1
kind: Deployment
metadata:
name: cairn-superset-worker
labels:
app.kubernetes.io/name: cairn-superset-worker
spec:
selector:
matchLabels:
app.kubernetes.io/name: cairn-superset-worker
template:
metadata:
labels:
app.kubernetes.io/name: cairn-superset-worker
spec:
containers:
- name: cairn-superset-worker
image: {{ CAIRN_SUPERSET_DOCKER_IMAGE }}
args: ["celery", "worker", "--app=superset.tasks.celery_app:app", "-Ofair", "-l", "INFO"]
volumeMounts:
- mountPath: /app/superset_config.py
name: config
subPath: superset_config.py
volumes:
- name: config
configMap:
name: cairn-superset-config
---
# frontend celery beat
apiVersion: apps/v1
kind: Deployment
metadata:
name: cairn-superset-worker-beat
labels:
app.kubernetes.io/name: cairn-superset-worker-beat
spec:
selector:
matchLabels:
app.kubernetes.io/name: cairn-superset-worker-beat
template:
metadata:
labels:
app.kubernetes.io/name: cairn-superset-worker-beat
spec:
containers:
- name: cairn-superset-worker-beat
image: {{ CAIRN_SUPERSET_DOCKER_IMAGE }}
args: ["celery", "beat", "--app=superset.tasks.celery_app:app", "--pidfile", "/tmp/celerybeat.pid", "-l", "INFO", "--schedule=/tmp/celerybeat-schedule"]
volumeMounts:
- mountPath: /app/superset_config.py
name: config
subPath: superset_config.py
volumes:
- name: config
configMap:
name: cairn-superset-config
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cairn-redis
labels:
app.kubernetes.io/name: cairn-redis
spec:
selector:
matchLabels:
app.kubernetes.io/name: cairn-redis
template:
metadata:
labels:
app.kubernetes.io/name: cairn-redis
spec:
containers:
- name: cairn-superset-worker
image: docker.io/redis:5.0-alpine
ports:
- containerPort: 6379
{% if CAIRN_RUN_POSTGRESQL %}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cairn-postgresql
labels:
app.kubernetes.io/name: cairn-postgresql
spec:
selector:
matchLabels:
app.kubernetes.io/name: cairn-postgresql
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/name: cairn-postgresql
spec:
containers:
- name: cairn-postgresql
image: docker.io/postgres:9.6-alpine
env:
- name: POSTGRES_USER
value: "{{ CAIRN_POSTGRESQL_USER }}"
- name: POSTGRES_PASSWORD
value: "{{ CAIRN_POSTGRESQL_PASSWORD }}"
- name: POSTGRES_DB
value: "{{ CAIRN_POSTGRESQL_DB }}"
# The following is required, otherwise postgresql refuses to
# write to the non-empty directory which contains "lost+found".
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: cairn-postgresql
{% endif %}