[{"data":1,"prerenderedAt":1062},["ShallowReactive",2],{"/blog/deprecating-the-cert-based-kubernetes-integration":3,"navigation-en-us":280,"banner-en-us":706,"footer-en-us":716,"blog-post-authors-en-us-Viktor Nagy":961,"blog-related-posts-en-us-deprecating-the-cert-based-kubernetes-integration":976,"blog-promotions-en-us":998,"next-steps-en-us":1052},{"id":4,"title":5,"authors":6,"body":8,"category":257,"date":258,"description":259,"extension":260,"externalUrl":261,"faq":261,"featured":262,"heroImage":263,"meta":264,"navigation":265,"path":266,"seo":267,"slug":272,"stem":273,"tags":274,"template":278,"updatedDate":261,"__hash__":279},"blogPosts/en-us/blog/deprecating-the-cert-based-kubernetes-integration.md","We are deprecating the certificate-based integration with Kubernetes in GitLab 14.5",[7],"Viktor Nagy",{"type":9,"value":10,"toc":246},"minimark",[11,22,31,34,39,53,56,77,86,90,93,96,105,109,117,121,124,138,141,145,148,165,168,191,195,198,225,229,232],[12,13,14,15,21],"p",{},"We are deprecating the certificate-based Kubernetes integration with GitLab and all the features that\nrely on it. This is the legacy integration, ",[16,17,20],"a",{"href":18,"rel":19},"https://docs.gitlab.com/releases/#gitlab-clusters-now-generally-available",[],"introduced"," early in 2018, in GitLab 10.4.",[12,23,24,25,30],{},"In September 2020, we started to build a more robust, secure, forthcoming, and reliable integration\nwith Kubernetes and released the ",[16,26,29],{"href":27,"rel":28},"https://docs.gitlab.com/user/clusters/agent/",[],"GitLab Agent for Kubernetes",",\nwhich is the recommended methodology to connect clusters with GitLab.",[12,32,33],{},"In this post, we explain the reasons for the change of path, what to expect, and how this\naffects the features that rely on the certificate-based integration with Kubernetes.",[35,36,38],"h2",{"id":37},"what-to-expect","What to expect",[12,40,41,42,46,47,52],{},"The ",[16,43,45],{"href":44},"/blog/certificate-based-kubernetes-integration-sunsetting-on-gitlab-com/","deprecation of the certificate-based Kubernetes integration"," affects all the features\nthat require a cluster connected to GitLab through cluster certificates. All those features are deprecated. The certificate-based integrations will be switched off on gitlab.com starting with the GitLab 15.0 release. Self-managed users will be able to switch the features back until their final removal. ",[16,48,51],{"href":49,"rel":50},"https://gitlab.com/gitlab-org/configure/general/-/issues/199",[],"The final removal will happen"," once all the collected, critical use-cases are supported with the agent and enough time was given for our users to migrate to the agent.",[12,54,55],{},"In regards to the existing features that rely on the certificate-based integration:",[57,58,59,63,71,74],"ul",{},[60,61,62],"li",{},"Some of the features will be migrated to use the GitLab Agent and we will\nprovide you with migration guides to help you follow along. We will communicate them\nthrough the following releases in our release posts, as usual.",[60,64,65,66,70],{},"If you already use features that depend on cluster certificates, you can keep using\nthem. But note that you might need to take extras steps in the future to migrate them\nto the Agent. However, we ",[67,68,69],"strong",{},"do not"," guarantee that we will migrate all the existing\ncertificate-based features to the Agent.",[60,72,73],{},"Existing users should not expect new functionality except for the developments required to support more recent Kubernetes versions, security and critical fixes, and community contributions.",[60,75,76],{},"If you currently do not use a deprecated feature and regardless decide to use it anyway,\nunderstand that there's a risk of having to migrate it to the Agent later, or, in the\nworst-case scenario, you might have to stop using the feature in the future.",[12,78,79,80,85],{},"See the updated list of the ",[16,81,84],{"href":82,"rel":83},"https://docs.gitlab.com/user/infrastructure/clusters/#deprecated-features",[],"affected features"," on the docs.",[35,87,89],{"id":88},"what-this-deprecation-means","What this deprecation means",[12,91,92],{},"The deprecation means that we will not build more features on top of the existing features\nthat depend on cluster certificates. It doesn't mean that the features will stop working right now.",[12,94,95],{},"New features for Kubernetes clusters will be built on top of the connection between GitLab and\nyour cluster through the Agent rather than on top of the certificate-based connection.",[12,97,98,99,104],{},"We have ",[16,100,103],{"href":101,"rel":102},"https://docs.gitlab.com/user/infrastructure/clusters/migrate_to_gitlab_agent/",[],"dedicated documentation"," to support you migrating from the certificate-based connections to agent-based connections.",[35,106,108],{"id":107},"what-should-you-do-for-clusters-not-connected-to-gitlab-yet","What should you do for clusters not connected to GitLab yet",[12,110,111,112,116],{},"To connect new clusters with GitLab, use the ",[16,113,115],{"href":27,"rel":114},[],"Agent","\nso that you don't have to take extra steps to use the Agent later on.",[35,118,120],{"id":119},"why-we-deprecated-the-certificate-based-integration-with-kubernetes","Why we deprecated the certificate-based integration with Kubernetes",[12,122,123],{},"There were several reasons why we decided to rethink our approach to Kubernetes:",[57,125,126,129,132,135],{},[60,127,128],{},"The certificate-based integration's biggest shortcoming is that it relies on direct\naccess to the Kubernetes API. Its exposure often comes with unacceptably high risk, especially for GitLab\nSaaS users.",[60,130,131],{},"The most valuable features within the integration required elevated privileges, often\nrequiring you to give cluster-admin rights to GitLab. At the same time, features that did\nnot need these privileges could not be restricted with more limited access. This means\nthat you had to grant full access to a rather simple feature, which could turn out as a liability.",[60,133,134],{},"Feedback from users implied that many of the features were never ready for production and\ncould be used only in limited situations.",[60,136,137],{},"The industry progressed, and pull-based deployments started to gain ground. And this approach\nwas mostly unknown when we built the integration.",[12,139,140],{},"We decided to address all these shortcomings with the GitLab Agent.",[35,142,144],{"id":143},"the-advantages-of-the-gitlab-agent","The advantages of the GitLab Agent",[12,146,147],{},"The integration with Kubernetes through the Agent provides many benefits compared to the\ncertificate-based integration, such as:",[57,149,150,153,156,159,162],{},[60,151,152],{},"Security",[60,154,155],{},"Reliability",[60,157,158],{},"Scalability",[60,160,161],{},"Speed",[60,163,164],{},"Functionality",[12,166,167],{},"Compared to the certificate-based integration, the Agent offers the following functionalities:",[57,169,170,173,176,179,182,185,188],{},[60,171,172],{},"Configure your cluster through code. This enables a clear separation of duties and you can use well-known merge request workflows and approvals.",[60,174,175],{},"An agent can be configured using regular Kubernetes RBAC rules, maintaining access\nto your cluster safe.",[60,177,178],{},"Scaling to multiple environments is trivial as each agent connects to one environment.",[60,180,181],{},"An agent's connection to a cluster can be shared by other groups and projects to simplify\ncoordination and maintenance.",[60,183,184],{},"The Agent supports pull-based deployments, enabling modern GitOps approaches.",[60,186,187],{},"The Agent supports push-based deployments, enabling existing GitLab CI/CD workflows to\nremain functional.",[60,189,190],{},"Having a bi-directional channel between GitLab and the cluster enables a new set of integrations,\nlike surfacing container network security policy alerts and container scan results into GitLab.",[35,192,194],{"id":193},"what-is-next-on-the-roadmap-of-the-gitlab-agent","What is next on the roadmap of the GitLab Agent",[12,196,197],{},"We identified a few high-value features on the list of deprecated features. Moreover, we know\nthat having some level of observability around the resources managed by the Agent is\nits biggest shortcoming. As a result, we are going to focus on the following three items first:",[57,199,200,209,217],{},[60,201,202,203,208],{},"Provide ",[16,204,207],{"href":205,"rel":206},"https://gitlab.com/groups/gitlab-org/-/epics/2493",[],"observability features for cluster resources"," so you can track your metrics and logs directly from GitLab.",[60,210,211,216],{},[16,212,215],{"href":213,"rel":214},"https://docs.gitlab.com/topics/autodevops/stages/#auto-deploy",[],"Auto DevOps and especially Auto Deploy"," can already by used on top of an Agent-based connection, but the setup is not easy. We will provide you with a solution soon.",[60,218,219,224],{},[16,220,223],{"href":221,"rel":222},"https://docs.gitlab.com/user/project/clusters/gitlab_managed_clusters/#gitlab-managed-clusters-deprecated",[],"GitLab-Managed Clusters"," are expected to work as they do today until we ship an equivalent or superior functionality\nbuilt around the Agent. Together with shipping this functionality, we will provide a migration guide if necessary.",[35,226,228],{"id":227},"we-are-listening","We are listening",[12,230,231],{},"Please help us to help you. We need your feedback to help us prioritize the migration of the\ncurrent features to the Agent and to build new features based on the Agent. We are especially seeking\nfeed back around real-world, high-scale usage of the features built for using Kubernetes clusters with GitLab.",[12,233,234,235,240,241,245],{},"If you would be open to sharing your feedback, please start a new thread in ",[16,236,239],{"href":237,"rel":238},"https://gitlab.com/groups/gitlab-org/configure/-/epics/8",[],"this epic",". Feel free to mention ",[242,243,244],"code",{},"@nagyv-gitlab"," in your comment to make sure that your comment is read and the information won't be missed.",{"title":247,"searchDepth":248,"depth":248,"links":249},"",2,[250,251,252,253,254,255,256],{"id":37,"depth":248,"text":38},{"id":88,"depth":248,"text":89},{"id":107,"depth":248,"text":108},{"id":119,"depth":248,"text":120},{"id":143,"depth":248,"text":144},{"id":193,"depth":248,"text":194},{"id":227,"depth":248,"text":228},"news","2021-11-15","Understand why we're deprecating this integration, how it might affect you, and get a closer look at GitLab Agent for Kubernetes.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670635/Blog/Hero%20Images/kubernetesterms.jpg",{},true,"/en-us/blog/deprecating-the-cert-based-kubernetes-integration",{"title":268,"description":259,"ogTitle":268,"ogDescription":259,"noIndex":262,"ogImage":263,"ogUrl":269,"ogSiteName":270,"ogType":271,"canonicalUrls":269},"Deprecating cert-based Kubernetes integration in GitLab 14.5","https://about.gitlab.com/blog/deprecating-the-cert-based-kubernetes-integration","https://about.gitlab.com","article","deprecating-the-cert-based-kubernetes-integration","en-us/blog/deprecating-the-cert-based-kubernetes-integration",[275,276,277],"kubernetes","integrations","releases","BlogPost","203Bqa3hE7biIHXEghvNClq94ExHp4DoCs990CxTQic",{"logo":281,"freeTrial":286,"sales":291,"login":296,"items":301,"search":626,"minimal":657,"duo":676,"switchNav":685,"pricingDeployment":696},{"config":282},{"href":283,"dataGaName":284,"dataGaLocation":285},"/","gitlab logo","header",{"text":287,"config":288},"Get free trial",{"href":289,"dataGaName":290,"dataGaLocation":285},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":292,"config":293},"Request a demo",{"href":294,"dataGaName":295,"dataGaLocation":285},"/sales/?contact-topic=request-demo","sales",{"text":297,"config":298},"Sign in",{"href":299,"dataGaName":300,"dataGaLocation":285},"https://gitlab.com/users/sign_in/","sign in",[302,331,430,435,548,604],{"text":303,"config":304,"menu":306},"Platform",{"dataNavLevelOne":305},"platform",{"type":307,"columns":308},"cards",[309,315,323],{"title":303,"description":310,"link":311},"The intelligent orchestration platform for DevSecOps",{"text":312,"config":313},"Explore our Platform",{"href":314,"dataGaName":305,"dataGaLocation":285},"/platform/",{"title":316,"description":317,"link":318},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":319,"config":320},"Meet GitLab Duo",{"href":321,"dataGaName":322,"dataGaLocation":285},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":324,"description":325,"link":326},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":327,"config":328},"Learn more",{"href":329,"dataGaName":330,"dataGaLocation":285},"/why-gitlab/","why gitlab",{"text":332,"left":265,"config":333,"menu":335},"Product",{"dataNavLevelOne":334},"solutions",{"type":336,"link":337,"columns":341,"feature":409},"lists",{"text":338,"config":339},"View all Solutions",{"href":340,"dataGaName":334,"dataGaLocation":285},"/solutions/",[342,366,388],{"title":343,"description":344,"link":345,"items":350},"Automation","CI/CD and automation to accelerate deployment",{"config":346},{"icon":347,"href":348,"dataGaName":349,"dataGaLocation":285},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[351,355,358,362],{"text":352,"config":353},"CI/CD",{"href":354,"dataGaLocation":285,"dataGaName":352},"/solutions/continuous-integration/",{"text":316,"config":356},{"href":321,"dataGaLocation":285,"dataGaName":357},"gitlab duo agent platform - product menu",{"text":359,"config":360},"Source Code Management",{"href":361,"dataGaLocation":285,"dataGaName":359},"/solutions/source-code-management/",{"text":363,"config":364},"Automated Software Delivery",{"href":348,"dataGaLocation":285,"dataGaName":365},"Automated software delivery",{"title":152,"description":367,"link":368,"items":373},"Deliver code faster without compromising security",{"config":369},{"href":370,"dataGaName":371,"dataGaLocation":285,"icon":372},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[374,378,383],{"text":375,"config":376},"Application Security Testing",{"href":370,"dataGaName":377,"dataGaLocation":285},"Application security testing",{"text":379,"config":380},"Software Supply Chain Security",{"href":381,"dataGaLocation":285,"dataGaName":382},"/solutions/supply-chain/","Software supply chain security",{"text":384,"config":385},"Software Compliance",{"href":386,"dataGaName":387,"dataGaLocation":285},"/solutions/software-compliance/","software compliance",{"title":389,"link":390,"items":395},"Measurement",{"config":391},{"icon":392,"href":393,"dataGaName":394,"dataGaLocation":285},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[396,400,404],{"text":397,"config":398},"Visibility & Measurement",{"href":393,"dataGaLocation":285,"dataGaName":399},"Visibility and Measurement",{"text":401,"config":402},"Value Stream Management",{"href":403,"dataGaLocation":285,"dataGaName":401},"/solutions/value-stream-management/",{"text":405,"config":406},"Analytics & Insights",{"href":407,"dataGaLocation":285,"dataGaName":408},"/solutions/analytics-and-insights/","Analytics and insights",{"title":410,"type":336,"items":411},"GitLab for",[412,418,424],{"text":413,"config":414},"Enterprise",{"icon":415,"href":416,"dataGaLocation":285,"dataGaName":417},"Building","/enterprise/","enterprise",{"text":419,"config":420},"Small Business",{"icon":421,"href":422,"dataGaLocation":285,"dataGaName":423},"Work","/small-business/","small business",{"text":425,"config":426},"Public Sector",{"icon":427,"href":428,"dataGaLocation":285,"dataGaName":429},"Organization","/solutions/public-sector/","public sector",{"text":431,"config":432},"Pricing",{"href":433,"dataGaName":434,"dataGaLocation":285,"dataNavLevelOne":434},"/pricing/","pricing",{"text":436,"config":437,"menu":439},"Resources",{"dataNavLevelOne":438},"resources",{"type":336,"link":440,"columns":444,"feature":537},{"text":441,"config":442},"View all resources",{"href":443,"dataGaName":438,"dataGaLocation":285},"/resources/",[445,477,504],{"title":446,"items":447},"Getting started",[448,453,458,463,468,473],{"text":449,"config":450},"Install",{"href":451,"dataGaName":452,"dataGaLocation":285},"/install/","install",{"text":454,"config":455},"Quick start guides",{"href":456,"dataGaName":457,"dataGaLocation":285},"/get-started/","quick setup checklists",{"text":459,"config":460},"Learn",{"href":461,"dataGaLocation":285,"dataGaName":462},"https://university.gitlab.com/","learn",{"text":464,"config":465},"Product documentation",{"href":466,"dataGaName":467,"dataGaLocation":285},"https://docs.gitlab.com/","product documentation",{"text":469,"config":470},"Best practice videos",{"href":471,"dataGaName":472,"dataGaLocation":285},"/getting-started-videos/","best practice videos",{"text":474,"config":475},"Integrations",{"href":476,"dataGaName":276,"dataGaLocation":285},"/integrations/",{"title":478,"items":479},"Discover",[480,485,490,495,499],{"text":481,"config":482},"Customer success stories",{"href":483,"dataGaName":484,"dataGaLocation":285},"/customers/","customer success stories",{"text":486,"config":487},"Blog",{"href":488,"dataGaName":489,"dataGaLocation":285},"/blog/","blog",{"text":491,"config":492},"Demo Hub",{"href":493,"dataGaName":494,"dataGaLocation":285},"/demo-hub/","demo hub",{"text":496,"config":497},"The Source",{"href":498,"dataGaName":489,"dataGaLocation":285},"/the-source/",{"text":500,"config":501},"Remote",{"href":502,"dataGaName":503,"dataGaLocation":285},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":505,"items":506},"Connect",[507,512,517,522,527,532],{"text":508,"config":509},"GitLab Services",{"href":510,"dataGaName":511,"dataGaLocation":285},"/services/","services",{"text":513,"config":514},"Contribute",{"href":515,"dataGaName":516,"dataGaLocation":285},"https://contributors.gitlab.com","contribute",{"text":518,"config":519},"Community",{"href":520,"dataGaName":521,"dataGaLocation":285},"/community/","community",{"text":523,"config":524},"Forum",{"href":525,"dataGaName":526,"dataGaLocation":285},"https://forum.gitlab.com/","forum",{"text":528,"config":529},"Events",{"href":530,"dataGaName":531,"dataGaLocation":285},"/events/","events",{"text":533,"config":534},"Partners",{"href":535,"dataGaName":536,"dataGaLocation":285},"/partners/","partners",{"config":538,"title":541,"text":542,"link":543},{"background":539,"textColor":540},"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":544,"config":545},"Read the latest",{"href":546,"dataGaName":547,"dataGaLocation":285},"/whats-new/","whats new",{"text":549,"config":550,"menu":552},"Company",{"dataNavLevelOne":551},"company",{"type":336,"columns":553},[554],{"items":555},[556,561,567,569,574,579,584,589,594,599],{"text":557,"config":558},"About",{"href":559,"dataGaName":560,"dataGaLocation":285},"/company/","about",{"text":562,"config":563,"footerGa":566},"Jobs",{"href":564,"dataGaName":565,"dataGaLocation":285},"/jobs/","jobs",{"dataGaName":565},{"text":528,"config":568},{"href":530,"dataGaName":531,"dataGaLocation":285},{"text":570,"config":571},"Leadership",{"href":572,"dataGaName":573,"dataGaLocation":285},"/company/team/e-group/","leadership",{"text":575,"config":576},"Handbook",{"href":577,"dataGaName":578,"dataGaLocation":285},"https://handbook.gitlab.com/","handbook",{"text":580,"config":581},"Investor relations",{"href":582,"dataGaName":583,"dataGaLocation":285},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":585,"config":586},"Trust Center",{"href":587,"dataGaName":588,"dataGaLocation":285},"/security/","trust center",{"text":590,"config":591},"AI Transparency Center",{"href":592,"dataGaName":593,"dataGaLocation":285},"/ai-transparency-center/","ai transparency center",{"text":595,"config":596},"Newsletter",{"href":597,"dataGaName":598,"dataGaLocation":285},"/company/contact/#contact-forms","newsletter",{"text":600,"config":601},"Press",{"href":602,"dataGaName":603,"dataGaLocation":285},"/press/","press",{"text":605,"config":606,"menu":607},"Contact us",{"dataNavLevelOne":551},{"type":336,"columns":608},[609],{"items":610},[611,616,621],{"text":612,"config":613},"Talk to sales",{"href":614,"dataGaName":615,"dataGaLocation":285},"/sales/","talk to sales",{"text":617,"config":618},"Support portal",{"href":619,"dataGaName":620,"dataGaLocation":285},"https://support.gitlab.com/hc/en-us","support portal",{"text":622,"config":623},"Customer portal",{"href":624,"dataGaName":625,"dataGaLocation":285},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":627,"login":628,"suggestions":635},"Close",{"text":629,"link":630},"To search repositories and projects, login to",{"text":631,"config":632},"gitlab.com",{"href":299,"dataGaName":633,"dataGaLocation":634},"search login","search",{"text":636,"default":637},"Suggestions",[638,640,644,646,650,654],{"text":316,"config":639},{"href":321,"dataGaName":316,"dataGaLocation":634},{"text":641,"config":642},"Code Suggestions (AI)",{"href":643,"dataGaName":641,"dataGaLocation":634},"/solutions/code-suggestions/",{"text":352,"config":645},{"href":354,"dataGaName":352,"dataGaLocation":634},{"text":647,"config":648},"GitLab on AWS",{"href":649,"dataGaName":647,"dataGaLocation":634},"/partners/technology-partners/aws/",{"text":651,"config":652},"GitLab on Google Cloud",{"href":653,"dataGaName":651,"dataGaLocation":634},"/partners/technology-partners/google-cloud-platform/",{"text":655,"config":656},"Why GitLab?",{"href":329,"dataGaName":655,"dataGaLocation":634},{"freeTrial":658,"mobileIcon":663,"desktopIcon":668,"secondaryButton":671},{"text":659,"config":660},"Start free trial",{"href":661,"dataGaName":290,"dataGaLocation":662},"https://gitlab.com/-/trials/new/","nav",{"altText":664,"config":665},"Gitlab Icon",{"src":666,"dataGaName":667,"dataGaLocation":662},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":664,"config":669},{"src":670,"dataGaName":667,"dataGaLocation":662},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":672,"config":673},"Get Started",{"href":674,"dataGaName":675,"dataGaLocation":662},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":677,"mobileIcon":681,"desktopIcon":683},{"text":678,"config":679},"Learn more about GitLab Duo",{"href":321,"dataGaName":680,"dataGaLocation":662},"gitlab duo",{"altText":664,"config":682},{"src":666,"dataGaName":667,"dataGaLocation":662},{"altText":664,"config":684},{"src":670,"dataGaName":667,"dataGaLocation":662},{"button":686,"mobileIcon":691,"desktopIcon":693},{"text":687,"config":688},"/switch",{"href":689,"dataGaName":690,"dataGaLocation":662},"#contact","switch",{"altText":664,"config":692},{"src":666,"dataGaName":667,"dataGaLocation":662},{"altText":664,"config":694},{"src":695,"dataGaName":667,"dataGaLocation":662},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":697,"mobileIcon":702,"desktopIcon":704},{"text":698,"config":699},"Back to pricing",{"href":433,"dataGaName":700,"dataGaLocation":662,"icon":701},"back to pricing","GoBack",{"altText":664,"config":703},{"src":666,"dataGaName":667,"dataGaLocation":662},{"altText":664,"config":705},{"src":670,"dataGaName":667,"dataGaLocation":662},{"title":707,"titleMobile":708,"button":709,"config":714},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":327,"config":710},{"href":711,"dataGaName":712,"dataGaLocation":713},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":715,"disabled":262},"release",{"data":717},{"text":718,"source":719,"edit":725,"contribute":730,"config":735,"items":740,"minimal":950},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":720,"config":721},"View page source",{"href":722,"dataGaName":723,"dataGaLocation":724},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":726,"config":727},"Edit this page",{"href":728,"dataGaName":729,"dataGaLocation":724},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":731,"config":732},"Please contribute",{"href":733,"dataGaName":734,"dataGaLocation":724},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":736,"facebook":737,"youtube":738,"linkedin":739},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[741,788,842,886,918],{"title":431,"links":742,"subMenu":757},[743,747,752],{"text":744,"config":745},"View plans",{"href":433,"dataGaName":746,"dataGaLocation":724},"view plans",{"text":748,"config":749},"Why Premium?",{"href":750,"dataGaName":751,"dataGaLocation":724},"/pricing/premium/","why premium",{"text":753,"config":754},"Why Ultimate?",{"href":755,"dataGaName":756,"dataGaLocation":724},"/pricing/ultimate/","why ultimate",[758],{"title":759,"links":760},"Contact Us",[761,764,766,768,773,778,783],{"text":762,"config":763},"Contact sales",{"href":614,"dataGaName":295,"dataGaLocation":724},{"text":617,"config":765},{"href":619,"dataGaName":620,"dataGaLocation":724},{"text":622,"config":767},{"href":624,"dataGaName":625,"dataGaLocation":724},{"text":769,"config":770},"Status",{"href":771,"dataGaName":772,"dataGaLocation":724},"https://status.gitlab.com/","status",{"text":774,"config":775},"Terms of use",{"href":776,"dataGaName":777,"dataGaLocation":724},"/terms/","terms of use",{"text":779,"config":780},"Privacy statement",{"href":781,"dataGaName":782,"dataGaLocation":724},"/privacy/","privacy statement",{"text":784,"config":785},"Cookie preferences",{"dataGaName":786,"dataGaLocation":724,"id":787,"isOneTrustButton":265},"cookie preferences","ot-sdk-btn",{"title":332,"links":789,"subMenu":798},[790,794],{"text":791,"config":792},"DevSecOps platform",{"href":314,"dataGaName":793,"dataGaLocation":724},"devsecops platform",{"text":795,"config":796},"AI-Assisted Development",{"href":321,"dataGaName":797,"dataGaLocation":724},"ai-assisted development",[799],{"title":800,"links":801},"Topics",[802,807,812,817,822,827,832,837],{"text":803,"config":804},"CICD",{"href":805,"dataGaName":806,"dataGaLocation":724},"/topics/ci-cd/","cicd",{"text":808,"config":809},"GitOps",{"href":810,"dataGaName":811,"dataGaLocation":724},"/topics/gitops/","gitops",{"text":813,"config":814},"DevOps",{"href":815,"dataGaName":816,"dataGaLocation":724},"/topics/devops/","devops",{"text":818,"config":819},"Version Control",{"href":820,"dataGaName":821,"dataGaLocation":724},"/topics/version-control/","version control",{"text":823,"config":824},"DevSecOps",{"href":825,"dataGaName":826,"dataGaLocation":724},"/topics/devsecops/","devsecops",{"text":828,"config":829},"Cloud Native",{"href":830,"dataGaName":831,"dataGaLocation":724},"/topics/cloud-native/","cloud native",{"text":833,"config":834},"AI for Coding",{"href":835,"dataGaName":836,"dataGaLocation":724},"/topics/devops/ai-for-coding/","ai for coding",{"text":838,"config":839},"Agentic AI",{"href":840,"dataGaName":841,"dataGaLocation":724},"/topics/agentic-ai/","agentic ai",{"title":843,"links":844},"Solutions",[845,847,849,854,858,861,865,868,870,873,876,881],{"text":375,"config":846},{"href":370,"dataGaName":375,"dataGaLocation":724},{"text":365,"config":848},{"href":348,"dataGaName":349,"dataGaLocation":724},{"text":850,"config":851},"Agile development",{"href":852,"dataGaName":853,"dataGaLocation":724},"/solutions/agile-delivery/","agile delivery",{"text":855,"config":856},"SCM",{"href":361,"dataGaName":857,"dataGaLocation":724},"source code management",{"text":803,"config":859},{"href":354,"dataGaName":860,"dataGaLocation":724},"continuous integration & delivery",{"text":862,"config":863},"Value stream management",{"href":403,"dataGaName":864,"dataGaLocation":724},"value stream management",{"text":808,"config":866},{"href":867,"dataGaName":811,"dataGaLocation":724},"/solutions/gitops/",{"text":413,"config":869},{"href":416,"dataGaName":417,"dataGaLocation":724},{"text":871,"config":872},"Small business",{"href":422,"dataGaName":423,"dataGaLocation":724},{"text":874,"config":875},"Public sector",{"href":428,"dataGaName":429,"dataGaLocation":724},{"text":877,"config":878},"Education",{"href":879,"dataGaName":880,"dataGaLocation":724},"/solutions/education/","education",{"text":882,"config":883},"Financial services",{"href":884,"dataGaName":885,"dataGaLocation":724},"/solutions/finance/","financial services",{"title":436,"links":887},[888,890,892,894,897,899,902,904,906,908,910,912,914,916],{"text":449,"config":889},{"href":451,"dataGaName":452,"dataGaLocation":724},{"text":454,"config":891},{"href":456,"dataGaName":457,"dataGaLocation":724},{"text":459,"config":893},{"href":461,"dataGaName":462,"dataGaLocation":724},{"text":464,"config":895},{"href":466,"dataGaName":896,"dataGaLocation":724},"docs",{"text":486,"config":898},{"href":488,"dataGaName":489,"dataGaLocation":724},{"text":900,"config":901},"What's new",{"href":546,"dataGaName":547,"dataGaLocation":724},{"text":481,"config":903},{"href":483,"dataGaName":484,"dataGaLocation":724},{"text":500,"config":905},{"href":502,"dataGaName":503,"dataGaLocation":724},{"text":508,"config":907},{"href":510,"dataGaName":511,"dataGaLocation":724},{"text":513,"config":909},{"href":515,"dataGaName":516,"dataGaLocation":724},{"text":518,"config":911},{"href":520,"dataGaName":521,"dataGaLocation":724},{"text":523,"config":913},{"href":525,"dataGaName":526,"dataGaLocation":724},{"text":528,"config":915},{"href":530,"dataGaName":531,"dataGaLocation":724},{"text":533,"config":917},{"href":535,"dataGaName":536,"dataGaLocation":724},{"title":549,"links":919},[920,922,924,926,928,930,934,939,941,943,945],{"text":557,"config":921},{"href":559,"dataGaName":551,"dataGaLocation":724},{"text":562,"config":923},{"href":564,"dataGaName":565,"dataGaLocation":724},{"text":570,"config":925},{"href":572,"dataGaName":573,"dataGaLocation":724},{"text":575,"config":927},{"href":577,"dataGaName":578,"dataGaLocation":724},{"text":580,"config":929},{"href":582,"dataGaName":583,"dataGaLocation":724},{"text":931,"config":932},"Sustainability",{"href":933,"dataGaName":931,"dataGaLocation":724},"/sustainability/",{"text":935,"config":936},"Diversity, inclusion and belonging (DIB)",{"href":937,"dataGaName":938,"dataGaLocation":724},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":585,"config":940},{"href":587,"dataGaName":588,"dataGaLocation":724},{"text":595,"config":942},{"href":597,"dataGaName":598,"dataGaLocation":724},{"text":600,"config":944},{"href":602,"dataGaName":603,"dataGaLocation":724},{"text":946,"config":947},"Modern Slavery Transparency Statement",{"href":948,"dataGaName":949,"dataGaLocation":724},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":951},[952,955,958],{"text":953,"config":954},"Terms",{"href":776,"dataGaName":777,"dataGaLocation":724},{"text":956,"config":957},"Cookies",{"dataGaName":786,"dataGaLocation":724,"id":787,"isOneTrustButton":265},{"text":959,"config":960},"Privacy",{"href":781,"dataGaName":782,"dataGaLocation":724},[962],{"id":963,"title":7,"body":261,"config":964,"content":966,"description":261,"extension":970,"meta":971,"navigation":265,"path":972,"seo":973,"stem":974,"__hash__":975},"blogAuthors/en-us/blog/authors/viktor-nagy.yml",{"template":965},"BlogAuthor",{"name":7,"config":967},{"headshot":968,"ctfId":969},"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",[977,985,992],{"title":978,"description":979,"heroImage":980,"category":257,"date":981,"authors":982,"slug":984,"externalUrl":261},"GitLab named a Leader in the 2026 Gartner® Magic Quadrant™ for DevSecOps Platforms","Agents made coding fast. GitLab is the Intelligent Orchestration Platform for DevSecOps that brings speed with control for the rest of the software lifecycle.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-06-17",[983],"Manav Khurana","gitlab-leader-2026-gartner-mq-devsecops-platforms",{"title":986,"description":987,"heroImage":988,"category":257,"date":981,"authors":989,"slug":991,"externalUrl":261},"GitLab and Capgemini accelerate DevSecOps transformation","The global alliance helps organizations modernize software delivery, secure their supply chain, and bring AI into development workflows.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781279411/n3pkmddd2eswa8qbu06z.png",[990],"Alex Picker","gitlab-and-capgemini-global-alliance-partnership",{"title":993,"description":994,"heroImage":995,"category":257,"date":981,"authors":996,"slug":997,"externalUrl":261},"Introducing the 2026 EMEA GitLab Partner Award winners","Learn about the EMEA partners who made an outstanding impact over the past year.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781608381/biycl2ib2kpsbspjlac7.png",[990],"2026-emea-gitlab-partner-awards",{"promotions":999},[1000,1014,1026,1038],{"id":1001,"categories":1002,"header":1004,"text":1005,"button":1006,"image":1011},"ai-modernization",[1003],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1007,"config":1008},"Get your AI maturity score",{"href":1009,"dataGaName":1010,"dataGaLocation":489},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1012},{"src":1013},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1015,"categories":1016,"header":1018,"text":1005,"button":1019,"image":1023},"devops-modernization",[1017,826],"product","Are you just managing tools or shipping innovation?",{"text":1020,"config":1021},"Get your DevOps maturity score",{"href":1022,"dataGaName":1010,"dataGaLocation":489},"/assessments/devops-modernization-assessment/",{"config":1024},{"src":1025},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1027,"categories":1028,"header":1030,"text":1005,"button":1031,"image":1035},"security-modernization",[1029],"security","Are you trading speed for security?",{"text":1032,"config":1033},"Get your security maturity score",{"href":1034,"dataGaName":1010,"dataGaLocation":489},"/assessments/security-modernization-assessment/",{"config":1036},{"src":1037},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1039,"paths":1040,"header":1043,"text":1044,"button":1045,"image":1050},"github-azure-migration",[1041,1042],"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":1046,"config":1047},"See how GitLab compares to GitHub",{"href":1048,"dataGaName":1049,"dataGaLocation":489},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1051},{"src":1025},{"header":1053,"blurb":1054,"button":1055,"secondaryButton":1060},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1056,"config":1057},"Get your free trial",{"href":1058,"dataGaName":290,"dataGaLocation":1059},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":762,"config":1061},{"href":614,"dataGaName":295,"dataGaLocation":1059},1786803767968]