";let n=document.getElementById("TableOfContents");n&&(n.innerHTML=e)}rerender(){this.rerenderFilterMenu(),this.rerenderPageContent(),this.populateRightNav(),this.runHooks("afterRerender")}rerenderPageContent(){let e={};Object.keys(this.ifFunctionsByRef).forEach(t=>{let s=this.ifFunctionsByRef[t],o=s.value,n=(0,h.reresolveFunctionNode)(s,{variables:this.selectedValsByTraitId});this.ifFunctionsByRef[t]=n,o!==n.value&&(e[t]=n.value)});let t=document.getElementsByClassName("cdoc__toggleable");for(let n=0;n{this.fitCustomizationMenuToScreen()})}addDropdownEventListeners(){let e=document.getElementsByClassName("cdoc-dropdown");for(let t=0;t{let t=e.target;for(;!t.classList.contains("cdoc-dropdown")&&t.parentElement;)t=t.parentElement;let n=t.classList.toggle("cdoc-dropdown__expanded");t.setAttribute("aria-expanded",n.toString())});document.addEventListener("keydown",e=>{if(e.key==="Enter"){let t=e.target;t.classList.contains("cdoc-filter__option")&&t.click()}}),document.addEventListener("click",t=>{for(let n=0;nthis.handleFilterSelectionChange(e));this.addDropdownEventListeners()}locateFilterSelectorEl(){let e=document.getElementById("cdoc-selector");return!!e&&(this.filterSelectorEl=e,!0)}applyFilterSelectionOverrides(){let s=Object.keys(this.selectedValsByTraitId),e=!1,t=this.browserStorage.getTraitVals();Object.keys(t).forEach(n=>{s.includes(n)&&this.selectedValsByTraitId[n]!==t[n]&&(this.selectedValsByTraitId[n]=t[n],e=!0)});let n=(0,j.getTraitValsFromUrl)({url:new URL(window.location.href),traitIds:s});return Object.keys(n).forEach(t=>{this.selectedValsByTraitId[t]!==n[t]&&(this.selectedValsByTraitId[t]=n[t],e=!0)}),e}updateEditButton(){let t=document.getElementsByClassName("toc-edit-btn")[0];if(!t)return;let e=t.getElementsByTagName("a")[0];e&&(e.href=e.href.replace(/\.md\/$/,".mdoc.md/"))}revealPage(){this.runHooks("beforeReveal"),this.filterSelectorEl&&(this.filterSelectorEl.style.position="sticky",this.filterSelectorEl.style.backgroundColor="white",this.filterSelectorEl.style.paddingTop="10px",this.filterSelectorEl.style.visibility="visible",this.filterSelectorEl.style.zIndex="1000");let e=document.getElementById("cdoc-content");e&&(e.style.visibility="visible"),this.runHooks("afterReveal")}rerenderFilterMenu(){if(!this.filterSelectorEl||!this.filtersManifest)throw new Error("Cannot rerender filter selector without filtersManifest and filterSelectorEl");let e=(0,l.resolveFilters)({filtersManifest:this.filtersManifest,valsByTraitId:this.selectedValsByTraitId});Object.keys(e).forEach(t=>{let n=e[t];this.selectedValsByTraitId[t]=n.currentValue});let t=(0,y.buildCustomizationMenuUi)(e);this.filterSelectorEl.innerHTML=t,this.fitCustomizationMenuToScreen(),this.addFilterSelectorEventListeners()}fitCustomizationMenuToScreen(){let e=document.getElementById(g);if(!e)return;let s=e.classList.contains(n),t=document.getElementById(v);if(!t)throw new Error("Dropdown menu not found");let o=document.getElementById(b);if(!o)throw new Error("Menu wrapper not found");let i=e.scrollWidth>o.clientWidth;!s&&i?(e.classList.add(n),t.classList.remove(n)):s&&!i&&(e.classList.remove(n),t.classList.add(n))}get cdocsState(){return{selectedValsByTraitId:this.selectedValsByTraitId,ifFunctionsByRef:this.ifFunctionsByRef,filtersManifest:this.filtersManifest,browserStorage:this.browserStorage,filterSelectorEl:this.filterSelectorEl}}};e.ClientFiltersManager=r,t=r,s={value:void 0}}),y=e(e=>{Object.defineProperty(e,"__esModule",{value:!0});var t=j();window.clientFiltersManager=t.ClientFiltersManager.instance}),y()})()Configuration de lʼAPM avec le service Kubernetes
Dans Kubernetes, les traceurs Datadog peuvent envoyer des données à lʼAgent Datadog de trois façons : Unix Domain Socket (UDS), lʼadresse IP du host ou le service Kubernetes. Chaque option garantit que lorsqu’un pod d’application envoie des données à lʼAPM, celles-ci sont acheminées vers un pod de lʼAgent Datadog sur le même nœud. Cette stratégie a pour but d’équilibrer le trafic et de garantir l’exactitude du tagging de vos données. Datadog vous recommande d’utiliser UDS pour envoyer des données.
Toutefois, si les volumes hostPath requis pour UDS (et les ports hostPort requis pour l’utilisation de lʼadresse IP du host) ne sont pas disponibles, vous pouvez utiliser le service Kubernetes comme alternative.
Ce guide décrit comment procéder à une configuration à lʼide dʼun service Kubernetes pour envoyer des données à lʼAgent Datadog.
Dans Kubernetes 1.22, la fonction Internal Traffic Policy permet de définir la configuration internalTrafficPolicy: Local sur un service. Lorsqu’elle est définie, le trafic d’un pod d’application est dirigé vers le pod en aval du service sur le même nœud.
Si vous avez installé lʼAgent Datadog en utilisant le chart Helm de Datadog ou lʼOperator Datadog sur des clusters avec Kubernetes v1.22.0+, un service pour lʼAgent avec internalTrafficPolicy: Local est automatiquement créé pour vous. Vous devez également activer l’option du port APM pour votre Agent avec la configuration ci-dessous.
Vous pouvez configurer votre application pour qu’elle utilise le service Kubernetes en utilisant le contrôleur d’admission de lʼAgent de cluster ou en effectuant une configuration manuelle.
Le contrôleur d’admission de lʼAgent de cluster peut injecter la configuration de la connectivité de lʼAPM dans vos conteneurs. Les options sont hostip, socket ou service. Choisissez le mode service pour que le contrôleur d’admission ajoute la variable dʼenvironnement DD_AGENT_HOST pour le nom DNS du service.
Remarque : dans les environnements en nœuds mixtes (Linux/Windows), lʼAgent de cluster et son contrôleur d’admission sont relatifs au déploiement de Linux. Cela peut entraîner l’injection de mauvaises variables dʼenvironnement pour la connectivité du service dans les pods Windows.
Pour une configuration manuelle, définissez la variable dʼenvironnement DD_AGENT_HOST dans le manifeste de votre pod, avec une valeur de <SERVICE_NAME>.<SERVICE_NAMESPACE>.svc.cluster.local.