-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Add datadog APM support #115
base: master
Are you sure you want to change the base?
Conversation
When Arnold clean a running stack labelled with a given deployment_stamp, we also need to remove created BuildConfigs.
APM layer must be enabled or disabled given particular env_types or customers. This can be achieved through the is_apm_enabled configuration. BuildConfigs for apps should use this variable to conditionally activate this feature during the build.
Enabling datadog APM can be summed as: * installing datadog agent * wrap the original command with the agent * add configs (env vars) + secrets
@@ -29,7 +29,12 @@ spec: | |||
source: | |||
dockerfile: |- | |||
FROM {{ richie_image_name }}:{{ richie_image_tag }} | |||
# Add new statements here | |||
USER 0 | |||
{% if is_apm_enabled -%} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
add a comment line because this Dockerfile extract will receive several separate augmentations?
# include this feature (default: "false") | ||
is_apm_enabled: false | ||
# APM agent port defaults to Datadog agent service port | ||
apm_agent_port: 8126 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be nice if we could omit the port when it is disabled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the default (main) value. When it's disabled, you don't need to declare this variable at all.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my other message, you can add a default value on the BC template
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello, I've juste somme comments.
@@ -29,7 +29,12 @@ spec: | |||
source: | |||
dockerfile: |- | |||
FROM {{ richie_image_name }}:{{ richie_image_tag }} | |||
# Add new statements here | |||
USER 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why creating a BC who do nothing if we have no apm ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To take advantage of the cluster's docker repository and speed up image pulling. We only create a IS/BC for our public images that will:
- will be updated frequently
- requires further customization given a
customer
and anenv_type
# Add new statements here | ||
USER 0 | ||
{% if is_apm_enabled -%} | ||
RUN pip install ddtrace |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code is only for datadog so why the variable is named is_apm_enabled ?
If we use an other APM we need a new name.
I propose is_apm_datadog_enabled, if we add newrelic whe can use is_apm_newrelic_enabled.
Or we can specify the APM name on the variable, so s_apm_enabled can ave the value (false, datadog, newrelic, etc.)
fieldRef: | ||
fieldPath: status.hostIP | ||
- name: DD_AGENT_SERVICE_PORT | ||
value: "{{ apm_agent_port }}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add a default value ?
# include this feature (default: "false") | ||
is_apm_enabled: false | ||
# APM agent port defaults to Datadog agent service port | ||
apm_agent_port: 8126 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my other message, you can add a default value on the BC template
@cchaudier Hence, Arnold does not have to be aware of the APM tool you choose. It's the app developer responsibility to implement such feature with datadog or any other tool/service. |
Purpose
This is a follow up of #101 considering recent changes concerning BuildConfig and ImageStream. We've decided to add APM to our apps by adding new layers to base images (via service BuildConfig).
Proposal
richie
edxapp
Closes #101