apiVersion: v1 kind: ConfigMap metadata: name: gatus namespace: kube-system data: config.yaml: | metrics: true endpoints: - name: website url: https://twin.sh/health interval: 5m conditions: - "[STATUS] == 200" - "[BODY].status == UP" - name: github url: https://api.github.com/healthz interval: 5m conditions: - "[STATUS] == 200" - name: cat-fact url: "https://cat-fact.herokuapp.com/facts/random" interval: 5m conditions: - "[STATUS] == 200" - "[BODY].deleted == false" - "len([BODY].text) > 0" - "[BODY].text == pat(*cat*)" - "[STATUS] == pat(2*)" - "[CONNECTED] == true" - name: example url: https://example.com/ conditions: - "[STATUS] == 200" --- apiVersion: v1 kind: ServiceAccount metadata: name: gatus namespace: kube-system --- apiVersion: apps/v1 kind: Deployment metadata: name: gatus namespace: kube-system spec: replicas: 1 selector: matchLabels: app: gatus template: metadata: name: gatus namespace: kube-system labels: app: gatus spec: serviceAccountName: gatus terminationGracePeriodSeconds: 5 containers: - image: twinproduction/gatus imagePullPolicy: IfNotPresent name: gatus ports: - containerPort: 8080 name: http protocol: TCP resources: limits: cpu: 250m memory: 100M requests: cpu: 50m memory: 30M readinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 failureThreshold: 5 volumeMounts: - mountPath: /config name: gatus-config volumes: - configMap: name: gatus name: gatus-config --- apiVersion: v1 kind: Service metadata: name: gatus namespace: kube-system spec: ports: - name: http port: 8080 protocol: TCP targetPort: 8080 selector: app: gatus