Files
argocd-apps/apps/base/logging/logviewer/deployment.yaml
T
unkin-agent 96e82a3584
ci/woodpecker/pr/vector-test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/kubeconform Pipeline was successful
logging: deploy logviewer v0.1.0 behind oauth2-proxy
The logviewer UI gives browser access to the ClickHouse log store; it is
deployed behind an Authentik-gated oauth2-proxy front so only
akP-logviewer-admin members reach it, at https://logviewer.unkin.net.

- Adds the logviewer Deployment (docker-internal/logviewer:v0.1.0) reading
  ClickHouse via the existing clickhouse-logreader credentials
- Adds an oauth2-proxy front (quay.io v7.15.3) with ak_groups-based
  authorization, mirroring the arrstack pattern
- Syncs kv kubernetes/namespace/logging/default/oauth-credentials into the
  logviewer-oauth-credentials Secret via the existing default VaultAuth
- Adds internal Gateway + HTTPRoutes for logviewer.unkin.net (vault-issuer
  cert, external-dns -> 198.18.200.4, http->https redirect)
- Registers the logviewer directory in the logging kustomization
2026-08-23 17:31:36 +10:00

81 lines
2.1 KiB
YAML

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: logviewer
namespace: logging
annotations:
secret.reloader.stakater.com/reload: "clickhouse-logreader"
spec:
replicas: 1
selector:
matchLabels:
app: logviewer
strategy:
type: Recreate
template:
metadata:
labels:
app: logviewer
spec:
serviceAccountName: default
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
fsGroup: 65532
seccompProfile:
type: RuntimeDefault
containers:
- name: logviewer
image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/logviewer:v0.1.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: http
protocol: TCP
env:
- name: CH_URL
value: http://clickhouse-logs.logging.svc.cluster.local:8123
- name: CH_USER
valueFrom:
secretKeyRef:
name: clickhouse-logreader
key: username
- name: CH_PASSWORD
valueFrom:
secretKeyRef:
name: clickhouse-logreader
key: password
livenessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
restartPolicy: Always