Skip to content

Commit fbf67b4

Browse files
authored
feat: log reader sidecar (#52)
1 parent 4776736 commit fbf67b4

25 files changed

+636
-489
lines changed

.github/workflows/chart-tests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ jobs:
7979
kubectl apply -f chart/ci/manifests/secrets.yaml
8080
8181
- name: Set up chart-testing
82-
uses: helm/chart-testing-action@0d28d3144d3a25ea2cc349d6e59901c4ff469b3b # v2
82+
uses: helm/chart-testing-action@6ec842c01de15ebb84c8627d2744a0c2f2755c9f # v2.8.0
8383

8484
- name: Run chart-testing (lint)
8585
run: ct lint --config ct.yaml

README.md

Lines changed: 149 additions & 132 deletions
Large diffs are not rendered by default.

chart/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: v2
33
name: xnat
44
description: A Helm chart for deploying XNAT on Kubernetes
55
type: application
6-
version: 0.0.25
6+
version: 0.0.26
77
# XNAT version deployed in the chart
88
appVersion: 1.9.1.2
99

chart/ci/test-values.yaml

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,26 @@ postgresql:
1818
database: xnatdb
1919
owner: xnatuser
2020

21-
web:
22-
siteUrl: http://localhost
23-
ingress:
24-
enabled: true
25-
className: nginx
26-
annotations:
27-
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
28-
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
29-
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
30-
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
31-
nginx.ingress.kubernetes.io/proxy-body-size: "0"
32-
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "0"
33-
nginx.ingress.kubernetes.io/client-body-buffer-size: "128k"
34-
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
35-
nginx.ingress.kubernetes.io/proxy-buffer-size: "32k"
36-
nginx.ingress.kubernetes.io/affinity: "cookie"
37-
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
38-
nginx.ingress.kubernetes.io/session-cookie-max-age: "1800"
39-
nginx.ingress.kubernetes.io/session-cookie-expires: "1800"
40-
nginx.ingress.kubernetes.io/session-cookie-name: "xnat-core-dev"
41-
hosts:
42-
- host: localhost
43-
config:
44-
extraWait: 15
21+
siteUrl: http://localhost
22+
ingress:
23+
enabled: true
24+
className: nginx
25+
annotations:
26+
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
27+
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
28+
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
29+
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
30+
nginx.ingress.kubernetes.io/proxy-body-size: "0"
31+
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "0"
32+
nginx.ingress.kubernetes.io/client-body-buffer-size: "128k"
33+
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
34+
nginx.ingress.kubernetes.io/proxy-buffer-size: "32k"
35+
nginx.ingress.kubernetes.io/affinity: "cookie"
36+
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
37+
nginx.ingress.kubernetes.io/session-cookie-max-age: "1800"
38+
nginx.ingress.kubernetes.io/session-cookie-expires: "1800"
39+
nginx.ingress.kubernetes.io/session-cookie-name: "xnat-core-dev"
40+
hosts:
41+
- host: localhost
42+
config:
43+
extraWait: 15

chart/templates/NOTES.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
1. Get the application URL by running these commands:
2-
{{- if .Values.web.ingress.enabled }}
3-
{{- range $host := .Values.web.ingress.hosts }}
2+
{{- if .Values.ingress.enabled }}
3+
{{- range $host := .Values.ingress.hosts }}
44
{{- range .paths }}
5-
http{{ if $.Values.web.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
5+
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
66
{{- end }}
77
{{- end }}
88
{{- else if contains "NodePort" .Values.service.type }}

chart/templates/_helpers.tpl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ app.kubernetes.io/name: {{ include "xnat.name" . }}
5050
app.kubernetes.io/instance: {{ .Release.Name }}
5151
{{- end }}
5252

53+
{{/*
54+
StatefulSet labels
55+
*/}}
56+
{{- define "xnat.statefulsetLabels" -}}
57+
{{ include "xnat.selectorLabels" . }}
58+
version: {{ .Chart.AppVersion | quote }}
59+
app: {{ include "xnat.name" . }}
60+
{{- end }}
61+
5362
{{/*
5463
Create the name of the service account to use
5564
*/}}

chart/templates/configmaps.yaml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{{- if .Values.logging.enabled -}}
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: {{ include "xnat.fullname" . }}-alloy-config
6+
data:
7+
config.alloy: |
8+
local.file_match "catalina_logs" {
9+
path_targets = [
10+
{"__path__" = "/usr/local/tomcat/logs/catalina*", job = string.format("%s-catalina.out", constants.hostname), hostname = constants.hostname},
11+
]
12+
sync_period = "5s"
13+
}
14+
{{ range .Values.logging.logs_to_scrape }}
15+
local.file_match "xnat_{{ . | replace "-" "_" }}_logs" {
16+
path_targets = [
17+
{"__path__" = "/data/xnat/home/logs/logs/{{ . }}.log*", job = string.format("%s-{{ . }}", constants.hostname), hostname = constants.hostname},
18+
]
19+
sync_period = "5s"
20+
}
21+
{{ end }}
22+
23+
loki.source.file "catalina_log_scrape" {
24+
targets = local.file_match.catalina_logs.targets
25+
forward_to = [loki.write.default.receiver]
26+
tail_from_end = true
27+
}
28+
{{ range .Values.logging.logs_to_scrape }}
29+
loki.source.file "xnat_{{ . | replace "-" "_" }}_log_scrape" {
30+
targets = local.file_match.xnat_{{ . | replace "-" "_" }}_logs.targets
31+
forward_to = [loki.write.default.receiver]
32+
tail_from_end = true
33+
}
34+
{{ end }}
35+
loki.write "default" {
36+
endpoint {
37+
url = "http://{{ .Values.logging.loki_ip }}/loki/api/v1/push"
38+
}
39+
}
40+
41+
{{- end }}

chart/templates/ingress.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
{{- if .Values.web.ingress.enabled -}}
1+
{{- if .Values.ingress.enabled -}}
22
apiVersion: networking.k8s.io/v1
33
kind: Ingress
44
metadata:
55
name: {{ include "xnat.fullname" . }}-web
66
labels:
77
{{- include "xnat.labels" . | nindent 4 }}
8-
{{- with .Values.web.ingress.annotations }}
8+
{{- with .Values.ingress.annotations }}
99
annotations:
1010
{{- toYaml . | nindent 4 }}
1111
{{- end }}
1212
spec:
13-
ingressClassName: {{ .Values.web.ingress.className }}
14-
{{- if .Values.web.ingress.tls }}
13+
ingressClassName: {{ .Values.ingress.className }}
14+
{{- if .Values.ingress.tls }}
1515
tls:
16-
{{- range .Values.web.ingress.tls }}
16+
{{- range .Values.ingress.tls }}
1717
- hosts:
1818
{{- range .hosts }}
1919
- {{ . | quote }}
@@ -22,7 +22,7 @@ spec:
2222
{{- end }}
2323
{{- end }}
2424
rules:
25-
{{- range .Values.web.ingress.hosts }}
25+
{{- range .Values.ingress.hosts }}
2626
- host: {{ .host | quote }}
2727
http:
2828
paths:
@@ -31,7 +31,7 @@ spec:
3131
backend:
3232
service:
3333
name: {{ include "xnat.fullname" $ }}-headless
34-
port:
34+
port:
3535
number: {{ $.Values.service.port }}
3636
{{- end }}
3737
{{- end }}

chart/templates/jobs.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
{{ if .Values.web.config.enabled }}
1+
{{ if .Values.config.enabled }}
22
apiVersion: batch/v1
33
kind: Job
44
metadata:
55
name: {{ .Release.Name }}-configure
6-
{{- with .Values.web.config.jobAnnotations }}
6+
{{- with .Values.config.jobAnnotations }}
77
annotations:
88
{{- toYaml . | nindent 4 }}
99
{{- end }}
@@ -16,7 +16,7 @@ spec:
1616
template:
1717
metadata:
1818
name: {{ .Release.Name }}-configure
19-
{{- with .Values.web.config.jobAnnotations }}
19+
{{- with .Values.config.jobAnnotations }}
2020
annotations:
2121
{{- toYaml . | nindent 8 }}
2222
{{- end }}
@@ -34,17 +34,17 @@ spec:
3434
{{- end }}
3535
containers:
3636
- name: post-install-job
37-
image: "{{ .Values.web.config.image.registry }}/{{ .Values.web.config.image.namespace }}/{{ .Values.web.config.image.name }}:{{ .Values.web.config.image.tag }}"
37+
image: "{{ .Values.config.image.registry }}/{{ .Values.config.image.namespace }}/{{ .Values.config.image.name }}:{{ .Values.config.image.tag }}"
3838
env:
3939
- name: XNAT_ADMIN_PASSWORD
4040
valueFrom:
4141
secretKeyRef:
42-
name: {{ .Values.web.auth.localdb.secretName }}
42+
name: {{ .Values.auth.localdb.secretName }}
4343
key: adminPassword
4444
- name: XNAT_SERVICE_ADMIN_PASSWORD
4545
valueFrom:
4646
secretKeyRef:
47-
name: {{ .Values.web.auth.localdb.secretName }}
47+
name: {{ .Values.auth.localdb.secretName }}
4848
key: serviceAdminPassword
4949
command: ["ansible-playbook"]
5050
args:
@@ -55,13 +55,13 @@ spec:
5555
- xnat_admin_password="$(XNAT_ADMIN_PASSWORD)"
5656
- --extra-vars
5757
- xnat_service_admin_password="$(XNAT_SERVICE_ADMIN_PASSWORD)"
58-
{{- if .Values.web.auth.openid.enabled }}
58+
{{- if .Values.auth.openid.enabled }}
5959
- --extra-vars
60-
- '{"xnat_enabled_providers": ["localdb", {{ .Values.web.auth.openid.provider | quote }}]}'
60+
- '{"xnat_enabled_providers": ["localdb", {{ .Values.auth.openid.provider | quote }}]}'
6161
{{- end }}
62-
{{- if .Values.web.config.extraWait }}
62+
{{- if .Values.config.extraWait }}
6363
- --extra-vars
64-
- xnat_wait_for_tomcat={{ .Values.web.config.extraWait }}
64+
- xnat_wait_for_tomcat={{ .Values.config.extraWait }}
6565
{{- end }}
6666
- -v
6767
{{- end }}

0 commit comments

Comments
 (0)