AVÍS IMPORTANT: Actualització obligatòria abans del 30 de octubre de 2026
Degut a la pròxima actualització d'OpenShift a la versió 4.20, les versions mínimes requerides de Grafana i Prometheus han canviat:
- Grafana: versió mínima 9.5.21
- Prometheus: versió mínima 2.37.9
Les instal·lacions amb versions anteriors han d'actualitzar-se abans del 30 de octubre de 2026. Consulteu el capítol Actualització des de versions anteriors per a les instruccions d'actualització.
Desplegament de Grafana i Prometheus
En els següents apartats es descriu el procediment per realitzar el desplegament dels serveis Grafana i Prometheus per a una aplicació desplegada a OpenShift.
En primer lloc, s’ha de sol·licitar a Suport Cloud, pels canals oficials de comunicació (Comunicació proveïdors d’aplicacions amb Suport Cloud (gencat.cat)), la creació de dos Service Account pels serveis de grafana i prometheus en el namespace en què s’efectuarà el desplegament dels serveis. El nom de les service account a crear són “grafana” i “prometheus” respectivament.
L’ estructura del repositori ha de ser similar al d’altres aplicacions. Els fitxers s’han de situar en la branca màster per a que es pugui desplegar mitjançant SIC i ha d’ existir un directori anomenat sic en el qual es trobarà el fitxer aca.yaml. S’ enllacen els fitxers aca.yaml que poden ser utilitzats com a referència per al desplegament dels serveis:
Al fitxer aca.yaml s’enllaça la url del repositori dels orquestradors a desplegar, com es pot veure a la línia 11 dels fitxers aca.yaml enllaçats. S’adjunta una imatge d’un repositori a mode d’ exemple.

