diff --git a/openshift/configmap-redis_like_config.yml b/openshift/configmap-redis_like_config.yml new file mode 100644 index 0000000..f234dbd --- /dev/null +++ b/openshift/configmap-redis_like_config.yml @@ -0,0 +1,8 @@ +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: redis-like-config +data: + redis.conf: | + timeout 1800 diff --git a/openshift/packit-service-beat.yml.j2 b/openshift/packit-service-beat.yml.j2 index df4708e..cf6eb28 100644 --- a/openshift/packit-service-beat.yml.j2 +++ b/openshift/packit-service-beat.yml.j2 @@ -70,7 +70,7 @@ spec: requests: memory: "160Mi" cpu: "5m" - epehemeral-storage: "80Ki" + ephemeral-storage: "80Ki" limits: memory: "256Mi" cpu: "50m" diff --git a/openshift/packit-service.yml.j2 b/openshift/packit-service.yml.j2 index bdd6637..9961f22 100644 --- a/openshift/packit-service.yml.j2 +++ b/openshift/packit-service.yml.j2 @@ -91,7 +91,7 @@ spec: requests: memory: "320Mi" cpu: "10m" - epehemeral-storage: "300Ki" + ephemeral-storage: "300Ki" limits: # run_httpd.sh does 'alembic upgrade head' which might require more memory # If you see '/usr/bin/run_httpd.sh: line 16: Killed alembic upgrade head' diff --git a/openshift/redict.yml.j2 b/openshift/redict.yml.j2 index 6486950..80889f9 100644 --- a/openshift/redict.yml.j2 +++ b/openshift/redict.yml.j2 @@ -21,11 +21,15 @@ spec: containers: - name: redict image: registry.redict.io/redict:7 + args: + - "/etc/redislike/redis.conf" ports: - containerPort: 6379 volumeMounts: - mountPath: /data name: redict-pv + - mountPath: /etc/redislike + name: redis-like-config resources: # requests and limits have to be the same to have Guaranteed QoS requests: @@ -38,6 +42,8 @@ spec: - name: redict-pv persistentVolumeClaim: claimName: redict-pvc + - name: redis-like-config + configMap: {name: redis-like-config} replicas: 1 strategy: type: Recreate diff --git a/openshift/valkey.yml.j2 b/openshift/valkey.yml.j2 new file mode 100644 index 0000000..12e95c2 --- /dev/null +++ b/openshift/valkey.yml.j2 @@ -0,0 +1,85 @@ +# Copyright Contributors to the Packit project. +# SPDX-License-Identifier: MIT + +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: valkey +spec: + selector: + matchLabels: + component: valkey + template: + metadata: + labels: + component: valkey +{% if managed_platform %} + paas.redhat.com/appcode: {{ appcode }} +{% endif %} + spec: + containers: + - name: valkey + image: valkey/valkey:8.0.0 + args: + - "/etc/redislike/redis.conf" + ports: + - containerPort: 6379 + volumeMounts: + - mountPath: /data + name: valkey-pv + - mountPath: /etc/redislike + name: redis-like-config + resources: + # requests and limits have to be the same to have Guaranteed QoS + requests: + memory: "128Mi" + cpu: "10m" + limits: + memory: "256Mi" + cpu: "10m" + volumes: + - name: valkey-pv + persistentVolumeClaim: + claimName: valkey-pvc + - name: redis-like-config + configMap: {name: redis-like-config} + replicas: 1 + strategy: + type: Recreate +--- +apiVersion: v1 +kind: Service +metadata: + name: valkey +{% if managed_platform %} + labels: + paas.redhat.com/appcode: {{ appcode }} +{% endif %} +spec: + ports: + - name: "6379" + port: 6379 + targetPort: 6379 + selector: + component: valkey +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: valkey-pvc +{% if managed_platform %} + labels: + paas.redhat.com/appcode: {{ appcode }} + annotations: + kubernetes.io/reclaimPolicy: Delete +{% endif %} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +{% if managed_platform %} + storageClassName: aws-ebs +{% endif %} diff --git a/playbooks/deploy.yml b/playbooks/deploy.yml index 77f0987..6e427bd 100644 --- a/playbooks/deploy.yml +++ b/playbooks/deploy.yml @@ -12,8 +12,8 @@ tenant: packit # MP+ tenant with_tokman: true with_fedmsg: true - with_redis: false - with_redict: true + kv_database: "redict" + with_kv_database: true with_redis_commander: false with_flower: false with_dashboard: true @@ -183,21 +183,14 @@ tags: - postgres - - name: Deploy redis + - name: Deploy key-value database ({{ kv_database }}) ansible.builtin.include_tasks: tasks/k8s.yml loop: - - "{{ lookup('template', '{{ project_dir }}/openshift/redis.yml.j2') }}" - when: with_redis + - "{{ lookup('file', '{{ project_dir }}/openshift/configmap-redis_like_config.yml') }}" + - "{{ lookup('template', '{{ project_dir }}/openshift/{{ kv_database }}.yml.j2') }}" + when: with_kv_database tags: - - redis - - - name: Deploy redict - ansible.builtin.include_tasks: tasks/k8s.yml - loop: - - "{{ lookup('template', '{{ project_dir }}/openshift/redict.yml.j2') }}" - when: with_redict - tags: - - redict + - kv_database - name: Deploy fluentd image stream and config ansible.builtin.include_tasks: tasks/k8s.yml diff --git a/playbooks/roles/deploy/defaults/main.yml b/playbooks/roles/deploy/defaults/main.yml index aa3b5b1..8dc3c11 100644 --- a/playbooks/roles/deploy/defaults/main.yml +++ b/playbooks/roles/deploy/defaults/main.yml @@ -5,8 +5,8 @@ deployment: "{{ lookup('env', 'DEPLOYMENT') }}" # noqa: var-naming[no-role-prefi tenant: packit # noqa: var-naming[no-role-prefix] # MP+ tenant with_tokman: true # noqa: var-naming[no-role-prefix] with_fedmsg: true # noqa: var-naming[no-role-prefix] -with_redis: false # noqa: var-naming[no-role-prefix] -with_redict: true # noqa: var-naming[no-role-prefix] +kv_database: "redict" # noqa: var-naming[no-role-prefix] +with_kv_database: true # noqa: var-naming[no-role-prefix] with_redis_commander: false # noqa: var-naming[no-role-prefix] with_flower: false # noqa: var-naming[no-role-prefix] with_dashboard: true # noqa: var-naming[no-role-prefix] diff --git a/playbooks/roles/deploy/tasks/main.yml b/playbooks/roles/deploy/tasks/main.yml index 0ae4603..4316fc2 100644 --- a/playbooks/roles/deploy/tasks/main.yml +++ b/playbooks/roles/deploy/tasks/main.yml @@ -141,21 +141,14 @@ tags: - postgres -- name: Deploy redis +- name: Deploy key-value database ({{ kv_database }}) ansible.builtin.include_tasks: tasks/k8s.yml loop: - - "{{ lookup('template', '{{ project_dir }}/openshift/redis.yml.j2') }}" - when: with_redis + - "{{ lookup('file', '{{ project_dir }}/openshift/configmap-redis_like_config.yml') }}" + - "{{ lookup('template', '{{ project_dir }}/openshift/{{ kv_database }}.yml.j2') }}" + when: with_kv_database tags: - - redis - -- name: Deploy redict - ansible.builtin.include_tasks: tasks/k8s.yml - loop: - - "{{ lookup('template', '{{ project_dir }}/openshift/redict.yml.j2') }}" - when: with_redict - tags: - - redict + - kv_database - name: Deploy fluentd image stream and config ansible.builtin.include_tasks: tasks/k8s.yml diff --git a/playbooks/tasks/set-deployment-facts.yml b/playbooks/tasks/set-deployment-facts.yml index 10987dc..24d4200 100644 --- a/playbooks/tasks/set-deployment-facts.yml +++ b/playbooks/tasks/set-deployment-facts.yml @@ -22,8 +22,9 @@ packit-dashboard: "{{ with_dashboard }}" pushgateway: "{{ with_pushgateway }}" nginx: "{{ with_pushgateway }}" - redis: "{{ with_redis }}" - redict: "{{ with_redict }}" + redis: "{{ with_kv_database and kv_database == 'redis' }}" + redict: "{{ with_kv_database and kv_database == 'redict' }}" + valkey: "{{ with_kv_database and kv_database == 'valkey' }}" tags: - always diff --git a/playbooks/tasks/set-facts.yml b/playbooks/tasks/set-facts.yml index 8110128..a66ba25 100644 --- a/playbooks/tasks/set-facts.yml +++ b/playbooks/tasks/set-facts.yml @@ -31,27 +31,5 @@ - name: Set Redis-like hostname tags: - always - block: - # Needed for nice message of the sanity check - - name: Set default for the hostname - ansible.builtin.set_fact: - redis_hostname: None - - - name: Set Redict as the hostname - ansible.builtin.set_fact: - redis_hostname: redict - when: with_redict - - - name: Set Redis as the hostname (backward compatibility) - ansible.builtin.set_fact: - redis_hostname: redis - when: with_redis - - - name: Sanity check for deploying exactly one of Redis or Redict - ansible.builtin.assert: - that: with_redict != with_redis - success_msg: | - [INFO] Deploying {{ redis_hostname }} - fail_msg: | - [FAIL] Check vars (‹with_redict› and ‹with_redis›). - Cannot deploy none or both of Redis and Redict! + ansible.builtin.set_fact: + redis_hostname: "{{ kv_database }}" diff --git a/vars/packit/dev_template.yml b/vars/packit/dev_template.yml index 2d2ed9c..b8e0b61 100644 --- a/vars/packit/dev_template.yml +++ b/vars/packit/dev_template.yml @@ -30,6 +30,11 @@ check_up_to_date: false # edit the queue name in secrets/*/fedora.toml with_fedmsg: false +# kv_database options: redis redict valkey +# Current default on both deployments: valkey +kv_database: valkey +with_kv_database: true + with_redis_commander: false with_flower: true diff --git a/vars/packit/prod_template.yml b/vars/packit/prod_template.yml index fee7ae9..1048e5a 100644 --- a/vars/packit/prod_template.yml +++ b/vars/packit/prod_template.yml @@ -32,6 +32,11 @@ api_key: "" # edit the queue name in secrets/*/fedora.toml # with_fedmsg: true +# kv_database options: redis redict valkey +# Current default on both deployments: valkey +kv_database: valkey +# with_kv_database: true + # with_redis_commander: false with_flower: true diff --git a/vars/packit/stg_template.yml b/vars/packit/stg_template.yml index bf863d8..45bdc42 100644 --- a/vars/packit/stg_template.yml +++ b/vars/packit/stg_template.yml @@ -30,6 +30,11 @@ api_key: "" # edit the queue name in secrets/*/fedora.toml # with_fedmsg: true +# kv_database options: redis redict valkey +# Current default on both deployments: valkey +kv_database: valkey +# with_kv_database: true + # with_redis_commander: false with_flower: true