Skip to content

Commit

Permalink
Update the annotation step in the OTel k8s flow
Browse files Browse the repository at this point in the history
  • Loading branch information
gbamparop committed Dec 13, 2024
1 parent 8904cb0 commit 659bdf0
Showing 1 changed file with 59 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@ import {
EuiFlexGroup,
EuiFlexItem,
EuiButtonEmpty,
EuiAccordion,
useEuiTheme,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { useKibana } from '@kbn/kibana-react-plugin/public';
import { FormattedMessage } from '@kbn/i18n-react';
import { DASHBOARD_APP_LOCATOR } from '@kbn/deeplinks-analytics';
import { css } from '@emotion/react';
import { EmptyPrompt } from '../shared/empty_prompt';
import { GetStartedPanel } from '../shared/get_started_panel';
import { FeedbackButtons } from '../shared/feedback_buttons';
Expand All @@ -44,6 +47,7 @@ export const OtelKubernetesPanel: React.FC = () => {
} = useKibana<ObservabilityOnboardingContextValue>();
const apmLocator = share.url.locators.get('APM_LOCATOR');
const dashboardLocator = share.url.locators.get(DASHBOARD_APP_LOCATOR);
const theme = useEuiTheme();

if (error) {
return (
Expand Down Expand Up @@ -187,7 +191,7 @@ helm install opentelemetry-kube-stack open-telemetry/opentelemetry-kube-stack \\
'xpack.observability_onboarding.otelKubernetesPanel.theOperatorAutomatesTheLabel',
{
defaultMessage:
'Enable automatic instrumentation for your applications by annotating the pods template (spec.template.metadata.annotations) in your Deployment or relevant workload object (StatefulSet, Job, CronJob, etc.)',
'The Operator automates the injection of auto-instrumentation libraries into the annotated pods for some languages.',
}
)}
</p>
Expand Down Expand Up @@ -225,9 +229,27 @@ helm install opentelemetry-kube-stack open-telemetry/opentelemetry-kube-stack \\
]}
/>
<EuiSpacer />
<EuiCodeBlock paddingSize="m" language="yaml">
{`# To annotate specific deployment Pods modify its manifest
apiVersion: apps/v1
<p
css={css`
font-weight: ${theme.euiTheme.font.weight.bold};
`}
>
{i18n.translate(
'xpack.observability_onboarding.otelKubernetesPanel.step3a.title',
{ defaultMessage: '3(a) - Start with one of these annotations methods:' }
)}
</p>
<EuiSpacer />
<EuiAccordion
id={'otelKubernetesAccordionSingleDeployment'}
paddingSize="s"
buttonContent={i18n.translate(
'xpack.observability_onboarding.otelKubernetesPanel.annotation.deployment',
{ defaultMessage: 'Annotate specific deployment Pods modifying its manifest' }
)}
>
<EuiCodeBlock paddingSize="m" language="yaml" isCopyable={true}>
{`apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
Expand All @@ -242,24 +264,43 @@ spec:
containers:
- image: myapplication-image
name: app
...
# To annotate all resources in a namespace
kubectl annotate namespace my-namespace instrumentation.opentelemetry.io/inject-${idSelected}="${namespace}/elastic-instrumentation"
# Restart your deployment
kubectl rollout restart deployment myapp -n my-namespace
...`}
</EuiCodeBlock>
</EuiAccordion>
<EuiSpacer />
<EuiAccordion
id={'otelKubernetesAccordionAllResources'}
paddingSize="s"
buttonContent={i18n.translate(
'xpack.observability_onboarding.otelKubernetesPanel.annotation.resources',
{ defaultMessage: 'Annotate all resources in a namespace' }
)}
>
<EuiCodeBlock paddingSize="m" language="bash" isCopyable={true}>
{`kubectl annotate namespace my-namespace instrumentation.opentelemetry.io/inject-${idSelected}="${namespace}/elastic-instrumentation"`}
</EuiCodeBlock>
</EuiAccordion>
<EuiSpacer />
<p
css={css`
font-weight: ${theme.euiTheme.font.weight.bold};
`}
>
{i18n.translate(
'xpack.observability_onboarding.otelKubernetesPanel.step3b.title',
{
defaultMessage:
'3(b) - Restart deployment and check that annotations have been applied and auto-intrumentation library is injected:',
}
)}
</p>
<EuiSpacer />
<EuiCodeBlock paddingSize="m" language="bash" isCopyable={true}>
{`kubectl rollout restart deployment myapp -n my-namespace
# Check annotations have been applied correctly and auto-instrumentation library is injected
kubectl describe pod <myapp-pod-name> -n my-namespace`}
</EuiCodeBlock>
<EuiSpacer />
<CopyToClipboardButton
textToCopy={`annotations:
instrumentation.opentelemetry.io/inject-${idSelected}: "${namespace}/elastic-instrumentation"`}
data-test-subj={`observabilityOnboardingOtelKubernetesInstrumentApplicationCopyToClipboard-${idSelected}`}
/>
<EuiSpacer />
<p>
<FormattedMessage
id="xpack.observability_onboarding.otelKubernetesPanel.forOtherLanguagesThatLabel"
Expand Down

0 comments on commit 659bdf0

Please sign in to comment.