Depenent del CPD i cluster d’Openshift en el qual es trobi el namespace en què es vagin a desplegar aquests serveis, hi pot haver lleugeres modificacions en els orquestradors. En els següents punts s’inclouen exemples i instruccions de parametrització d’orquestradors per a cadascun dels Cluster d’Openshift i CPD.
CPD2 i CPD3
Per realitzar el desplegament de tots els components requerits pels serveis de grafana i prometheus al namespace on està desplegada l’ aplicació cal incloure els següents descriptors:
- Grafana
S’han de desplegar els següents components: Ingress (Que generarà una ruta de manera automàtica), role, servei, statefulset, configmaps i secret. Les següents plantilles es poden utilitzar com a referència substituint els paràmetres segons s’indica a continuació:
- Grafana Configmap 1
- Grafana Configmap 2
- Grafana Configmap 3
- Grafana Configmap 4
- Grafana Configmap 5
- Grafana PVC
- Grafana Role
- Grafana Ingress
- Grafana Secret
- Grafana Service
- Grafana Statefulset CPD2
- Grafana Statefulset CPD3
En tots els fitxers, substituir l’expressió “${NAMESPACE}” pel nom del namespace de l’aplicació.
En el fitxer grafana-ingress.yaml s’ha de substituir l’expressió “${ROUTE_URL}” pel domini sol·licitat per al servei.
En el mateix fitxer, l’expressió “${ROUTER_LABEL}” es substituirà per:
- Si es tracta de CPD2, “external-001” o “internal-001” segons si el domini és d’internet o intranet respectivament.
- Si es tracta de CPD3, “internet” o “intranet” segons si el domini és d’internet o intranet respectivament.
En el mateix fitxer, l’expressió “${SECRET_NAME}” se substituirà pel nom del secret de Openshift, del mateix namespace, que contingui el certificat. El nom d’aquest secret es compon de la manera següent:
Si el domini utilitzat és el següent: preproduccio.grafana.intranet.gencat.cat
El nom del secret serà: preproduccio-grafana-intranet-secret-certificate
És a dir, es reemplacen els punts per guions, i “gencat.cat” per “secret-certificate”.
(Encara que sapiguem el nom del secret per endavant, no es generarà un objecto de tipus Route automàticament si no existeix el secret en el namespace)
En el fitxer grafana-pvc-cpd2-cpd3.yaml es substituirà l’etiqueta “${PVC_SIZE}” per la mida de pvc assignat en l’aprovisionament.
Finalment, en el fitxer grafana-secret.yaml s’ha de substituir l’expressió “${SESSION_SECRET}” per qualsevol combinació de 43 caràcters de longitud compresos en el següent interval [a-zA-Z0-9] i codificat en base64.
Una vegada modificats els fitxers, el primer desplegament ha de realitzar-se sempre utilitzant el job DEPLOY-ALL per a assegurar que es carreguen en Openshift tant imatges com orquestadores. Successius desplegaments ja poden fer ús de qualsevol job tenint en compte que els orquestadores sempre han de fer referència a la imatge utilitzant el registre intern del openshift en el qual s’aquesta desplegant.
- Prometheus
S’ han de desplegar els següents components: Ingress (Que generarà una ruta de manera automàtica), role, servei, statefulset, configmap i secret. Les següents plantilles es poden utilitzar com a referència substituint els paràmetres segons s’indica a continuació:
- Prometheus Configmap
- Prometheus PVC
- Prometheus Role
- Prometheus Ingress
- Prometheus Service
- Prometheus Secret
- Prometheus Stateful Set CPD2
- Prometheus Stateful Set CPD3
En tots els fitxers han de ser parametritzats substituint en l’expressió “${NAMESPACE}” pel nom del namespace de l’aplicació.
En el fitxer prometheus-ingress.yaml s’ha de substituir l’expressió “${ROUTE_URL}” pel domini sol·licitat per al servei.
En el mateix fitxer, l’expressió “${ROUTER_LABEL}” es substituirà per:
- Si es tracta de CPD2, “external-001” o “internal-001” segons si el domini és d’internet o intranet respectivament.
- Si es tracta de CPD3, “internet” o “intranet” segons si el domini és d’internet o intranet respectivament.
En el mateix fitxer, l’expressió “${SECRET_NAME}” se substituirà pel nom del secret de Openshift, del mateix namespace, que contingui el certificat. El nom d’aquest secret es compon de la manera següent:
Si el domini utilitzat és el següent: preproduccio.prometheus.intranet.gencat.cat
El nom del secret serà: preproduccio-prometheus-intranet-secret-certificate
És a dir, es reemplacen els punts per guions, i “gencat.cat” per “secret-certificate”.
(Encara que sapiguem el nom del secret per endavant, no es generarà un objecto de tipus Route automàticament si no existeix el secret en el namespace)
En el fitxer prometheus-pvc-cpd2-cpd3.yaml es substituirà l’etiqueta “${PVC_SIZE}” per la mida de pvc assignat en l’aprovisionament.
Finalment, en el fitxer secret-prometheus.yaml s’ha de substituir l’expressió “${SESSION_SECRET}” per qualsevol combinació de 43 caràcters de longitud compresos en el següent interval [a-zA-Z0-9] i codificat en base64.
Una vegada modificats els fitxers, el primer desplegament ha de realitzar-se sempre utilitzant el job DEPLOY-ALL per a assegurar que es carreguen en Openshift tant imatges com orquestadores. Successius desplegaments ja poden fer ús de qualsevol job tenint en compte que els orquestadores sempre han de fer referència a la imatge utilitzant el registre intern del openshift en el qual s’aquesta desplegant.
CPD4 Transversal
Per realitzar el desplegament de tots els components requerits pels serveis de grafana i prometheus al namespace on està desplegada l’aplicació cal incloure els següents descriptors:
- Grafana
S’han de desplegar els següents components: Ingress (Que generarà una ruta de manera automàtica), role, servei, statefulset, configmaps i secret. Les següents plantilles es poden utilitzar com a referència substituint els paràmetres segons s’indica a continuació:
- Grafana Configmap 1
- Grafana Configmap 2
- Grafana Configmap 3
- Grafana Configmap 4
- Grafana Configmap 5
- Grafana PVC
- Grafana Role
- Grafana Ingress
- Grafana Secret
- Grafana Service
- Grafana Stateful Set
En tots els fitxers, substituir l’expressió “${NAMESPACE}” pel nom del namespace de l’aplicació.
En el fitxer grafana-ingress.yaml s’ha de substituir l’expressió “${ROUTE_URL}” pel domini sol·licitat per al servei.
En el mateix fitxer, l’expressió “${ROUTER_LABEL}” es substituirà per “internet” o “intranet” segons si el domini és d’internet o intranet respectivament.
En el mateix fitxer, l’expressió “${SECRET_NAME}” se substituirà pel nom del secret de Openshift, del mateix namespace, que contingui el certificat. El nom d’aquest secret es compon de la manera següent:
Si el domini utilitzat és el següent: preproduccio.grafana.intranet.gencat.cat
El nom del secret serà: preproduccio-grafana-intranet-secret-certificate
És a dir, es reemplacen els punts per guions, i “gencat.cat” per “secret-certificate”.
(Encara que sapiguem el nom del secret per endavant, no es generarà un objecto de tipus Route automàticament si no existeix el secret en el namespace)
En el fitxer grafana-pvc-cpd4-salut.yaml es substituirà l’etiqueta “${PVC_SIZE}” per la mida de pvc assignat en l’aprovisionament.
Finalment, en el fitxer grafana-secret.yaml s’ha de substituir l’expressió “${SESSION_SECRET}” per qualsevol combinació de 43 caràcters de longitud compresos en el següent interval [a-zA-Z0-9] i codificat en base64.
Una vegada modificats els fitxers, el primer desplegament ha de realitzar-se sempre utilitzant el job DEPLOY-ALL per a assegurar que es carreguen en Openshift tant imatges com orquestadores. Successius desplegaments ja poden fer ús de qualsevol job tenint en compte que els orquestadores sempre han de fer referència a la imatge utilitzant el registre intern del openshift en el qual s’aquesta desplegant.
- Prometheus
S’han de desplegar els següents components: Ingress (Que generarà una ruta de manera automàtica), role, servei, statefulset, configmap i secret. Les següents plantilles es poden utilitzar com a referència substituint els paràmetres segons s’indica a continuació:
- Prometheus Configmap
- Prometheus PVC
- Prometheus Role
- Prometheus Ingress
- Prometheus Service
- Prometheus Secret
- Prometheus Stateful Set
En tots els fitxers han de ser parametritzats substituint en l’expressió “${NAMESPACE}” pel nom del namespace de l’aplicació.
En el fitxer prometheus-ingress.yaml s’ha de substituir l’expressió “${ROUTE_URL}” pel domini sol·licitat per al servei.
En el mateix fitxer, l’expressió “${ROUTER_LABEL}” es substituirà per “internet” o “intranet” segons si el domini és d’internet o intranet respectivament.
En el mateix fitxer, l’expressió “${SECRET_NAME}” se substituirà pel nom del secret de Openshift, del mateix namespace, que contingui el certificat. El nom d’aquest secret es compon de la manera següent:
Si el domini utilitzat és el següent: preproduccio.prometheus.intranet.gencat.cat
El nom del secret serà: preproduccio-prometheus-intranet-secret-certificate
És a dir, es reemplacen els punts per guions, i “gencat.cat” per “secret-certificate”.
(Encara que sapiguem el nom del secret per endavant, no es generarà un objecto de tipus Route automàticament si no existeix el secret en el namespace)
En el fitxer prometheus-pvc-cpd4.yaml es substituirà l’etiqueta “${PVC_SIZE}” per la mida de pvc assignat en l’aprovisionament.
Finalment, en el fitxer secret-prometheus.yaml s’ha de substituir l’expressió “${SESSION_SECRET}” per qualsevol combinació de 43 caràcters de longitud compresos en el següent interval [a-zA-Z0-9] i codificat en base64.
Una vegada modificats els fitxers, el primer desplegament ha de realitzar-se sempre utilitzant el job DEPLOY-ALL per a assegurar que es carreguen en Openshift tant imatges com orquestadores. Successius desplegaments ja poden fer ús de qualsevol job tenint en compte que els orquestadores sempre han de fer referència a la imatge utilitzant el registre intern del openshift en el qual s’aquesta desplegant.
CPD4 Salut
Per realitzar el desplegament de tots els components requerits pels serveis de grafana i prometheus al namespace on està desplegada l’ aplicació cal incloure els següents descriptors:
- Grafana
Es necessiten els següents components: Ingress (Que generarà una ruta de manera automàtica), role, servei, statefulset, configmaps i secret. S’adjunten els descriptors que poden ser utilitzats com a referència:
- Grafana Configmap 1
- Grafana Configmap 2
- Grafana Configmap 3
- Grafana Configmap 4
- Grafana Configmap 5
- Grafana PVC
- Grafana Role
- Grafana Ingress
- Grafana Secret
- Grafana Service
- Grafana Stateful Set
En tots els fitxers, substituir l’expressió “${NAMESPACE}” pel nom del namespace de l’aplicació.
En el fitxer grafana-ingress.yaml s’ha de substituir l’expressió “${ROUTE_URL}” pel domini sol·licitat per al servei.
En el mateix fitxer, l’expressió “${ROUTER_LABEL}” es substituirà per “internet” o “intranet” segons si el domini és d’internet o intranet respectivament.
En el mateix fitxer, l’expressió “${SECRET_NAME}” se substituirà pel nom del secret de Openshift, del mateix namespace, que contingui el certificat. El nom d’aquest secret es compon de la manera següent:
Si el domini utilitzat és el següent: preproduccio.grafana.intranet.gencat.cat
El nom del secret serà: preproduccio-grafana-intranet-secret-certificate
És a dir, es reemplacen els punts per guions, i “gencat.cat” per “secret-certificate”.
(Encara que sapiguem el nom del secret per endavant, no es generarà un objecto de tipus Route automàticament si no existeix el secret en el namespace)
En el fitxer grafana-pvc-cpd4-salut.yaml es substituirà l’etiqueta “${PVC_SIZE}” per la mida de pvc assignat en l’aprovisionament.
Finalment, en el fitxer grafana-secret.yaml s’ha de substituir l’expressió “${SESSION_SECRET}” per qualsevol combinació de 43 caràcters de longitud compresos en el següent interval [a-zA-Z0-9] i codificat en base64.
Una vegada modificats els fitxers, el primer desplegament ha de realitzar-se sempre utilitzant el job DEPLOY-ALL per a assegurar que es carreguen en Openshift tant imatges com orquestadores. Successius desplegaments ja poden fer ús de qualsevol job tenint en compte que els orquestadores sempre han de fer referència a la imatge utilitzant el registre intern del openshift en el qual s’aquesta desplegant.
- Prometheus
S’ han de desplegar els següents components: Ingress (Que generarà una ruta de manera automàtica), role, servei, statefulset, configmap i secret. Les següents plantilles es poden utilitzar com a referència substituint els paràmetres segons s’indica a continuació:
- Prometheus Configmap
- Prometheus PVC
- Prometheus Role
- Prometheus Ingress
- Prometheus Service
- Prometheus Secret 1
- Prometheus Secret 2
- Prometheus Stateful Set
En cas d’haver consensuat amb Arquitectura del Departament de Salut l’ús de l’autorització delegada per l’Identity Provider de Salut, s’han d’utilitzar les plantilles següents per a l’Stateful Set:
En aquest cas, al fitxer statefulset-prometheus-basic-salut.yaml s’ha de substituir l’expressió “${IDENTITY_PROVIDER_URL}” per l’OIDC Issuer URL de l’Identity Provider a utilitzar, el ${ROUTE_URL} s’ha de substituir en totes los fitxers per el ROUTE_URL del grafana i en el cas del ${SECRET_NAME} de la mateixa manera s’ha de substituir pel SECRET_NAME de la grafana.
En tots els fitxers han de ser parametritzats substituint en l’expressió “${NAMESPACE}” pel nom del namespace de l’aplicació.
En el fitxer prometheus-ingress.yaml s’ha de substituir l’expressió “${ROUTE_URL}” pel domini sol·licitat per al servei.
En el mateix fitxer, l’expressió “${ROUTER_LABEL}” es substituirà per “internet” o “intranet” segons si el domini és d’internet o intranet respectivament.
En el mateix fitxer, l’expressió “${SECRET_NAME}” se substituirà pel nom del secret de Openshift, del mateix namespace, que contingui el certificat. El nom d’aquest secret es compon de la manera següent:
Si el domini utilitzat és el següent: preproduccio.prometheus.intranet.gencat.cat
El nom del secret serà: preproduccio-prometheus-intranet-secret-certificate
És a dir, es reemplacen els punts per guions, i “gencat.cat” per “secret-certificate”.
(Encara que sapiguem el nom del secret per endavant, no es generarà un objecto de tipus Route automàticament si no existeix el secret en el namespace)
En el fitxer prometheus-pvc-cpd4.yaml es substituirà l’etiqueta “${PVC_SIZE}” per la mida de pvc assignat en l’aprovisionament.
En el fitxer secret-prometheus.yaml s’ha de substituir l’expressió “${SESSION_SECRET}” per qualsevol combinació de 43 caràcters de longitud compresos en el següent interval [a-zA-Z0-9] i codificat en base64.
En el fitxer statefulset-prometheus-basic-salut.yaml s’han de parametrar els valors tant de cpu com de memòria que volem que rebin tant el contenidor prom-proxy com el contenidor prometheus. Per a això cal substituir les expressions ${CPU_PROXY} i ${MEM_PROXY} per al contenidor prom-proxy i ${CPU_PROMETHEUS} i ${MEM_PROMETHEUS} per al contenidor prometheus amb els valors de CPU i memòria desitjats.
Una vegada modificats els fitxers, el primer desplegament ha de realitzar-se sempre utilitzant el job DEPLOY-ALL per a assegurar que es carreguen en Openshift tant imatges com orquestadores. Successius desplegaments ja poden fer ús de qualsevol job tenint en compte que els orquestadores sempre han de fer referència a la imatge utilitzant el registre intern del openshift en el qual s’aquesta desplegant.
Actualització des de versions anteriors
Degut a la pròxima actualització d’OpenShift a la versió 4.20, s’ha introduït suport per a cgroupv2. Això implica que caldrà actualitzar Grafana i Prometheus a les versions mínimes compatibles amb cgroupv2:
- Prometheus: versió mínima 2.37.9
- Grafana: versió mínima 9.5.21
A continuació s’indiquen els passos necessaris per actualitzar des de les versions 2.34.0 de Prometheus i 8.5.4 de Grafana.
Actualització de Prometheus (de 2.34.0 a 2.37.9)
Per actualitzar Prometheus caldrà modificar el fitxer aca.yaml i l’statefulset.
ACA.yaml
Actualitzar la versió de la imatge al fitxer aca.yaml:
version: 2.0.0
info:
version: '2.37.9'
global-env:
- CONTAINER_IMAGE_NAME: prometheus
- CONTAINER_EXTERNAL_REGISTRY: 'docker.io/prom'
- CONTAINER_IMAGE_TAG: 'v2.37.9'
- DEPLOYMENT_TYPE: Statefulset
Statefulset
Actualitzar els arguments i la imatge al fitxer de l’statefulset. A partir de la versió 2.37.9, el paràmetre --storage.tsdb.min-block-duration és ignorat i es pot eliminar:
args:
- --storage.tsdb.retention.time=7d
# - --storage.tsdb.min-block-duration=2h
- --storage.tsdb.max-block-duration=2h
- --config.file=/etc/prometheus/prometheus.yml
- --web.enable-lifecycle
image: docker.io/prom/prometheus:v2.37.9
Actualitzar també la imatge de l’oauth-proxy:
- name: prom-proxy
image: quay.io/openshift/origin-oauth-proxy:4.18
imagePullPolicy: Always
resources:
requests:
cpu: "10m"
memory: "60Mi"
limits:
cpu: "10m"
memory: "100Mi"
Actualització de Grafana (de 8.5.4 a 9.5.21)
Per actualitzar Grafana caldrà modificar el fitxer aca.yaml i l’statefulset.
ACA.yaml
Actualitzar la versió de la imatge al fitxer aca.yaml:
version: 2.0.0
info:
version: '9.5.21'
global-env:
- CONTAINER_IMAGE_NAME: grafana
- CONTAINER_EXTERNAL_REGISTRY: 'docker.io/grafana'
- CONTAINER_IMAGE_TAG: '9.5.21'
- DEPLOYMENT_TYPE: Statefulset
L’actualització a la versió 9.5 requereix afegir variables d’entorn per referenciar el path de la base de dades i altres configuracions. Cal afegir-les al fitxer de l’statefulset.
Statefulset
Afegir les següents variables d’entorn al contenidor de Grafana:
- name: GF_PATHS_HOME
value: '/usr/share/grafana'
- name: GF_PATHS_LOGS
value: '/tmp/data/log'
- name: GF_PATHS_PROVISIONING
value: '/usr/share/grafana/provisioning'
- name: GF_PATHS_PLUGINS
value: '/tmp/data/plugins'
- name: GF_PATHS_CONFIG
value: '/usr/share/grafana/conf/defaults.ini'
- name: GF_PATHS_DATA
value: '/tmp/data'
Actualitzar també la imatge de l’oauth-proxy:
- name: oauth-proxy
image: quay.io/openshift/origin-oauth-proxy:4.18
imagePullPolicy: Always
resources:
requests:
cpu: "10m"
memory: "60Mi"
limits:
cpu: "10m"
memory: "100Mi"