From 14f399e5360eecac8d37638ff0c8d8cd698cd342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Bompard?= Date: Mon, 29 Apr 2024 12:59:10 +0200 Subject: [PATCH] Badges: add Redis for caching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Aurélien Bompard --- .../badges/files/imagestream.yml | 11 ++++++ roles/openshift-apps/badges/files/service.yml | 16 ++++++++ .../badges/templates/deploymentconfig.yml | 39 +++++++++++++++++++ .../badges/templates/fm-fedbadges.toml | 9 ++++- .../badges/templates/secrets.yml | 2 + 5 files changed, 75 insertions(+), 2 deletions(-) diff --git a/roles/openshift-apps/badges/files/imagestream.yml b/roles/openshift-apps/badges/files/imagestream.yml index c6a0606f67..d5dee671a1 100644 --- a/roles/openshift-apps/badges/files/imagestream.yml +++ b/roles/openshift-apps/badges/files/imagestream.yml @@ -32,3 +32,14 @@ items: kind: ImageStream metadata: name: python-310-custom-builder + # Redis (for caching) + - apiVersion: image.openshift.io/v1 + kind: ImageStream + metadata: + name: redis + spec: + tags: + - name: latest + from: + kind: DockerImage + name: docker.io/bitnami/redis:latest diff --git a/roles/openshift-apps/badges/files/service.yml b/roles/openshift-apps/badges/files/service.yml index 2df027887f..617ceba8c4 100644 --- a/roles/openshift-apps/badges/files/service.yml +++ b/roles/openshift-apps/badges/files/service.yml @@ -14,3 +14,19 @@ spec: targetPort: 8080 selector: deploymentconfig: frontend +--- +apiVersion: v1 +kind: Service +metadata: + name: redis + labels: + app: badges +spec: + ports: + - name: redis + port: 6379 + protocol: TCP + targetPort: 6379 + selector: + app: badges + deploymentconfig: redis diff --git a/roles/openshift-apps/badges/templates/deploymentconfig.yml b/roles/openshift-apps/badges/templates/deploymentconfig.yml index 5c0654adb6..d5b4918484 100644 --- a/roles/openshift-apps/badges/templates/deploymentconfig.yml +++ b/roles/openshift-apps/badges/templates/deploymentconfig.yml @@ -212,3 +212,42 @@ spec: from: kind: ImageStreamTag name: fedbadges:latest +--- +# Redis, for caching +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + name: redis + labels: + app: badges + service: redis +spec: + replicas: 1 + selector: + app: badges + deploymentconfig: redis + template: + metadata: + labels: + app: badges + deploymentconfig: redis + spec: + containers: + - name: redis + image: redis:latest + env: + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: badges + key: redis-password + triggers: + - type: ConfigChange + - type: ImageChange + imageChangeParams: + automatic: true + containerNames: + - redis + from: + kind: ImageStreamTag + name: redis:latest diff --git a/roles/openshift-apps/badges/templates/fm-fedbadges.toml b/roles/openshift-apps/badges/templates/fm-fedbadges.toml index a3bfade5ac..3c7a652062 100644 --- a/roles/openshift-apps/badges/templates/fm-fedbadges.toml +++ b/roles/openshift-apps/badges/templates/fm-fedbadges.toml @@ -66,12 +66,17 @@ fasjson_base_url = "https://fasjson{{ env_suffix }}.fedoraproject.org" # Cache configuation [consumer_config.cache] -backend = "dogpile.cache.pymemcache" +backend = "dogpile.cache.redis" expiration_time = 86400 [consumer_config.cache.arguments] -url = "memcached01{{ env_suffix }}:11211" +host = "redis.badges.svc.cluster.local" +port = 6379 +password = "{{ (env == 'production')|ternary(badges_prod_redis_password, badges_stg_redis_password) }}" +db = 0 +redis_expiration_time = 86400 distributed_lock = true lock_timeout = 5 +thread_local_lock = false # This is a set of data that tells our consumer what Open Badges Issuer # should be kept as the issuer of all the badges we create. diff --git a/roles/openshift-apps/badges/templates/secrets.yml b/roles/openshift-apps/badges/templates/secrets.yml index 0981c7fe14..80f98ad0bd 100644 --- a/roles/openshift-apps/badges/templates/secrets.yml +++ b/roles/openshift-apps/badges/templates/secrets.yml @@ -6,6 +6,8 @@ metadata: stringData: {% if env == 'staging' %} oidc-client-secret: {{ badges_stg_oidc_client_secret }} + redis-password: {{ badges_stg_redis_password }} {% else %} oidc-client-secret: {{ badges_prod_oidc_client_secret }} + redis-password: {{ badges_prod_redis_password }} {% endif %}