Skip to content

Commit a9994a8

Browse files
authored
feat(service): replace/refactor internal repository cache (#3534)
1 parent bcdeba1 commit a9994a8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1128
-1508
lines changed

cache-cleanup-job/Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Docker image for core-svc cronjob
2+
FROM alpine:3.18.2
3+
RUN apk add --no-cache ca-certificates=20230506-r0 curl=8.1.2-r0 bash=5.2.15-r5 && rm -rf /var/cache/apk/*
4+
RUN curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" &&\
5+
chmod +x ./kubectl &&\
6+
mv ./kubectl /usr/bin/kubectl
7+
8+
RUN mkdir /code
9+
WORKDIR /code
10+
COPY cleanup.sh /code/
11+
12+
ENTRYPOINT ["/bin/bash", "/code/cleanup.sh"]

cache-cleanup-job/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Core Service cache cleanup image
2+
Small image to be used for the cache cleanup CronJob for the core service.
3+
4+
Loops through endpoint slices and call the cleanup endpoint on each core-svc instance.
5+
6+
Push as `renku/renku-core-cleanup:<version>` to use

cache-cleanup-job/cleanup.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
core_version=$1
6+
namespace=$2
7+
8+
mapfile -t -d " " pod_ips < <(kubectl -n "$namespace" get pods --selector="app.kubernetes.io/name=core" --selector="app.kubernetes.io/deploymentVersion=$core_version" -o=jsonpath="{.items[*].status.podIP}" )
9+
10+
success=true
11+
12+
for pod_ip in "${pod_ips[@]}"
13+
do
14+
echo "Calling http://$pod_ip:8080/renku/cache.cleanup"
15+
if curl "http://$pod_ip:8080/renku/cache.cleanup" ; then
16+
:
17+
else
18+
echo "Cleanup failed for pod $pod_ip with status $?">&2
19+
success=false
20+
fi
21+
done
22+
23+
if ! $success; then
24+
exit 1;
25+
fi

conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
"tests.service.fixtures.service_integration",
5959
"tests.service.fixtures.service_jobs",
6060
"tests.service.fixtures.service_projects",
61-
"tests.service.fixtures.service_scheduler",
6261
]
6362

6463
INCLUDE_FIXTURES = GLOBAL_FIXTURE_LOCATIONS + CORE_FIXTURE_LOCATIONS + CLI_FIXTURE_LOCATIONS + SERVICE_FIXTURE_LOCATIONS

docker-compose.yml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,6 @@ services:
8787
- traefik.http.routers.swagger.rule=PathPrefix(`/api/docs`)
8888
- traefik.http.services.my-service.loadbalancer.server.port=8080
8989

90-
renku-scheduler:
91-
build:
92-
context: .
93-
dockerfile: Dockerfile
94-
args:
95-
BUILD_CORE_SERVICE: 1
96-
command: ["service", "scheduler"]
97-
depends_on:
98-
- redis
99-
networks:
100-
- net
101-
env_file: .env
102-
10390
renku-worker:
10491
build:
10592
context: .
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{{- range $version := .Values.versions }}
2+
{{ if ne $version.name "v9"}}
3+
---
4+
apiVersion: batch/v1
5+
kind: CronJob
6+
metadata:
7+
name: {{ include "renku-core.fullname" $ }}-cleanup-{{ $version.name }}
8+
labels:
9+
app.kubernetes.io/deploymentVersion: {{ $version.name }}
10+
spec:
11+
schedule: "*/5 * * * *"
12+
concurrencyPolicy: Forbid
13+
jobTemplate:
14+
spec:
15+
template:
16+
spec:
17+
containers:
18+
- name: {{ include "renku-core.fullname" $ }}-cache-cleanup-{{ $version.name }}
19+
image: renku/renku-core-cleanup:v1
20+
imagePullPolicy: IfNotPresent
21+
args:
22+
- {{ $version.name | quote}}
23+
- {{ $.Release.Namespace }}
24+
restartPolicy: OnFailure
25+
serviceAccountName: {{ include "renku-core.fullname" $ }}-cleanup
26+
{{ end }}
27+
{{ end }}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: {{ include "renku-core.fullname" $ }}-cleanup
5+
labels:
6+
{{ include "renku-core.labels" $ | indent 4 }}
7+
---
8+
apiVersion: rbac.authorization.k8s.io/v1
9+
kind: Role
10+
metadata:
11+
name: {{ include "renku-core.fullname" $ }}-cleanup
12+
labels:
13+
{{ include "renku-core.labels" $ | indent 4 }}
14+
rules:
15+
- apiGroups:
16+
- ""
17+
resources:
18+
- pods
19+
verbs:
20+
- get
21+
- list
22+
---
23+
apiVersion: rbac.authorization.k8s.io/v1
24+
kind: RoleBinding
25+
metadata:
26+
name: {{ include "renku-core.fullname" $ }}-cleanup
27+
labels:
28+
{{ include "renku-core.labels" $ | indent 4 }}
29+
roleRef:
30+
apiGroup: rbac.authorization.k8s.io
31+
kind: Role
32+
name: {{ include "renku-core.fullname" $ }}-cleanup
33+
subjects:
34+
- kind: ServiceAccount
35+
name: {{ include "renku-core.fullname" $ }}-cleanup
36+
namespace: {{ $.Release.Namespace }}

helm-chart/renku-core/templates/deployment.yaml

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -279,48 +279,6 @@ spec:
279279
- name: shared-volume
280280
mountPath: {{ $.Values.cacheDirectory }}
281281
{{- include "certificates.volumeMounts.system" $ | nindent 12 }}
282-
resources:
283-
{{- toYaml $.Values.resources.managementWorkers | nindent 12 }}
284-
285-
- name: {{ $.Chart.Name }}-scheduler
286-
image: "{{ $version.image.repository }}:{{ $version.image.tag }}"
287-
imagePullPolicy: {{ $version.image.pullPolicy }}
288-
securityContext:
289-
{{- toYaml $.Values.securityContext | nindent 12 }}
290-
args: ["service", "scheduler"]
291-
env:
292-
- name: REDIS_HOST
293-
value: {{ $.Values.global.redis.host | quote }}
294-
- name: REDIS_PORT
295-
value: {{ $.Values.global.redis.port | quote }}
296-
- name: REDIS_DATABASE
297-
value: {{ $.Values.global.redis.dbIndex.coreService | quote }}
298-
- name: REDIS_IS_SENTINEL
299-
value: {{ $.Values.global.redis.sentinel.enabled | quote }}
300-
- name: REDIS_MASTER_SET
301-
value: {{ $.Values.global.redis.sentinel.masterSet | quote }}
302-
- name: REDIS_PASSWORD
303-
valueFrom:
304-
secretKeyRef:
305-
name: {{ $.Values.global.redis.existingSecret }}
306-
key: {{ $.Values.global.redis.existingSecretPasswordKey }}
307-
- name: REDIS_NAMESPACE
308-
value: {{ $version.name }}
309-
- name: CACHE_DIR
310-
value: {{ $.Values.cacheDirectory | quote }}
311-
- name: RENKU_SVC_CLEANUP_INTERVAL
312-
value: {{ $.Values.cleanupInterval | quote }}
313-
- name: SENTRY_ENABLED
314-
value: {{ $.Values.sentry.enabled | quote }}
315-
- name: SENTRY_DSN
316-
value: {{ $.Values.sentry.dsn }}
317-
- name: SENTRY_SAMPLE_RATE
318-
value: {{ $.Values.sentry.sampleRate | quote }}
319-
- name: SENTRY_ENV
320-
value: {{ $.Values.sentry.environment }}
321-
{{- include "certificates.env.python" $ | nindent 12 }}
322-
volumeMounts:
323-
{{- include "certificates.volumeMounts.system" $ | nindent 12 }}
324282
resources:
325283
{{- toYaml $.Values.resources.scheduler | nindent 12 }}
326284
{{- with $.Values.nodeSelector }}

0 commit comments

Comments
 (0)