manifest.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---
 27kind: Service
 28apiVersion: v1
 29metadata:
 30  namespace: ${ZED_KUBE_NAMESPACE}
 31  name: pgadmin
 32  annotations:
 33    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
 34    service.beta.kubernetes.io/do-loadbalancer-certificate-id: ${ZED_DO_CERTIFICATE_ID}
 35spec:
 36  type: LoadBalancer
 37  selector:
 38    app: postgrest
 39  ports:
 40    - name: web
 41      protocol: TCP
 42      port: 443
 43      targetPort: 8080
 44
 45---
 46apiVersion: apps/v1
 47kind: Deployment
 48metadata:
 49  namespace: ${ZED_KUBE_NAMESPACE}
 50  name: collab
 51
 52spec:
 53  replicas: 1
 54  selector:
 55    matchLabels:
 56      app: collab
 57  template:
 58    metadata:
 59      labels:
 60        app: collab
 61      annotations:
 62        ad.datadoghq.com/collab.check_names: |
 63          ["openmetrics"]
 64        ad.datadoghq.com/collab.init_configs: |
 65          [{}]
 66        ad.datadoghq.com/collab.instances: |
 67          [
 68              {
 69              "openmetrics_endpoint": "http://%%host%%:%%port%%/metrics",
 70              "namespace": "collab_${ZED_KUBE_NAMESPACE}",
 71              "metrics": [".*"]
 72              }
 73          ]
 74    spec:
 75      containers:
 76        - name: collab
 77          image: "${ZED_IMAGE_ID}"
 78          args:
 79            - serve
 80          ports:
 81            - containerPort: 8080
 82              protocol: TCP
 83          livenessProbe:
 84            httpGet:
 85              path: /healthz
 86              port: 8080
 87            initialDelaySeconds: 5
 88            periodSeconds: 5
 89            timeoutSeconds: 5
 90          readinessProbe:
 91            httpGet:
 92              path: /
 93              port: 8080
 94            initialDelaySeconds: 1
 95            periodSeconds: 1
 96          env:
 97            - name: HTTP_PORT
 98              value: "8080"
 99            - name: DATABASE_URL
100              valueFrom:
101                secretKeyRef:
102                  name: database
103                  key: url
104            - name: DATABASE_MAX_CONNECTIONS
105              value: "${DATABASE_MAX_CONNECTIONS}"
106            - name: API_TOKEN
107              valueFrom:
108                secretKeyRef:
109                  name: api
110                  key: token
111            - name: LIVE_KIT_SERVER
112              valueFrom:
113                secretKeyRef:
114                  name: livekit
115                  key: server
116            - name: LIVE_KIT_KEY
117              valueFrom:
118                secretKeyRef:
119                  name: livekit
120                  key: key
121            - name: LIVE_KIT_SECRET
122              valueFrom:
123                secretKeyRef:
124                  name: livekit
125                  key: secret
126            - name: INVITE_LINK_PREFIX
127              value: ${INVITE_LINK_PREFIX}
128            - name: RUST_BACKTRACE
129              value: "1"
130            - name: RUST_LOG
131              value: ${RUST_LOG}
132            - name: LOG_JSON
133              value: "true"
134            - name: ZED_ENVIRONMENT
135              value: ${ZED_ENVIRONMENT}
136          securityContext:
137            capabilities:
138              # FIXME - Switch to the more restrictive `PERFMON` capability.
139              # This capability isn't yet available in a stable version of Debian.
140              add: ["SYS_ADMIN"]
141
142---
143apiVersion: apps/v1
144kind: Deployment
145metadata:
146  namespace: ${ZED_KUBE_NAMESPACE}
147  name: postgrest
148
149spec:
150  replicas: 1
151  selector:
152    matchLabels:
153      app: postgrest
154  template:
155    metadata:
156      labels:
157        app: postgrest
158    spec:
159      containers:
160        - name: postgrest
161          image: "postgrest/postgrest"
162          ports:
163            - containerPort: 8080
164              protocol: TCP
165          env:
166            - name: PGRST_SERVER_PORT
167              value: "8080"
168            - name: PGRST_DB_URI
169              valueFrom:
170                secretKeyRef:
171                  name: database
172                  key: url
173            - name: PGRST_JWT_SECRET
174              valueFrom:
175                secretKeyRef:
176                  name: postgrest
177                  key: jwt_secret