Gestión de las versiones de Python
Si se está utilizando el Agent v6, Datadog recomienda actualizarlo a la versión 7. El Agent v7 solo incluye soporte para Python 3.
Sin embargo, puede darse el caso de que necesites seguir usando el Agent v6 y, al mismo tiempo, pasarte a Python 3. A partir del Datadog Agent v6.14.0, el Agent v6 integra los tiempos de ejecución de Python 2 y Python 3. Esto significa que los checks del Agent pueden ejecutarse tanto con Python 2 como con Python 3, dependiendo de la configuración del Agent.
Uso de Python 3 con el Datadog Agent v6
De forma predeterminada, el Agent v6 utiliza el tiempo de ejecución de Python 2. A continuación encontrarás instrucciones sobre cómo configurar el Agent v6 para que use el tiempo de ejecución de Python 3:
Esta configuración no es compatible con la extensión de las máquinas virtuales de Azure.
Agent de host
Establece la opción de configuración de python_version
en tu archivo de configuración datadog.yaml
:
Reinicia el Agent.
Si lo prefieres, puedes especificar el tiempo de ejecución de Python que deseas utilizar configurando la variable de entorno de DD_PYTHON_VERSION
como 2
o 3
. Las variables de entorno tienen prioridad sobre las opciones de configuración en datadog.yaml
. Por ejemplo, al establecer la variable de entorno de DD_PYTHON_VERSION
, se ignora la opción de python_version
que se haya configurado en datadog.yaml
.
Se trata de una opción de configuración aplicable a todo el Agent. Todos los checks de Python lanzados por un Agent utilizan el mismo tiempo de ejecución de Python.
Container Agent
Datadog proporciona imágenes del contenedor del Agent en Python 2 y Python 3.
- Las etiquetas de imagen que empiezan por
6.
(p. ej. 6.34.0
o 6.34.0-jmx
) contienen el tiempo de ejecución de Python 2. - Las etiquetas de imagen que empiezan por
7.
(p. ej. 7.34.0
o 7.34.0-jmx
) contienen el tiempo de ejecución de Python 3.
Para pasar de Python 2 a Python 3, actualiza la etiqueta de imagen utilizada para desplegar el Agent.
De forma predeterminada, el Helm chart de Datadog utiliza la imagen del Agent 7 que integra el tiempo de ejecución de Python 3.
Si quieres mantener actualizado el Datadog Agent, edita tu values.yaml
para eliminar cualquier información que aparezca en las secciones agent.image
y clusterChecksRunner.image
.
Si quieres utilizar un registro de contenedor concreto, configúralo con agent.image.repository
y clusterChecksRunner.image.repository
. Comprueba que las etiquetas agents.image.tag
y clusterChecksRunner.image.tag
no estén definidas.
El registro predeterminado es gcr.io/datadoghq/agent
.
agent:
image:
repository: public.ecr.aws/datadog/agent
clusterChecksRunner:
image:
repository: public.ecr.aws/datadog/agent
Si deseas configurar el Agent con una versión concreta, configura agents.image.tag
y clusterChecksRunner.image.tag
. Todas las etiquetas de imagen que comienzan por 7.*
integran el tiempo de ejecución de Python 3.
agent:
image:
tag: 7.34.0
clusterChecksRunner:
image:
tag: 7.34.0
Puedes utilizar ambas opciones al mismo tiempo.
agent:
image:
repository: public.ecr.aws/datadog/agent
tag: 7.34.0
clusterChecksRunner:
image:
repository: public.ecr.aws/datadog/agent
tag: 7.34.0
De forma predeterminada, el Datadog Operator utiliza la imagen del agent:7.*.*
que integra el tiempo de ejecución de Python 3.
Si no se especifica la información de la imagen en el recurso DatadogAgent
, el Operator despliega una imagen del Datadog Agent de Python 3.
Si ya has anclado la versión de la imagen:
apiVersion: datadoghq.com/v2alpha1
metadata:
name: datadog
spec:
override:
clusterChecksRunner:
image:
tag: 6.33.0
nodeAgent:
image:
tag: 6.33.0
o utilizas image.name
:
apiVersion: datadoghq.com/v2alpha1
metadata:
name: datadog
spec:
global:
credentials:
apiKey: <DATADOG_API_KEY>
appKey: <DATADOG_APP_KEY>
override:
# ...
nodeAgent:
image:
name: gcr.io/datadoghq/agent:6.33.0
# ...
clusterChecksRunner:
image:
name: gcr.io/datadoghq/agent:6.33.0
El registro predeterminado es gcr.io/datadoghq/agent
. Si necesitas cambiarlo, utiliza spec.global.registry
.
A continuación, ancla la etiqueta de imagen del Agent 7 en spec.override.nodeAgent.image.tag
.
Si has habilitado la implementación de los ejecutores de checks del clúster, ancla también la etiqueta de imagen del Agent 7 en spec.override.clusterChecksRunner.image.tag
.
apiVersion: datadoghq.com/v2alpha1
metadata:
name: datadog
spec:
# ...
global:
registry: public.ecr.aws/datadog
override:
# ...
nodeAgent:
image:
tag: 7.33.0
# ...
clusterChecksRunner:
image:
tag: 7.33.0
Nota: Según Datadog, no es recomendable configurar la etiqueta *.image.tag
. Es preferible dejar que el Datadog Operator mantenga actualizada la etiqueta de imagen del Agent con una imagen del Agent 7.
Si necesitas utilizar una imagen JMX del Agent, puedes configurarla sin especificar la *.image.tag
del Agent:
apiVersion: datadoghq.com/v2alpha1
metadata:
name: datadog
spec:
# ...
global:
registry: public.ecr.aws/datadog
override:
# ...
nodeAgent:
image:
jmxEnabled: true
clusterChecksRunner:
image:
jmxEnabled: true
En el manifiesto de tu DaemoSet, actualiza la etiqueta de imagen de cada definición de contenedor:
- Cada valor de
spec.template.spec.containers[*].image
- Cada valor de
spec.template.spec.initContainers[*].image
Por ejemplo, si el valor de la imagen anterior era gcr.io/datadoghq/agent:6.33.0
, actualízalo a gcr.io/datadoghq/agent:7.33.0
.
Antes:
apiVersion: apps/v1
spec:
template:
spec:
containers:
- name: agent
image: gcr.io/datadoghq/agent:6.33.0
# ...
Después:
apiVersion: apps/v1
spec:
template:
spec:
containers:
- name: agent
image: gcr.io/datadoghq/agent:7.33.0
# ...
Herramientas de implementación
Utiliza el campo extra_config
para establecer el campo de python_version
en 3
:
default_attributes(
'datadog' => {
'extra_config' => {
'python_version' => '3'
}
}
)
Utiliza el campo agent_extra_config
para establecer el campo de python_version
en 3
:
class { "datadog_agent":
agent_extra_options => {
python_version => 3,
},
}
Establece el python_version
en 3
en tu datadog_config
:
datadog_config:
python_version: 3
Leer más
Más enlaces, artículos y documentación útiles: