collab.template.yml

  1---
  2apiVersion: v1
  3kind: Namespace
  4metadata:
  5  name: ${ZED_KUBE_NAMESPACE}
  6
  7---
  8kind: Service
  9apiVersion: v1
 10metadata:
 11  namespace: ${ZED_KUBE_NAMESPACE}
 12  name: collab
 13  annotations:
 14    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
 15    service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
 16spec:
 17  type: LoadBalancer
 18  selector:
 19    app: collab
 20  ports:
 21    - name: web
 22      protocol: TCP
 23      port: 443
 24      targetPort: 8080
 25
 26---
 27apiVersion: apps/v1
 28kind: Deployment
 29metadata:
 30  namespace: ${ZED_KUBE_NAMESPACE}
 31  name: collab
 32
 33spec:
 34  replicas: 1
 35  selector:
 36    matchLabels:
 37      app: collab
 38  template:
 39    metadata:
 40      labels:
 41        app: collab
 42      annotations:
 43        ad.datadoghq.com/collab.check_names: |
 44          ["openmetrics"]
 45        ad.datadoghq.com/collab.init_configs: |
 46          [{}]
 47        ad.datadoghq.com/collab.instances: |
 48          [
 49              {
 50              "openmetrics_endpoint": "http://%%host%%:%%port%%/metrics",
 51              "namespace": "collab_${ZED_KUBE_NAMESPACE}",
 52              "metrics": [".*"]
 53              }
 54          ]
 55    spec:
 56      containers:
 57        - name: collab
 58          image: "${ZED_IMAGE_ID}"
 59          args:
 60            - serve
 61          ports:
 62            - containerPort: 8080
 63              protocol: TCP
 64          livenessProbe:
 65            httpGet:
 66              path: /healthz
 67              port: 8080
 68            initialDelaySeconds: 5
 69            periodSeconds: 5
 70            timeoutSeconds: 5
 71          readinessProbe:
 72            httpGet:
 73              path: /
 74              port: 8080
 75            initialDelaySeconds: 1
 76            periodSeconds: 1
 77          env:
 78            - name: HTTP_PORT
 79              value: "8080"
 80            - name: DATABASE_URL
 81              valueFrom:
 82                secretKeyRef:
 83                  name: database
 84                  key: url
 85            - name: DATABASE_MAX_CONNECTIONS
 86              value: "${DATABASE_MAX_CONNECTIONS}"
 87            - name: API_TOKEN
 88              valueFrom:
 89                secretKeyRef:
 90                  name: api
 91                  key: token
 92            - name: LIVE_KIT_SERVER
 93              valueFrom:
 94                secretKeyRef:
 95                  name: livekit
 96                  key: server
 97            - name: LIVE_KIT_KEY
 98              valueFrom:
 99                secretKeyRef:
100                  name: livekit
101                  key: key
102            - name: LIVE_KIT_SECRET
103              valueFrom:
104                secretKeyRef:
105                  name: livekit
106                  key: secret
107            - name: INVITE_LINK_PREFIX
108              value: ${INVITE_LINK_PREFIX}
109            - name: RUST_BACKTRACE
110              value: "1"
111            - name: RUST_LOG
112              value: ${RUST_LOG}
113            - name: LOG_JSON
114              value: "true"
115            - name: ZED_ENVIRONMENT
116              value: ${ZED_ENVIRONMENT}
117          securityContext:
118            capabilities:
119              # FIXME - Switch to the more restrictive `PERFMON` capability.
120              # This capability isn't yet available in a stable version of Debian.
121              add: ["SYS_ADMIN"]