- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
v1alpha1
DatadogAgent
reconciliation in the Operator is deprecated since v1.2.0+ and will be removed in v1.7.0. After it's removed, you will not be able to configure the Datadog Operator to reconcile the v1alpha1
DatadogAgent
CRD. However, you will still be able to apply a v1alpha1
manifest with the conversion webhook enabled using datadogCRDs.migration.datadogAgents.conversionWebhook.enabled
.DatadogAgent
v1alpha1
and the conversion webhook will be removed in v1.8.0. After it's removed, you will not be able to migrate unless you use earlier version of the Operator.Datadog Operator v0.X uses v1alpha1
of the DatadogAgent custom resource. Datadog Operator v1.X reconciles v2alpha1
.
This guide describes how to migrate to the v2alpha1/DatadogAgent
custom resource from v1alpha1/DatadogAgent
.
If you are using v1alpha1
with a 0.X version of the Datadog Operator and would like to upgrade, you need to use the conversion webhook feature.
Start by ensuring that you have the minimum required version of the chart and its dependencies:
NAME CHART VERSION APP VERSION DESCRIPTION
datadog/datadog-crds 1.0.0 1 Datadog Kubernetes CRDs chart
For the Datadog Operator chart:
NAME CHART VERSION APP VERSION DESCRIPTION
datadog/datadog-operator 1.0.0 1.0.0 Datadog Operator
If you do not already have the cert manager, install it with Helm.
Add the chart:
helm repo add jetstack https://charts.jetstack.io
Then, install it:
helm install \
cert-manager jetstack/cert-manager \
--version v1.11.0 \
--set installCRDs=true
Run the following command to redeploy the Datadog Operator and configure Kubernetes to store version v2alpha1
of the DatadogAgent:
helm upgrade \
datadog-operator datadog/datadog-operator \
--set image.tag=1.0.0 \
--set datadogCRDs.migration.datadogAgents.version=v2alpha1 \
--set datadogCRDs.migration.datadogAgents.useCertManager=true \
--set datadogCRDs.migration.datadogAgents.conversionWebhook.enabled=true
With this, the conversion webhook server (run by the Datadog Operator) converts existing DatadogAgent objects.
If you have v1alpha1
versions and migrate, it is recommended that you save the converted version and start solely deploying the converted version. Once you deploy only the v2alpha1
DatadogAgent, you can disable the conversion webhook.
Starting at the version 1.0.0 of the datadog-operator
chart, the field image.tag
has a default values of 1.0.0
, and datadogCRDs.migration.datadogAgents.version
is v2alpha1
.
These are set in the command here to illustrate the migration of going from a Datadog Operator version < 1.0.0 with a stored version of v1alpha1
to the GA version of 1.0.0
with a stored version of v2alpha1
.
This creates a self-signed Certificate (using an Issuer) that is used by the Certificate Manager to mutate the DatadogAgent CRD to document the caBundle
that the API Server uses to contact the conversion webhook.
The Datadog Operator is running the reconciler for v2alpha1
object and starts a conversion webhook server, exposed on port 9443. The API Server uses this server to convert v1alpha1
DatadogAgent to v2alpha1
.
The conversion webhook is not meant to run indefinitely. Datadog only recommends it to migrate your objects during a transitional period.
Once converted, you can store the new version of your DatadogAgent, deactivate the conversion, and deploy only v2alpha1
objects.
v2alpha1
version of the DatadogAgent resource.Because v1alpha1
and v2alpha1
are served, you might need to specify which version you want to see:
kubectl get datadogagents.v2alpha1.datadoghq.com datadog-agent
The logs of the Datadog Operator pod should show that the conversion webhook is enabled, the server is running, and the certificates are watched.
kubectl logs datadog-operator-XXX-YYY
[...]
{"level":"INFO","ts":"2023-02-16T16:47:07Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/convert"}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","logger":"controller-runtime.builder","msg":"Conversion webhook enabled","GVK":"datadoghq.com/v2alpha1, Kind=DatadogAgent"}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","logger":"setup","msg":"starting manager"}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","logger":"controller-runtime.webhook.webhooks","msg":"Starting webhook server"}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","logger":"controller-runtime.certwatcher","msg":"Updated current TLS certificate"}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","logger":"controller-runtime.webhook","msg":"Serving webhook server","host":"","port":9443}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","msg":"Starting server","path":"/metrics","kind":"metrics","addr":"0.0.0.0:8383"}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","msg":"Starting server","kind":"health probe","addr":"0.0.0.0:8081"}
{"level":"INFO","ts":"2023-02-16T16:47:07Z","logger":"controller-runtime.certwatcher","msg":"Starting certificate watcher"}
[...]
kubectl describe service datadog-operator-webhook-service
[...]
Name: datadog-operator-webhook-service
Namespace: default
[...]
Selector: app.kubernetes.io/instance=datadog-operator,app.kubernetes.io/name=datadog-operator
[...]
Port: <unset> 443/TCP
TargetPort: 9443/TCP
Endpoints: 10.88.3.28:9443
kubectl describe crd datadogagents.datadoghq.com
[...]
Conversion:
Strategy: Webhook
Webhook:
Client Config:
Ca Bundle: LS0t[...]UtLS0tLQo=
Service:
Name: datadog-operator-webhook-service
Namespace: default
Path: /convert
Port: 443
Conversion Review Versions:
v1
caBundle
.Make sure that the CRD has the correct annotation: cert-manager.io/inject-ca-from: default/datadog-operator-serving-cert
. Also, check the logs of the cert-manager-cainjector
pod.
If you do not see anything standing out, setting the log level to 5 (debug) might help:
kubectl edit deploy cert-manager-cainjector -n cert-manager
[...]
spec:
containers:
- args:
- --v=5
[...]
You should see logs such as:
[...]
I0217 08:11:15.582479 1 controller.go:178] cert-manager/certificate/customresourcedefinition/generic-inject-reconciler "msg"="updated object" "resource_kind"="CustomResourceDefinition" "resource_name"="datadogagents.datadoghq.com" "resource_namespace"="" "resource_version"="v1"
I0217 08:25:24.989209 1 sources.go:98] cert-manager/certificate/customresourcedefinition/generic-inject-reconciler "msg"="Extracting CA from Certificate resource" "certificate"="default/datadog-operator-serving-cert" "resource_kind"="CustomResourceDefinition" "resource_name"="datadogagents.datadoghq.com" "resource_namespace"="" "resource_version"="v1"
[...]
If you migrated to the new version of the Datadog Operator using v2alpha1
but want to roll back to the former version, Datadog recommends:
kubectl scale deploy datadog-operator --replicas=0
v1alpha1
stored and for the Datadog Operator to use the 0.8.X image.helm upgrade \
datadog-operator datadog/datadog-operator \
--set image.tag=0.8.4 \
--set datadogCRDs.migration.datadogAgents.version=v1alpha1 \
--set datadogCRDs.migration.datadogAgents.useCertManager=false \
--set datadogCRDs.migration.datadogAgents.conversionWebhook.enabled=false
v1alpha1
object.Note: The DaemonSet of the Datadog Agents is rolled back in the process.