[{"data":1,"prerenderedAt":1043},["ShallowReactive",2],{"/blog/introducing-the-gitlab-kubernetes-agent":3,"navigation-en-us":259,"banner-en-us":687,"footer-en-us":697,"blog-post-authors-en-us-Viktor Nagy":938,"blog-related-posts-en-us-introducing-the-gitlab-kubernetes-agent":953,"blog-promotions-en-us":979,"next-steps-en-us":1033},{"id":4,"title":5,"authors":6,"body":8,"category":237,"date":238,"description":239,"extension":240,"externalUrl":241,"faq":241,"featured":242,"heroImage":243,"meta":244,"navigation":223,"path":245,"seo":246,"slug":250,"stem":251,"tags":252,"template":257,"updatedDate":241,"__hash__":258},"blogPosts/en-us/blog/introducing-the-gitlab-kubernetes-agent.md","Understand the new GitLab Agent for Kubernetes",[7],"Viktor Nagy",{"type":9,"value":10,"toc":224},"minimark",[11,15,20,23,36,46,50,53,56,59,62,66,74,86,91,94,105,109,120,144,148,157,160,176,180,183,197,206,209],[12,13,14],"p",{},"We are happy to share the first iteration of the GitLab Agent for Kubernetes with our users and community. The Agent is the foundation for the next generation of the integration between GitLab and Kubernetes.",[16,17,19],"h2",{"id":18},"a-bit-of-history-of-the-gitlab-kubernetes-integrations","A bit of history of the GitLab Kubernetes Integrations",[12,21,22],{},"GitLab's current Kubernetes integrations were introduced more than three years ago. Their primary goal was to allow a simple setup of clusters and provide a smooth deployment experience to our users. These integrations served us well in the past years but at the same time its weaknesses were limiting for some important and crucial use cases. The biggest weaknesses we see with the current integration are:",[24,25,26,30,33],"ul",{},[27,28,29],"li",{},"the requirement to open up the cluster to the internet, especially to GitLab",[27,31,32],{},"the need for cluster admin rights to get the benefit of GitLab Managed Clusters",[27,34,35],{},"exclusive support for push-based deployments that might not suit some highly regulated industries",[12,37,38,39,45],{},"A few months ago, the Configure Team at GitLab started going in a new direction to come up with an integration that could address these weaknesses and provide a cloud native tie-in between GitLab and Kubernetes. This new direction is built on the GitLab Agent for Kubernetes, which we released in ",[40,41,44],"a",{"href":42,"rel":43},"https://docs.gitlab.com/releases/",[],"GitLab 13.4",".",[16,47,49],{"id":48},"design-goals","Design goals",[12,51,52],{},"When we sat down to solve for the above weaknesses, we came up with a few principles that we are seeking to follow.",[12,54,55],{},"We want to be good cloud native citizens, and work together with the community, instead of reinventing the wheel.",[12,57,58],{},"We primarily want to serve expert Kubernetes platform engineers. While the current GitLab Managed Clusters and cluster creation from within GitLab might serve many use cases, it's primarily aimed at simple cluster setup and is not flexible enough to be the basis for production clusters. We want to change this approach, and are focusing on the needs of expert Kubernetes engineers first. We think that coming up with sane defaults will provide the necessary simplicity for new Kubernetes users as well.",[12,60,61],{},"We want to offer a secure solution that allows cluster operators to restrict GitLab's rights in the cluster and does not require opening up the cluster to the Internet.",[16,63,65],{"id":64},"the-agent","The Agent",[12,67,68,69,73],{},"Following the above goals, we've started to develop the GitLab Agent for Kubernetes. The Agent provides a permanent communication channel between GitLab and the cluster. To follow industry best practices for ",[40,70,72],{"href":71},"/topics/gitops/","GitOps"," it is configured by code, instead of a UI.",[12,75,76,77,85],{},"The current version of the Agent allows for pull-based deployments. Its deployment machinery is built on the ",[40,78,81],{"href":79,"rel":80},"https://github.com/argoproj/gitops-engine",[],[82,83,84],"code",{},"gitops-engine",", a project initiated by ArgoCD and Flux where GitLab engineers are actively contributing as well.",[87,88,90],"h3",{"id":89},"setting-up-the-gitlab-agent","Setting up the GitLab Agent",[12,92,93],{},"The Agent needs to be set up first. This requires a few actions from the user:",[24,95,96,99,102],{},[27,97,98],{},"create an Agent token for authentication with GitLab, and store it in your cluster as a secret",[27,100,101],{},"commit the necessary Agent configurations in one of your repositories",[27,103,104],{},"install the Agent to your cluster",[87,106,108],{"id":107},"deployments-with-an-agent","Deployments with an Agent",[12,110,111,112,116,117,119],{},"As mentioned above, the Agent needs a configuration directory inside one of your repositories. This configuration describes the projects that the Agent syncs into your clusters. We call the synced projects the ",[113,114,115],"strong",{},"manifest project",". The manifest project should contain Kubernetes manifest files. The ",[113,118,115],{}," project might be either inside or separated from your application code.",[12,121,122,123,125,126,129,130,134,135,137,138,140,141,143],{},"We've set up a simple example that shows a ",[113,124,115],{}," and an ",[113,127,128],{},"application project",". In this example ",[40,131,133],{"href":132},"/topics/ci-cd/","GitLab CI/CD"," in the ",[113,136,128],{}," is used to create a container image and update the ",[113,139,115],{},". Then the Agent picks up the changes from the ",[113,142,115],{},", and deploys the Kubernetes manifests stored there.",[87,145,147],{"id":146},"limitations","Limitations",[12,149,150,151,156],{},"As this is the initial release of the Agent, it has many known limitations. We don't support all the amazing features the previous GitLab Kubernetes integration does such as ",[40,152,155],{"href":153,"rel":154},"https://docs.gitlab.com/topics/autodevops/",[],"Auto DevOps",", deploy boards, GitLab Managed Apps, etc. To start in GitLab 13.4 we limited our focus to supporting pull-based deployment for Helm-based GitLab installations.",[12,158,159],{},"Following the current release, we will be focusing on:",[24,161,162,169],{},[27,163,164],{},[40,165,168],{"href":166,"rel":167},"https://gitlab.com/groups/gitlab-org/-/epics/3834",[],"shipping the GitLab Agent for Kubernetes as part of the Official Linux Package",[27,170,171],{},[40,172,175],{"href":173,"rel":174},"https://gitlab.com/gitlab-org/gitlab/-/issues/220912",[],"supporting the deployment of private repositories",[16,177,179],{"id":178},"further-plans-for-gitlab-kubernetes-integrations","Further plans for GitLab Kubernetes Integrations",[12,181,182],{},"The Agent opens up many new opportunities for GitLab's Kubernetes integrations. Having an active component allows us to provide all the GitLab functionalities in locked down clusters as well. We're currently looking into the following areas to support with the agent:",[24,184,185,188,191,194],{},[27,186,187],{},"integrate cluster-side dynamic container scanning with GitLab",[27,189,190],{},"use GitLab as an authentication and authorization provider for Kubernetes clusters",[27,192,193],{},"offer linters and checks for Kubernetes best practices on deployed resources",[27,195,196],{},"proxy cluster services easily through GitLab",[12,198,199,200,205],{},"You can see all our plans in the ",[40,201,204],{"href":202,"rel":203},"https://gitlab.com/groups/gitlab-org/-/epics/3329",[],"Agent epic"," where we invite you to give us feedback and about this direction.",[12,207,208],{},"You can view a demo of how to install and use the GitLab Agent below:",[210,211,214,215],"figure",{"className":212},[213],"video_container","\n  ",[216,217],"iframe",{"src":218,"width":219,"height":220,"frameBorder":221,"allow":222,"allowFullScreen":223},"https://player.vimeo.com/video/505413162",640,480,"0","autoplay; fullscreen; picture-in-picture",true,{"title":225,"searchDepth":226,"depth":226,"links":227},"",2,[228,229,230,236],{"id":18,"depth":226,"text":19},{"id":48,"depth":226,"text":49},{"id":64,"depth":226,"text":65,"children":231},[232,234,235],{"id":89,"depth":233,"text":90},3,{"id":107,"depth":233,"text":108},{"id":146,"depth":233,"text":147},{"id":178,"depth":226,"text":179},"engineering","2020-09-22","Just released in 13.4, our brand new Kubernetes Agent provides a secure and K8s–friendly approach to integrating GitLab with your clusters.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666262/Blog/Hero%20Images/default-blog-image.png",{},"/en-us/blog/introducing-the-gitlab-kubernetes-agent",{"title":5,"description":239,"ogTitle":5,"ogDescription":239,"noIndex":242,"ogImage":243,"ogUrl":247,"ogSiteName":248,"ogType":249,"canonicalUrls":247},"https://about.gitlab.com/blog/introducing-the-gitlab-kubernetes-agent","https://about.gitlab.com","article","introducing-the-gitlab-kubernetes-agent","en-us/blog/introducing-the-gitlab-kubernetes-agent",[253,254,255,256],"kubernetes","releases","cloud native","workflow","BlogPost","ikUqDXw5pzhyPXHyL0lFYVFNaJdeUT4o2mvl6Yta6Q8",{"logo":260,"freeTrial":265,"sales":270,"login":275,"items":280,"search":607,"minimal":638,"duo":657,"switchNav":666,"pricingDeployment":677},{"config":261},{"href":262,"dataGaName":263,"dataGaLocation":264},"/","gitlab logo","header",{"text":266,"config":267},"Get free trial",{"href":268,"dataGaName":269,"dataGaLocation":264},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":271,"config":272},"Request a demo",{"href":273,"dataGaName":274,"dataGaLocation":264},"/sales/?contact-topic=request-demo","sales",{"text":276,"config":277},"Sign in",{"href":278,"dataGaName":279,"dataGaLocation":264},"https://gitlab.com/users/sign_in/","sign in",[281,310,410,415,529,585],{"text":282,"config":283,"menu":285},"Platform",{"dataNavLevelOne":284},"platform",{"type":286,"columns":287},"cards",[288,294,302],{"title":282,"description":289,"link":290},"The intelligent orchestration platform for DevSecOps",{"text":291,"config":292},"Explore our Platform",{"href":293,"dataGaName":284,"dataGaLocation":264},"/platform/",{"title":295,"description":296,"link":297},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":298,"config":299},"Meet GitLab Duo",{"href":300,"dataGaName":301,"dataGaLocation":264},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":303,"description":304,"link":305},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":306,"config":307},"Learn more",{"href":308,"dataGaName":309,"dataGaLocation":264},"/why-gitlab/","why gitlab",{"text":311,"left":223,"config":312,"menu":314},"Product",{"dataNavLevelOne":313},"solutions",{"type":315,"link":316,"columns":320,"feature":389},"lists",{"text":317,"config":318},"View all Solutions",{"href":319,"dataGaName":313,"dataGaLocation":264},"/solutions/",[321,345,368],{"title":322,"description":323,"link":324,"items":329},"Automation","CI/CD and automation to accelerate deployment",{"config":325},{"icon":326,"href":327,"dataGaName":328,"dataGaLocation":264},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[330,334,337,341],{"text":331,"config":332},"CI/CD",{"href":333,"dataGaLocation":264,"dataGaName":331},"/solutions/continuous-integration/",{"text":295,"config":335},{"href":300,"dataGaLocation":264,"dataGaName":336},"gitlab duo agent platform - product menu",{"text":338,"config":339},"Source Code Management",{"href":340,"dataGaLocation":264,"dataGaName":338},"/solutions/source-code-management/",{"text":342,"config":343},"Automated Software Delivery",{"href":327,"dataGaLocation":264,"dataGaName":344},"Automated software delivery",{"title":346,"description":347,"link":348,"items":353},"Security","Deliver code faster without compromising security",{"config":349},{"href":350,"dataGaName":351,"dataGaLocation":264,"icon":352},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[354,358,363],{"text":355,"config":356},"Application Security Testing",{"href":350,"dataGaName":357,"dataGaLocation":264},"Application security testing",{"text":359,"config":360},"Software Supply Chain Security",{"href":361,"dataGaLocation":264,"dataGaName":362},"/solutions/supply-chain/","Software supply chain security",{"text":364,"config":365},"Software Compliance",{"href":366,"dataGaName":367,"dataGaLocation":264},"/solutions/software-compliance/","software compliance",{"title":369,"link":370,"items":375},"Measurement",{"config":371},{"icon":372,"href":373,"dataGaName":374,"dataGaLocation":264},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[376,380,384],{"text":377,"config":378},"Visibility & Measurement",{"href":373,"dataGaLocation":264,"dataGaName":379},"Visibility and Measurement",{"text":381,"config":382},"Value Stream Management",{"href":383,"dataGaLocation":264,"dataGaName":381},"/solutions/value-stream-management/",{"text":385,"config":386},"Analytics & Insights",{"href":387,"dataGaLocation":264,"dataGaName":388},"/solutions/analytics-and-insights/","Analytics and insights",{"title":390,"type":315,"items":391},"GitLab for",[392,398,404],{"text":393,"config":394},"Enterprise",{"icon":395,"href":396,"dataGaLocation":264,"dataGaName":397},"Building","/enterprise/","enterprise",{"text":399,"config":400},"Small Business",{"icon":401,"href":402,"dataGaLocation":264,"dataGaName":403},"Work","/small-business/","small business",{"text":405,"config":406},"Public Sector",{"icon":407,"href":408,"dataGaLocation":264,"dataGaName":409},"Organization","/solutions/public-sector/","public sector",{"text":411,"config":412},"Pricing",{"href":413,"dataGaName":414,"dataGaLocation":264,"dataNavLevelOne":414},"/pricing/","pricing",{"text":416,"config":417,"menu":419},"Resources",{"dataNavLevelOne":418},"resources",{"type":315,"link":420,"columns":424,"feature":518},{"text":421,"config":422},"View all resources",{"href":423,"dataGaName":418,"dataGaLocation":264},"/resources/",[425,458,485],{"title":426,"items":427},"Getting started",[428,433,438,443,448,453],{"text":429,"config":430},"Install",{"href":431,"dataGaName":432,"dataGaLocation":264},"/install/","install",{"text":434,"config":435},"Quick start guides",{"href":436,"dataGaName":437,"dataGaLocation":264},"/get-started/","quick setup checklists",{"text":439,"config":440},"Learn",{"href":441,"dataGaLocation":264,"dataGaName":442},"https://university.gitlab.com/","learn",{"text":444,"config":445},"Product documentation",{"href":446,"dataGaName":447,"dataGaLocation":264},"https://docs.gitlab.com/","product documentation",{"text":449,"config":450},"Best practice videos",{"href":451,"dataGaName":452,"dataGaLocation":264},"/getting-started-videos/","best practice videos",{"text":454,"config":455},"Integrations",{"href":456,"dataGaName":457,"dataGaLocation":264},"/integrations/","integrations",{"title":459,"items":460},"Discover",[461,466,471,476,480],{"text":462,"config":463},"Customer success stories",{"href":464,"dataGaName":465,"dataGaLocation":264},"/customers/","customer success stories",{"text":467,"config":468},"Blog",{"href":469,"dataGaName":470,"dataGaLocation":264},"/blog/","blog",{"text":472,"config":473},"Demo Hub",{"href":474,"dataGaName":475,"dataGaLocation":264},"/demo-hub/","demo hub",{"text":477,"config":478},"The Source",{"href":479,"dataGaName":470,"dataGaLocation":264},"/the-source/",{"text":481,"config":482},"Remote",{"href":483,"dataGaName":484,"dataGaLocation":264},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":486,"items":487},"Connect",[488,493,498,503,508,513],{"text":489,"config":490},"GitLab Services",{"href":491,"dataGaName":492,"dataGaLocation":264},"/services/","services",{"text":494,"config":495},"Contribute",{"href":496,"dataGaName":497,"dataGaLocation":264},"https://contributors.gitlab.com","contribute",{"text":499,"config":500},"Community",{"href":501,"dataGaName":502,"dataGaLocation":264},"/community/","community",{"text":504,"config":505},"Forum",{"href":506,"dataGaName":507,"dataGaLocation":264},"https://forum.gitlab.com/","forum",{"text":509,"config":510},"Events",{"href":511,"dataGaName":512,"dataGaLocation":264},"/events/","events",{"text":514,"config":515},"Partners",{"href":516,"dataGaName":517,"dataGaLocation":264},"/partners/","partners",{"config":519,"title":522,"text":523,"link":524},{"background":520,"textColor":521},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":525,"config":526},"Read the latest",{"href":527,"dataGaName":528,"dataGaLocation":264},"/whats-new/","whats new",{"text":530,"config":531,"menu":533},"Company",{"dataNavLevelOne":532},"company",{"type":315,"columns":534},[535],{"items":536},[537,542,548,550,555,560,565,570,575,580],{"text":538,"config":539},"About",{"href":540,"dataGaName":541,"dataGaLocation":264},"/company/","about",{"text":543,"config":544,"footerGa":547},"Jobs",{"href":545,"dataGaName":546,"dataGaLocation":264},"/jobs/","jobs",{"dataGaName":546},{"text":509,"config":549},{"href":511,"dataGaName":512,"dataGaLocation":264},{"text":551,"config":552},"Leadership",{"href":553,"dataGaName":554,"dataGaLocation":264},"/company/team/e-group/","leadership",{"text":556,"config":557},"Handbook",{"href":558,"dataGaName":559,"dataGaLocation":264},"https://handbook.gitlab.com/","handbook",{"text":561,"config":562},"Investor relations",{"href":563,"dataGaName":564,"dataGaLocation":264},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":566,"config":567},"Trust Center",{"href":568,"dataGaName":569,"dataGaLocation":264},"/security/","trust center",{"text":571,"config":572},"AI Transparency Center",{"href":573,"dataGaName":574,"dataGaLocation":264},"/ai-transparency-center/","ai transparency center",{"text":576,"config":577},"Newsletter",{"href":578,"dataGaName":579,"dataGaLocation":264},"/company/contact/#contact-forms","newsletter",{"text":581,"config":582},"Press",{"href":583,"dataGaName":584,"dataGaLocation":264},"/press/","press",{"text":586,"config":587,"menu":588},"Contact us",{"dataNavLevelOne":532},{"type":315,"columns":589},[590],{"items":591},[592,597,602],{"text":593,"config":594},"Talk to sales",{"href":595,"dataGaName":596,"dataGaLocation":264},"/sales/","talk to sales",{"text":598,"config":599},"Support portal",{"href":600,"dataGaName":601,"dataGaLocation":264},"https://support.gitlab.com/hc/en-us","support portal",{"text":603,"config":604},"Customer portal",{"href":605,"dataGaName":606,"dataGaLocation":264},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":608,"login":609,"suggestions":616},"Close",{"text":610,"link":611},"To search repositories and projects, login to",{"text":612,"config":613},"gitlab.com",{"href":278,"dataGaName":614,"dataGaLocation":615},"search login","search",{"text":617,"default":618},"Suggestions",[619,621,625,627,631,635],{"text":295,"config":620},{"href":300,"dataGaName":295,"dataGaLocation":615},{"text":622,"config":623},"Code Suggestions (AI)",{"href":624,"dataGaName":622,"dataGaLocation":615},"/solutions/code-suggestions/",{"text":331,"config":626},{"href":333,"dataGaName":331,"dataGaLocation":615},{"text":628,"config":629},"GitLab on AWS",{"href":630,"dataGaName":628,"dataGaLocation":615},"/partners/technology-partners/aws/",{"text":632,"config":633},"GitLab on Google Cloud",{"href":634,"dataGaName":632,"dataGaLocation":615},"/partners/technology-partners/google-cloud-platform/",{"text":636,"config":637},"Why GitLab?",{"href":308,"dataGaName":636,"dataGaLocation":615},{"freeTrial":639,"mobileIcon":644,"desktopIcon":649,"secondaryButton":652},{"text":640,"config":641},"Start free trial",{"href":642,"dataGaName":269,"dataGaLocation":643},"https://gitlab.com/-/trials/new/","nav",{"altText":645,"config":646},"Gitlab Icon",{"src":647,"dataGaName":648,"dataGaLocation":643},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":645,"config":650},{"src":651,"dataGaName":648,"dataGaLocation":643},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":653,"config":654},"Get Started",{"href":655,"dataGaName":656,"dataGaLocation":643},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":658,"mobileIcon":662,"desktopIcon":664},{"text":659,"config":660},"Learn more about GitLab Duo",{"href":300,"dataGaName":661,"dataGaLocation":643},"gitlab duo",{"altText":645,"config":663},{"src":647,"dataGaName":648,"dataGaLocation":643},{"altText":645,"config":665},{"src":651,"dataGaName":648,"dataGaLocation":643},{"button":667,"mobileIcon":672,"desktopIcon":674},{"text":668,"config":669},"/switch",{"href":670,"dataGaName":671,"dataGaLocation":643},"#contact","switch",{"altText":645,"config":673},{"src":647,"dataGaName":648,"dataGaLocation":643},{"altText":645,"config":675},{"src":676,"dataGaName":648,"dataGaLocation":643},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":678,"mobileIcon":683,"desktopIcon":685},{"text":679,"config":680},"Back to pricing",{"href":413,"dataGaName":681,"dataGaLocation":643,"icon":682},"back to pricing","GoBack",{"altText":645,"config":684},{"src":647,"dataGaName":648,"dataGaLocation":643},{"altText":645,"config":686},{"src":651,"dataGaName":648,"dataGaLocation":643},{"title":688,"titleMobile":689,"button":690,"config":695},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":306,"config":691},{"href":692,"dataGaName":693,"dataGaLocation":694},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":696,"disabled":242},"release",{"data":698},{"text":699,"source":700,"edit":706,"contribute":711,"config":716,"items":721,"minimal":927},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":701,"config":702},"View page source",{"href":703,"dataGaName":704,"dataGaLocation":705},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":707,"config":708},"Edit this page",{"href":709,"dataGaName":710,"dataGaLocation":705},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":712,"config":713},"Please contribute",{"href":714,"dataGaName":715,"dataGaLocation":705},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":717,"facebook":718,"youtube":719,"linkedin":720},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[722,769,819,863,895],{"title":411,"links":723,"subMenu":738},[724,728,733],{"text":725,"config":726},"View plans",{"href":413,"dataGaName":727,"dataGaLocation":705},"view plans",{"text":729,"config":730},"Why Premium?",{"href":731,"dataGaName":732,"dataGaLocation":705},"/pricing/premium/","why premium",{"text":734,"config":735},"Why Ultimate?",{"href":736,"dataGaName":737,"dataGaLocation":705},"/pricing/ultimate/","why ultimate",[739],{"title":740,"links":741},"Contact Us",[742,745,747,749,754,759,764],{"text":743,"config":744},"Contact sales",{"href":595,"dataGaName":274,"dataGaLocation":705},{"text":598,"config":746},{"href":600,"dataGaName":601,"dataGaLocation":705},{"text":603,"config":748},{"href":605,"dataGaName":606,"dataGaLocation":705},{"text":750,"config":751},"Status",{"href":752,"dataGaName":753,"dataGaLocation":705},"https://status.gitlab.com/","status",{"text":755,"config":756},"Terms of use",{"href":757,"dataGaName":758,"dataGaLocation":705},"/terms/","terms of use",{"text":760,"config":761},"Privacy statement",{"href":762,"dataGaName":763,"dataGaLocation":705},"/privacy/","privacy statement",{"text":765,"config":766},"Cookie preferences",{"dataGaName":767,"dataGaLocation":705,"id":768,"isOneTrustButton":223},"cookie preferences","ot-sdk-btn",{"title":311,"links":770,"subMenu":779},[771,775],{"text":772,"config":773},"DevSecOps platform",{"href":293,"dataGaName":774,"dataGaLocation":705},"devsecops platform",{"text":776,"config":777},"AI-Assisted Development",{"href":300,"dataGaName":778,"dataGaLocation":705},"ai-assisted development",[780],{"title":781,"links":782},"Topics",[783,787,790,795,800,805,809,814],{"text":784,"config":785},"CICD",{"href":132,"dataGaName":786,"dataGaLocation":705},"cicd",{"text":72,"config":788},{"href":71,"dataGaName":789,"dataGaLocation":705},"gitops",{"text":791,"config":792},"DevOps",{"href":793,"dataGaName":794,"dataGaLocation":705},"/topics/devops/","devops",{"text":796,"config":797},"Version Control",{"href":798,"dataGaName":799,"dataGaLocation":705},"/topics/version-control/","version control",{"text":801,"config":802},"DevSecOps",{"href":803,"dataGaName":804,"dataGaLocation":705},"/topics/devsecops/","devsecops",{"text":806,"config":807},"Cloud Native",{"href":808,"dataGaName":255,"dataGaLocation":705},"/topics/cloud-native/",{"text":810,"config":811},"AI for Coding",{"href":812,"dataGaName":813,"dataGaLocation":705},"/topics/devops/ai-for-coding/","ai for coding",{"text":815,"config":816},"Agentic AI",{"href":817,"dataGaName":818,"dataGaLocation":705},"/topics/agentic-ai/","agentic ai",{"title":820,"links":821},"Solutions",[822,824,826,831,835,838,842,845,847,850,853,858],{"text":355,"config":823},{"href":350,"dataGaName":355,"dataGaLocation":705},{"text":344,"config":825},{"href":327,"dataGaName":328,"dataGaLocation":705},{"text":827,"config":828},"Agile development",{"href":829,"dataGaName":830,"dataGaLocation":705},"/solutions/agile-delivery/","agile delivery",{"text":832,"config":833},"SCM",{"href":340,"dataGaName":834,"dataGaLocation":705},"source code management",{"text":784,"config":836},{"href":333,"dataGaName":837,"dataGaLocation":705},"continuous integration & delivery",{"text":839,"config":840},"Value stream management",{"href":383,"dataGaName":841,"dataGaLocation":705},"value stream management",{"text":72,"config":843},{"href":844,"dataGaName":789,"dataGaLocation":705},"/solutions/gitops/",{"text":393,"config":846},{"href":396,"dataGaName":397,"dataGaLocation":705},{"text":848,"config":849},"Small business",{"href":402,"dataGaName":403,"dataGaLocation":705},{"text":851,"config":852},"Public sector",{"href":408,"dataGaName":409,"dataGaLocation":705},{"text":854,"config":855},"Education",{"href":856,"dataGaName":857,"dataGaLocation":705},"/solutions/education/","education",{"text":859,"config":860},"Financial services",{"href":861,"dataGaName":862,"dataGaLocation":705},"/solutions/finance/","financial services",{"title":416,"links":864},[865,867,869,871,874,876,879,881,883,885,887,889,891,893],{"text":429,"config":866},{"href":431,"dataGaName":432,"dataGaLocation":705},{"text":434,"config":868},{"href":436,"dataGaName":437,"dataGaLocation":705},{"text":439,"config":870},{"href":441,"dataGaName":442,"dataGaLocation":705},{"text":444,"config":872},{"href":446,"dataGaName":873,"dataGaLocation":705},"docs",{"text":467,"config":875},{"href":469,"dataGaName":470,"dataGaLocation":705},{"text":877,"config":878},"What's new",{"href":527,"dataGaName":528,"dataGaLocation":705},{"text":462,"config":880},{"href":464,"dataGaName":465,"dataGaLocation":705},{"text":481,"config":882},{"href":483,"dataGaName":484,"dataGaLocation":705},{"text":489,"config":884},{"href":491,"dataGaName":492,"dataGaLocation":705},{"text":494,"config":886},{"href":496,"dataGaName":497,"dataGaLocation":705},{"text":499,"config":888},{"href":501,"dataGaName":502,"dataGaLocation":705},{"text":504,"config":890},{"href":506,"dataGaName":507,"dataGaLocation":705},{"text":509,"config":892},{"href":511,"dataGaName":512,"dataGaLocation":705},{"text":514,"config":894},{"href":516,"dataGaName":517,"dataGaLocation":705},{"title":530,"links":896},[897,899,901,903,905,907,911,916,918,920,922],{"text":538,"config":898},{"href":540,"dataGaName":532,"dataGaLocation":705},{"text":543,"config":900},{"href":545,"dataGaName":546,"dataGaLocation":705},{"text":551,"config":902},{"href":553,"dataGaName":554,"dataGaLocation":705},{"text":556,"config":904},{"href":558,"dataGaName":559,"dataGaLocation":705},{"text":561,"config":906},{"href":563,"dataGaName":564,"dataGaLocation":705},{"text":908,"config":909},"Sustainability",{"href":910,"dataGaName":908,"dataGaLocation":705},"/sustainability/",{"text":912,"config":913},"Diversity, inclusion and belonging (DIB)",{"href":914,"dataGaName":915,"dataGaLocation":705},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":566,"config":917},{"href":568,"dataGaName":569,"dataGaLocation":705},{"text":576,"config":919},{"href":578,"dataGaName":579,"dataGaLocation":705},{"text":581,"config":921},{"href":583,"dataGaName":584,"dataGaLocation":705},{"text":923,"config":924},"Modern Slavery Transparency Statement",{"href":925,"dataGaName":926,"dataGaLocation":705},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":928},[929,932,935],{"text":930,"config":931},"Terms",{"href":757,"dataGaName":758,"dataGaLocation":705},{"text":933,"config":934},"Cookies",{"dataGaName":767,"dataGaLocation":705,"id":768,"isOneTrustButton":223},{"text":936,"config":937},"Privacy",{"href":762,"dataGaName":763,"dataGaLocation":705},[939],{"id":940,"title":7,"body":241,"config":941,"content":943,"description":241,"extension":947,"meta":948,"navigation":223,"path":949,"seo":950,"stem":951,"__hash__":952},"blogAuthors/en-us/blog/authors/viktor-nagy.yml",{"template":942},"BlogAuthor",{"name":7,"config":944},{"headshot":945,"ctfId":946},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662918/Blog/Author%20Headshots/nagy-headshot.jpg","nagyvgitlab","yml",{},"/en-us/blog/authors/viktor-nagy",{},"en-us/blog/authors/viktor-nagy","rM3QZ5iaPa1fk9rDH9Dq-owlsuuFm699I03jWP1dUY4",[954,963,971],{"title":955,"description":956,"heroImage":957,"category":237,"date":958,"authors":959,"slug":962,"externalUrl":241},"Confidential AI for GitLab Self-Hosted","Give developers AI coding agents in GitLab Duo without source code leaving a hardware-encrypted boundary — no GPUs needed.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-08-06",[960,961],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":964,"description":965,"heroImage":966,"category":237,"date":967,"authors":968,"slug":970,"externalUrl":241},"Green DevOps: Why carbon measurement belongs in your CI/CD pipeline","CI/CD pipelines have a hidden carbon cost. Here's why measuring it matters, and how you can get started with Eco CI and Carmen in GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-09",[969],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":972,"description":973,"heroImage":974,"category":237,"date":975,"authors":976,"slug":978,"externalUrl":241},"How to build CI/CD observability at scale","This practical guide to GitLab pipeline analytics helps self-managed users gain operational insights using Prometheus and Grafana.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-28",[977],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":980},[981,995,1007,1019],{"id":982,"categories":983,"header":985,"text":986,"button":987,"image":992},"ai-modernization",[984],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":988,"config":989},"Get your AI maturity score",{"href":990,"dataGaName":991,"dataGaLocation":470},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":993},{"src":994},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":996,"categories":997,"header":999,"text":986,"button":1000,"image":1004},"devops-modernization",[998,804],"product","Are you just managing tools or shipping innovation?",{"text":1001,"config":1002},"Get your DevOps maturity score",{"href":1003,"dataGaName":991,"dataGaLocation":470},"/assessments/devops-modernization-assessment/",{"config":1005},{"src":1006},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1008,"categories":1009,"header":1011,"text":986,"button":1012,"image":1016},"security-modernization",[1010],"security","Are you trading speed for security?",{"text":1013,"config":1014},"Get your security maturity score",{"href":1015,"dataGaName":991,"dataGaLocation":470},"/assessments/security-modernization-assessment/",{"config":1017},{"src":1018},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1020,"paths":1021,"header":1024,"text":1025,"button":1026,"image":1031},"github-azure-migration",[1022,1023],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":1027,"config":1028},"See how GitLab compares to GitHub",{"href":1029,"dataGaName":1030,"dataGaLocation":470},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1032},{"src":1006},{"header":1034,"blurb":1035,"button":1036,"secondaryButton":1041},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1037,"config":1038},"Get your free trial",{"href":1039,"dataGaName":269,"dataGaLocation":1040},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":743,"config":1042},{"href":595,"dataGaName":274,"dataGaLocation":1040},1786803750584]