[{"data":1,"prerenderedAt":1246},["ShallowReactive",2],{"/blog/quick-setup-of-a-gke-cluster-with-argocd-pre-installed-using-terraform":3,"navigation-en-us":449,"banner-en-us":876,"footer-en-us":886,"blog-post-authors-en-us-Noah Ing|Siddharth Mathur":1129,"blog-related-posts-en-us-quick-setup-of-a-gke-cluster-with-argocd-pre-installed-using-terraform":1156,"blog-promotions-en-us":1182,"next-steps-en-us":1236},{"id":4,"title":5,"authors":6,"body":9,"category":425,"date":426,"description":427,"extension":428,"externalUrl":429,"faq":429,"featured":430,"heroImage":431,"meta":432,"navigation":433,"path":434,"seo":435,"slug":439,"stem":440,"tags":441,"template":447,"updatedDate":429,"__hash__":448},"blogPosts/en-us/blog/quick-setup-of-a-gke-cluster-with-argocd-pre-installed-using-terraform.md","Quick setup of a GKE Cluster with ArgoCD pre-installed using Terraform",[7,8],"Noah Ing","Siddharth Mathur",{"type":10,"value":11,"toc":417},"minimark",[12,16,21,40,45,62,66,75,78,123,127,145,156,166,180,187,191,197,201,254,260,264,304,308,330,338,344,348,354,358,367,371,387,391,413],[13,14,15],"p",{},"This tutorial will walk you through setting up a Google Kubernetes Engine (GKE) Cluster with ArgoCD pre-installed, utilizing Terraform, in less than 10 minutes. This will be a great starting point to manage your cluster entirely through GitOps.",[17,18,20],"h3",{"id":19},"prerequisites","Prerequisites",[22,23,24,28,31,34,37],"ul",{},[25,26,27],"li",{},"GCP account with permissions to provision a GKE Cluster",[25,29,30],{},"Kubectl client v1.23.9",[25,32,33],{},"Kubectl server v1.23.16-gke.1400",[25,35,36],{},"Working knowledge of GKE",[25,38,39],{},"Basic knowledge of ArgoCD",[41,42,44],"h4",{"id":43},"an-overview-of-this-tutorial-is-as-follows","An overview of this tutorial is as follows:",[22,46,47,50,53,56,59],{},[25,48,49],{},"Set up the GitLab Terraform GKE ArgoCD Template",[25,51,52],{},"Connect to your GKE Cluster",[25,54,55],{},"Grab the ArgoCD Initial Admin Secret",[25,57,58],{},"Log into ArgoCD",[25,60,61],{},"Enjoy your Kubernetes Cluster with ArgoCD!",[41,63,65],{"id":64},"set-up-the-gitlab-terraform-gke-argocd-template","Set up the GitLab Terraform GKE ArgoCD template",[13,67,68,69,74],{},"Start by importing the example project by URL - ",[70,71,72],"a",{"href":72,"rel":73},"https://gitlab.com/projects/new#import_project",[],".",[13,76,77],{},"To import the project:",[79,80,81,88,94,100,105,117],"ol",{},[25,82,83,84,74],{},"In GitLab, on the top bar, select ",[85,86,87],"strong",{},"Main menu > Projects > View all projects",[25,89,90,91,74],{},"On the right of the page, select ",[85,92,93],{},"New project",[25,95,96,97,74],{},"Select ",[85,98,99],{},"Import project",[25,101,96,102,74],{},[85,103,104],{},"Repository by URL",[25,106,107,108],{},"For the Git repository URL:\n",[22,109,110],{},[25,111,112],{},[70,113,116],{"href":114,"rel":115},"https://gitlab.com/demos/infrastructure/gitlab-terraform-gke-argocd",[],"GitLab Terraform GKE ArgoCD",[25,118,119,120,74],{},"Complete the fields and select ",[85,121,122],{},"Create project",[41,124,126],{"id":125},"add-in-your-cloud-credentials-to-cicd-variables","Add in your cloud credentials to CI/CD variables",[79,128,129,136,142],{},[25,130,131,132,135],{},"To authenticate GCP with GitLab, create a GCP service account with the following roles: ",[85,133,134],{},"Compute Network Viewer, Kubernetes Engine Admin, Service Account User, and Service Account Admin",". Both User and Admin service accounts are necessary. The User role impersonates the default service account when creating the node pool. The Admin role creates a service account in the kube-system namespace.",[25,137,138,141],{},[85,139,140],{},"Download the JSON file"," with the service account key you created in the previous step.",[25,143,144],{},"On your computer, encode the JSON file to base64 (replace /path/to/sa-key.json to the path to your key):",[146,147,153],"pre",{"className":148,"code":150,"language":151,"meta":152},[149],"language-text","base64 -i /path/to/sa-key.json\n","text","",[154,155,150],"code",{"__ignoreMap":152},[79,157,159],{"start":158},4,[25,160,161,162,165],{},"Use the output of this command as the ",[85,163,164],{},"BASE64_GOOGLE_CREDENTIALS"," environment variable in the next step.",[13,167,168,169,172,173,175,176,179],{},"On the left sidebar, select ",[85,170,171],{},"Settings > CI/CD. Expand Variables",".\n5. Set the variable ",[85,174,164],{}," to the base64 encoded JSON file you just created.\n6. Set the variable ",[85,177,178],{},"TF_VAR_gcp_project"," to your GCP’s project name.",[13,181,182],{},[183,184],"img",{"alt":185,"src":186},"simpleargocd - image 1","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683298/Blog/Content%20Images/simpleargocd_-_image_1.png",[41,188,190],{"id":189},"run-gitlab-ci-to-deploy-your-kubernetes-cluster-with-argocd-installed","Run GitLab CI to deploy your Kubernetes cluster with ArgoCD Installed.",[13,192,193],{},[183,194],{"alt":195,"src":196},"simpleargocd - image 2","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683298/Blog/Content%20Images/simpleargocd_-_image_2.png",[41,198,200],{"id":199},"connect-to-your-gke-cluster-through-your-terminal-using-the-following-bash-command","Connect to your GKE Cluster through your terminal using the following bash command.",[146,202,206],{"className":203,"code":204,"language":205,"meta":152,"style":152},"language-bash shiki shiki-themes github-light","gcloud container clusters get-credentials gitlab-terraform-gke-argocd --region us-central1 --project \u003Cproject-name>\n","bash",[154,207,208],{"__ignoreMap":152},[209,210,213,217,221,224,227,230,234,237,240,244,247,251],"span",{"class":211,"line":212},"line",1,[209,214,216],{"class":215},"s7eDp","gcloud",[209,218,220],{"class":219},"sYBdl"," container",[209,222,223],{"class":219}," clusters",[209,225,226],{"class":219}," get-credentials",[209,228,229],{"class":219}," gitlab-terraform-gke-argocd",[209,231,233],{"class":232},"sYu0t"," --region",[209,235,236],{"class":219}," us-central1",[209,238,239],{"class":232}," --project",[209,241,243],{"class":242},"sD7c4"," \u003C",[209,245,246],{"class":219},"project-nam",[209,248,250],{"class":249},"sgsFI","e",[209,252,253],{"class":242},">\n",[13,255,256],{},[183,257],{"alt":258,"src":259},"simpleargocd-image3","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683298/Blog/Content%20Images/simpleargocd-image3.png",[41,261,263],{"id":262},"expose-the-initial-admin-secret-through-your-terminal-using-the-following-bash-command-make-sure-you-save-this-password-for-later","Expose the Initial Admin Secret through your terminal using the following bash command. Make sure you save this password for later.",[146,265,267],{"className":203,"code":266,"language":205,"meta":152,"style":152},"kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=\"{.data.password}\" | base64 -d\n",[154,268,269],{"__ignoreMap":152},[209,270,271,274,277,280,283,286,289,292,295,298,301],{"class":211,"line":212},[209,272,273],{"class":215},"kubectl",[209,275,276],{"class":232}," -n",[209,278,279],{"class":219}," argocd",[209,281,282],{"class":219}," get",[209,284,285],{"class":219}," secret",[209,287,288],{"class":219}," argocd-initial-admin-secret",[209,290,291],{"class":232}," -o",[209,293,294],{"class":219}," jsonpath=\"{.data.password}\"",[209,296,297],{"class":242}," |",[209,299,300],{"class":215}," base64",[209,302,303],{"class":232}," -d\n",[41,305,307],{"id":306},"port-forward-argocd-to-your-localhost-8080-through-your-terminal-using-the-following-bash-command-go-to-chrome-localhost8080-afterwards","Port Forward ArgoCD to your localhost 8080 through your terminal using the following bash command. Go to Chrome localhost:8080 afterwards.",[146,309,311],{"className":203,"code":310,"language":205,"meta":152,"style":152},"kubectl port-forward svc/argocd-server -n argocd 8080:443\n",[154,312,313],{"__ignoreMap":152},[209,314,315,317,320,323,325,327],{"class":211,"line":212},[209,316,273],{"class":215},[209,318,319],{"class":219}," port-forward",[209,321,322],{"class":219}," svc/argocd-server",[209,324,276],{"class":232},[209,326,279],{"class":219},[209,328,329],{"class":219}," 8080:443\n",[41,331,333,334,337],{"id":332},"enter-your-admin-and-initial-admin-secret-to-the-login-page","Enter your admin and ",[154,335,336],{},"Initial Admin Secret"," to the login page.",[13,339,340],{},[183,341],{"alt":342,"src":343},"simpleargocd - image 4","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683298/Blog/Content%20Images/simpleargocd_-_image_4.png",[41,345,347],{"id":346},"voila-youve-bootstrapped-your-gke-cluster-with-argocd-enjoy-your-gitops","Voila! You've bootstrapped your GKE cluster with ArgoCD. Enjoy your GitOps!",[13,349,350],{},[183,351],{"alt":352,"src":353},"simpleargocd - image 5","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683298/Blog/Content%20Images/simpleargocd_-_image_5.png",[17,355,357],{"id":356},"next-steps","Next steps",[13,359,360,361,366],{},"We recommend reviewing ",[70,362,365],{"href":363,"rel":364},"https://about.gitlab.com/blog/how-to-provision-reviewops/",[],"setting up Review Ops with ArgoCD","!",[17,368,370],{"id":369},"references","References",[22,372,373,380],{},[25,374,375],{},[70,376,379],{"href":377,"rel":378},"https://gitlab.com/gitlab-learn-labs/webinars/infrastructure/gitlab-terraform-gke-argocd",[],"GitLab Learn Labs - Infrastructure Webinar",[25,381,382],{},[70,383,386],{"href":384,"rel":385},"https://argo-cd.readthedocs.io/en/release-2.0/getting_started/",[],"Getting started with ArgoCD",[17,388,390],{"id":389},"related-posts","Related posts",[22,392,393,400,406],{},[25,394,395],{},[70,396,399],{"href":397,"rel":398},"https://about.gitlab.com/blog/simple-kubernetes-management-with-gitlab/",[],"Simple Kubernetes management with GitLab",[25,401,402],{},[70,403,405],{"href":363,"rel":404},[],"How to provision ReviewOps",[25,407,408],{},[70,409,412],{"href":410,"rel":411},"https://about.gitlab.com/blog/the-ultimate-guide-to-gitops-with-gitlab/",[],"The ultimate guide to GitOps with GitLab",[414,415,416],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":152,"searchDepth":418,"depth":418,"links":419},2,[420,422,423,424],{"id":19,"depth":421,"text":20},3,{"id":356,"depth":421,"text":357},{"id":369,"depth":421,"text":370},{"id":389,"depth":421,"text":390},"engineering","2024-01-31","Use this tutorial as a great starting point to manage your cluster entirely through GitOps.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665989/Blog/Hero%20Images/AdobeStock_618473457.jpg",{},true,"/en-us/blog/quick-setup-of-a-gke-cluster-with-argocd-pre-installed-using-terraform",{"title":5,"description":427,"ogTitle":5,"ogDescription":427,"noIndex":430,"ogImage":431,"ogUrl":436,"ogSiteName":437,"ogType":438,"canonicalUrls":436},"https://about.gitlab.com/blog/quick-setup-of-a-gke-cluster-with-argocd-pre-installed-using-terraform","https://about.gitlab.com","article","quick-setup-of-a-gke-cluster-with-argocd-pre-installed-using-terraform","en-us/blog/quick-setup-of-a-gke-cluster-with-argocd-pre-installed-using-terraform",[442,443,444,445,446],"GitOps","GKE","CI/CD","DevSecOps","solutions architecture","BlogPost","ncVa3qIKKIiY54x-hTr5-BkdNEUP5rNeKRUP0QywIDw",{"logo":450,"freeTrial":455,"sales":460,"login":465,"items":470,"search":796,"minimal":827,"duo":846,"switchNav":855,"pricingDeployment":866},{"config":451},{"href":452,"dataGaName":453,"dataGaLocation":454},"/","gitlab logo","header",{"text":456,"config":457},"Get free trial",{"href":458,"dataGaName":459,"dataGaLocation":454},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":461,"config":462},"Request a demo",{"href":463,"dataGaName":464,"dataGaLocation":454},"/sales/?contact-topic=request-demo","sales",{"text":466,"config":467},"Sign in",{"href":468,"dataGaName":469,"dataGaLocation":454},"https://gitlab.com/users/sign_in/","sign in",[471,500,599,604,718,774],{"text":472,"config":473,"menu":475},"Platform",{"dataNavLevelOne":474},"platform",{"type":476,"columns":477},"cards",[478,484,492],{"title":472,"description":479,"link":480},"The intelligent orchestration platform for DevSecOps",{"text":481,"config":482},"Explore our Platform",{"href":483,"dataGaName":474,"dataGaLocation":454},"/platform/",{"title":485,"description":486,"link":487},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":488,"config":489},"Meet GitLab Duo",{"href":490,"dataGaName":491,"dataGaLocation":454},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":493,"description":494,"link":495},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":496,"config":497},"Learn more",{"href":498,"dataGaName":499,"dataGaLocation":454},"/why-gitlab/","why gitlab",{"text":501,"left":433,"config":502,"menu":504},"Product",{"dataNavLevelOne":503},"solutions",{"type":505,"link":506,"columns":510,"feature":578},"lists",{"text":507,"config":508},"View all Solutions",{"href":509,"dataGaName":503,"dataGaLocation":454},"/solutions/",[511,534,557],{"title":512,"description":513,"link":514,"items":519},"Automation","CI/CD and automation to accelerate deployment",{"config":515},{"icon":516,"href":517,"dataGaName":518,"dataGaLocation":454},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[520,523,526,530],{"text":444,"config":521},{"href":522,"dataGaLocation":454,"dataGaName":444},"/solutions/continuous-integration/",{"text":485,"config":524},{"href":490,"dataGaLocation":454,"dataGaName":525},"gitlab duo agent platform - product menu",{"text":527,"config":528},"Source Code Management",{"href":529,"dataGaLocation":454,"dataGaName":527},"/solutions/source-code-management/",{"text":531,"config":532},"Automated Software Delivery",{"href":517,"dataGaLocation":454,"dataGaName":533},"Automated software delivery",{"title":535,"description":536,"link":537,"items":542},"Security","Deliver code faster without compromising security",{"config":538},{"href":539,"dataGaName":540,"dataGaLocation":454,"icon":541},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[543,547,552],{"text":544,"config":545},"Application Security Testing",{"href":539,"dataGaName":546,"dataGaLocation":454},"Application security testing",{"text":548,"config":549},"Software Supply Chain Security",{"href":550,"dataGaLocation":454,"dataGaName":551},"/solutions/supply-chain/","Software supply chain security",{"text":553,"config":554},"Software Compliance",{"href":555,"dataGaName":556,"dataGaLocation":454},"/solutions/software-compliance/","software compliance",{"title":558,"link":559,"items":564},"Measurement",{"config":560},{"icon":561,"href":562,"dataGaName":563,"dataGaLocation":454},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[565,569,573],{"text":566,"config":567},"Visibility & Measurement",{"href":562,"dataGaLocation":454,"dataGaName":568},"Visibility and Measurement",{"text":570,"config":571},"Value Stream Management",{"href":572,"dataGaLocation":454,"dataGaName":570},"/solutions/value-stream-management/",{"text":574,"config":575},"Analytics & Insights",{"href":576,"dataGaLocation":454,"dataGaName":577},"/solutions/analytics-and-insights/","Analytics and insights",{"title":579,"type":505,"items":580},"GitLab for",[581,587,593],{"text":582,"config":583},"Enterprise",{"icon":584,"href":585,"dataGaLocation":454,"dataGaName":586},"Building","/enterprise/","enterprise",{"text":588,"config":589},"Small Business",{"icon":590,"href":591,"dataGaLocation":454,"dataGaName":592},"Work","/small-business/","small business",{"text":594,"config":595},"Public Sector",{"icon":596,"href":597,"dataGaLocation":454,"dataGaName":598},"Organization","/solutions/public-sector/","public sector",{"text":600,"config":601},"Pricing",{"href":602,"dataGaName":603,"dataGaLocation":454,"dataNavLevelOne":603},"/pricing/","pricing",{"text":605,"config":606,"menu":608},"Resources",{"dataNavLevelOne":607},"resources",{"type":505,"link":609,"columns":613,"feature":707},{"text":610,"config":611},"View all resources",{"href":612,"dataGaName":607,"dataGaLocation":454},"/resources/",[614,647,674],{"title":615,"items":616},"Getting started",[617,622,627,632,637,642],{"text":618,"config":619},"Install",{"href":620,"dataGaName":621,"dataGaLocation":454},"/install/","install",{"text":623,"config":624},"Quick start guides",{"href":625,"dataGaName":626,"dataGaLocation":454},"/get-started/","quick setup checklists",{"text":628,"config":629},"Learn",{"href":630,"dataGaLocation":454,"dataGaName":631},"https://university.gitlab.com/","learn",{"text":633,"config":634},"Product documentation",{"href":635,"dataGaName":636,"dataGaLocation":454},"https://docs.gitlab.com/","product documentation",{"text":638,"config":639},"Best practice videos",{"href":640,"dataGaName":641,"dataGaLocation":454},"/getting-started-videos/","best practice videos",{"text":643,"config":644},"Integrations",{"href":645,"dataGaName":646,"dataGaLocation":454},"/integrations/","integrations",{"title":648,"items":649},"Discover",[650,655,660,665,669],{"text":651,"config":652},"Customer success stories",{"href":653,"dataGaName":654,"dataGaLocation":454},"/customers/","customer success stories",{"text":656,"config":657},"Blog",{"href":658,"dataGaName":659,"dataGaLocation":454},"/blog/","blog",{"text":661,"config":662},"Demo Hub",{"href":663,"dataGaName":664,"dataGaLocation":454},"/demo-hub/","demo hub",{"text":666,"config":667},"The Source",{"href":668,"dataGaName":659,"dataGaLocation":454},"/the-source/",{"text":670,"config":671},"Remote",{"href":672,"dataGaName":673,"dataGaLocation":454},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":675,"items":676},"Connect",[677,682,687,692,697,702],{"text":678,"config":679},"GitLab Services",{"href":680,"dataGaName":681,"dataGaLocation":454},"/services/","services",{"text":683,"config":684},"Contribute",{"href":685,"dataGaName":686,"dataGaLocation":454},"https://contributors.gitlab.com","contribute",{"text":688,"config":689},"Community",{"href":690,"dataGaName":691,"dataGaLocation":454},"/community/","community",{"text":693,"config":694},"Forum",{"href":695,"dataGaName":696,"dataGaLocation":454},"https://forum.gitlab.com/","forum",{"text":698,"config":699},"Events",{"href":700,"dataGaName":701,"dataGaLocation":454},"/events/","events",{"text":703,"config":704},"Partners",{"href":705,"dataGaName":706,"dataGaLocation":454},"/partners/","partners",{"config":708,"title":711,"text":712,"link":713},{"background":709,"textColor":710},"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":714,"config":715},"Read the latest",{"href":716,"dataGaName":717,"dataGaLocation":454},"/whats-new/","whats new",{"text":719,"config":720,"menu":722},"Company",{"dataNavLevelOne":721},"company",{"type":505,"columns":723},[724],{"items":725},[726,731,737,739,744,749,754,759,764,769],{"text":727,"config":728},"About",{"href":729,"dataGaName":730,"dataGaLocation":454},"/company/","about",{"text":732,"config":733,"footerGa":736},"Jobs",{"href":734,"dataGaName":735,"dataGaLocation":454},"/jobs/","jobs",{"dataGaName":735},{"text":698,"config":738},{"href":700,"dataGaName":701,"dataGaLocation":454},{"text":740,"config":741},"Leadership",{"href":742,"dataGaName":743,"dataGaLocation":454},"/company/team/e-group/","leadership",{"text":745,"config":746},"Handbook",{"href":747,"dataGaName":748,"dataGaLocation":454},"https://handbook.gitlab.com/","handbook",{"text":750,"config":751},"Investor relations",{"href":752,"dataGaName":753,"dataGaLocation":454},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":755,"config":756},"Trust Center",{"href":757,"dataGaName":758,"dataGaLocation":454},"/security/","trust center",{"text":760,"config":761},"AI Transparency Center",{"href":762,"dataGaName":763,"dataGaLocation":454},"/ai-transparency-center/","ai transparency center",{"text":765,"config":766},"Newsletter",{"href":767,"dataGaName":768,"dataGaLocation":454},"/company/contact/#contact-forms","newsletter",{"text":770,"config":771},"Press",{"href":772,"dataGaName":773,"dataGaLocation":454},"/press/","press",{"text":775,"config":776,"menu":777},"Contact us",{"dataNavLevelOne":721},{"type":505,"columns":778},[779],{"items":780},[781,786,791],{"text":782,"config":783},"Talk to sales",{"href":784,"dataGaName":785,"dataGaLocation":454},"/sales/","talk to sales",{"text":787,"config":788},"Support portal",{"href":789,"dataGaName":790,"dataGaLocation":454},"https://support.gitlab.com/hc/en-us","support portal",{"text":792,"config":793},"Customer portal",{"href":794,"dataGaName":795,"dataGaLocation":454},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":797,"login":798,"suggestions":805},"Close",{"text":799,"link":800},"To search repositories and projects, login to",{"text":801,"config":802},"gitlab.com",{"href":468,"dataGaName":803,"dataGaLocation":804},"search login","search",{"text":806,"default":807},"Suggestions",[808,810,814,816,820,824],{"text":485,"config":809},{"href":490,"dataGaName":485,"dataGaLocation":804},{"text":811,"config":812},"Code Suggestions (AI)",{"href":813,"dataGaName":811,"dataGaLocation":804},"/solutions/code-suggestions/",{"text":444,"config":815},{"href":522,"dataGaName":444,"dataGaLocation":804},{"text":817,"config":818},"GitLab on AWS",{"href":819,"dataGaName":817,"dataGaLocation":804},"/partners/technology-partners/aws/",{"text":821,"config":822},"GitLab on Google Cloud",{"href":823,"dataGaName":821,"dataGaLocation":804},"/partners/technology-partners/google-cloud-platform/",{"text":825,"config":826},"Why GitLab?",{"href":498,"dataGaName":825,"dataGaLocation":804},{"freeTrial":828,"mobileIcon":833,"desktopIcon":838,"secondaryButton":841},{"text":829,"config":830},"Start free trial",{"href":831,"dataGaName":459,"dataGaLocation":832},"https://gitlab.com/-/trials/new/","nav",{"altText":834,"config":835},"Gitlab Icon",{"src":836,"dataGaName":837,"dataGaLocation":832},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":834,"config":839},{"src":840,"dataGaName":837,"dataGaLocation":832},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":842,"config":843},"Get Started",{"href":844,"dataGaName":845,"dataGaLocation":832},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":847,"mobileIcon":851,"desktopIcon":853},{"text":848,"config":849},"Learn more about GitLab Duo",{"href":490,"dataGaName":850,"dataGaLocation":832},"gitlab duo",{"altText":834,"config":852},{"src":836,"dataGaName":837,"dataGaLocation":832},{"altText":834,"config":854},{"src":840,"dataGaName":837,"dataGaLocation":832},{"button":856,"mobileIcon":861,"desktopIcon":863},{"text":857,"config":858},"/switch",{"href":859,"dataGaName":860,"dataGaLocation":832},"#contact","switch",{"altText":834,"config":862},{"src":836,"dataGaName":837,"dataGaLocation":832},{"altText":834,"config":864},{"src":865,"dataGaName":837,"dataGaLocation":832},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":867,"mobileIcon":872,"desktopIcon":874},{"text":868,"config":869},"Back to pricing",{"href":602,"dataGaName":870,"dataGaLocation":832,"icon":871},"back to pricing","GoBack",{"altText":834,"config":873},{"src":836,"dataGaName":837,"dataGaLocation":832},{"altText":834,"config":875},{"src":840,"dataGaName":837,"dataGaLocation":832},{"title":877,"titleMobile":878,"button":879,"config":884},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":496,"config":880},{"href":881,"dataGaName":882,"dataGaLocation":883},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":885,"disabled":430},"release",{"data":887},{"text":888,"source":889,"edit":895,"contribute":900,"config":905,"items":910,"minimal":1118},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":890,"config":891},"View page source",{"href":892,"dataGaName":893,"dataGaLocation":894},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":896,"config":897},"Edit this page",{"href":898,"dataGaName":899,"dataGaLocation":894},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":901,"config":902},"Please contribute",{"href":903,"dataGaName":904,"dataGaLocation":894},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":906,"facebook":907,"youtube":908,"linkedin":909},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[911,958,1010,1054,1086],{"title":600,"links":912,"subMenu":927},[913,917,922],{"text":914,"config":915},"View plans",{"href":602,"dataGaName":916,"dataGaLocation":894},"view plans",{"text":918,"config":919},"Why Premium?",{"href":920,"dataGaName":921,"dataGaLocation":894},"/pricing/premium/","why premium",{"text":923,"config":924},"Why Ultimate?",{"href":925,"dataGaName":926,"dataGaLocation":894},"/pricing/ultimate/","why ultimate",[928],{"title":929,"links":930},"Contact Us",[931,934,936,938,943,948,953],{"text":932,"config":933},"Contact sales",{"href":784,"dataGaName":464,"dataGaLocation":894},{"text":787,"config":935},{"href":789,"dataGaName":790,"dataGaLocation":894},{"text":792,"config":937},{"href":794,"dataGaName":795,"dataGaLocation":894},{"text":939,"config":940},"Status",{"href":941,"dataGaName":942,"dataGaLocation":894},"https://status.gitlab.com/","status",{"text":944,"config":945},"Terms of use",{"href":946,"dataGaName":947,"dataGaLocation":894},"/terms/","terms of use",{"text":949,"config":950},"Privacy statement",{"href":951,"dataGaName":952,"dataGaLocation":894},"/privacy/","privacy statement",{"text":954,"config":955},"Cookie preferences",{"dataGaName":956,"dataGaLocation":894,"id":957,"isOneTrustButton":433},"cookie preferences","ot-sdk-btn",{"title":501,"links":959,"subMenu":968},[960,964],{"text":961,"config":962},"DevSecOps platform",{"href":483,"dataGaName":963,"dataGaLocation":894},"devsecops platform",{"text":965,"config":966},"AI-Assisted Development",{"href":490,"dataGaName":967,"dataGaLocation":894},"ai-assisted development",[969],{"title":970,"links":971},"Topics",[972,977,981,986,991,995,1000,1005],{"text":973,"config":974},"CICD",{"href":975,"dataGaName":976,"dataGaLocation":894},"/topics/ci-cd/","cicd",{"text":442,"config":978},{"href":979,"dataGaName":980,"dataGaLocation":894},"/topics/gitops/","gitops",{"text":982,"config":983},"DevOps",{"href":984,"dataGaName":985,"dataGaLocation":894},"/topics/devops/","devops",{"text":987,"config":988},"Version Control",{"href":989,"dataGaName":990,"dataGaLocation":894},"/topics/version-control/","version control",{"text":445,"config":992},{"href":993,"dataGaName":994,"dataGaLocation":894},"/topics/devsecops/","devsecops",{"text":996,"config":997},"Cloud Native",{"href":998,"dataGaName":999,"dataGaLocation":894},"/topics/cloud-native/","cloud native",{"text":1001,"config":1002},"AI for Coding",{"href":1003,"dataGaName":1004,"dataGaLocation":894},"/topics/devops/ai-for-coding/","ai for coding",{"text":1006,"config":1007},"Agentic AI",{"href":1008,"dataGaName":1009,"dataGaLocation":894},"/topics/agentic-ai/","agentic ai",{"title":1011,"links":1012},"Solutions",[1013,1015,1017,1022,1026,1029,1033,1036,1038,1041,1044,1049],{"text":544,"config":1014},{"href":539,"dataGaName":544,"dataGaLocation":894},{"text":533,"config":1016},{"href":517,"dataGaName":518,"dataGaLocation":894},{"text":1018,"config":1019},"Agile development",{"href":1020,"dataGaName":1021,"dataGaLocation":894},"/solutions/agile-delivery/","agile delivery",{"text":1023,"config":1024},"SCM",{"href":529,"dataGaName":1025,"dataGaLocation":894},"source code management",{"text":973,"config":1027},{"href":522,"dataGaName":1028,"dataGaLocation":894},"continuous integration & delivery",{"text":1030,"config":1031},"Value stream management",{"href":572,"dataGaName":1032,"dataGaLocation":894},"value stream management",{"text":442,"config":1034},{"href":1035,"dataGaName":980,"dataGaLocation":894},"/solutions/gitops/",{"text":582,"config":1037},{"href":585,"dataGaName":586,"dataGaLocation":894},{"text":1039,"config":1040},"Small business",{"href":591,"dataGaName":592,"dataGaLocation":894},{"text":1042,"config":1043},"Public sector",{"href":597,"dataGaName":598,"dataGaLocation":894},{"text":1045,"config":1046},"Education",{"href":1047,"dataGaName":1048,"dataGaLocation":894},"/solutions/education/","education",{"text":1050,"config":1051},"Financial services",{"href":1052,"dataGaName":1053,"dataGaLocation":894},"/solutions/finance/","financial services",{"title":605,"links":1055},[1056,1058,1060,1062,1065,1067,1070,1072,1074,1076,1078,1080,1082,1084],{"text":618,"config":1057},{"href":620,"dataGaName":621,"dataGaLocation":894},{"text":623,"config":1059},{"href":625,"dataGaName":626,"dataGaLocation":894},{"text":628,"config":1061},{"href":630,"dataGaName":631,"dataGaLocation":894},{"text":633,"config":1063},{"href":635,"dataGaName":1064,"dataGaLocation":894},"docs",{"text":656,"config":1066},{"href":658,"dataGaName":659,"dataGaLocation":894},{"text":1068,"config":1069},"What's new",{"href":716,"dataGaName":717,"dataGaLocation":894},{"text":651,"config":1071},{"href":653,"dataGaName":654,"dataGaLocation":894},{"text":670,"config":1073},{"href":672,"dataGaName":673,"dataGaLocation":894},{"text":678,"config":1075},{"href":680,"dataGaName":681,"dataGaLocation":894},{"text":683,"config":1077},{"href":685,"dataGaName":686,"dataGaLocation":894},{"text":688,"config":1079},{"href":690,"dataGaName":691,"dataGaLocation":894},{"text":693,"config":1081},{"href":695,"dataGaName":696,"dataGaLocation":894},{"text":698,"config":1083},{"href":700,"dataGaName":701,"dataGaLocation":894},{"text":703,"config":1085},{"href":705,"dataGaName":706,"dataGaLocation":894},{"title":719,"links":1087},[1088,1090,1092,1094,1096,1098,1102,1107,1109,1111,1113],{"text":727,"config":1089},{"href":729,"dataGaName":721,"dataGaLocation":894},{"text":732,"config":1091},{"href":734,"dataGaName":735,"dataGaLocation":894},{"text":740,"config":1093},{"href":742,"dataGaName":743,"dataGaLocation":894},{"text":745,"config":1095},{"href":747,"dataGaName":748,"dataGaLocation":894},{"text":750,"config":1097},{"href":752,"dataGaName":753,"dataGaLocation":894},{"text":1099,"config":1100},"Sustainability",{"href":1101,"dataGaName":1099,"dataGaLocation":894},"/sustainability/",{"text":1103,"config":1104},"Diversity, inclusion and belonging (DIB)",{"href":1105,"dataGaName":1106,"dataGaLocation":894},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":755,"config":1108},{"href":757,"dataGaName":758,"dataGaLocation":894},{"text":765,"config":1110},{"href":767,"dataGaName":768,"dataGaLocation":894},{"text":770,"config":1112},{"href":772,"dataGaName":773,"dataGaLocation":894},{"text":1114,"config":1115},"Modern Slavery Transparency Statement",{"href":1116,"dataGaName":1117,"dataGaLocation":894},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1119},[1120,1123,1126],{"text":1121,"config":1122},"Terms",{"href":946,"dataGaName":947,"dataGaLocation":894},{"text":1124,"config":1125},"Cookies",{"dataGaName":956,"dataGaLocation":894,"id":957,"isOneTrustButton":433},{"text":1127,"config":1128},"Privacy",{"href":951,"dataGaName":952,"dataGaLocation":894},[1130,1144],{"id":1131,"title":7,"body":429,"config":1132,"content":1134,"description":429,"extension":1138,"meta":1139,"navigation":433,"path":1140,"seo":1141,"stem":1142,"__hash__":1143},"blogAuthors/en-us/blog/authors/noah-ing.yml",{"template":1133},"BlogAuthor",{"name":7,"config":1135},{"headshot":1136,"ctfId":1137},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664410/Blog/Author%20Headshots/noahing.png","noahing","yml",{},"/en-us/blog/authors/noah-ing",{},"en-us/blog/authors/noah-ing","NHgV_yTX8kHX01mE2SSxC6hcOMw3BCWiblr8m6csLkw",{"id":1145,"title":8,"body":429,"config":1146,"content":1147,"description":429,"extension":1138,"meta":1151,"navigation":433,"path":1152,"seo":1153,"stem":1154,"__hash__":1155},"blogAuthors/en-us/blog/authors/siddharth-mathur.yml",{"template":1133},{"name":8,"config":1148},{"headshot":1149,"ctfId":1150},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682662/Blog/Author%20Headshots/smathur-headshot.png","smathur",{},"/en-us/blog/authors/siddharth-mathur",{},"en-us/blog/authors/siddharth-mathur","OFzVMXJCGSeAlPAF_jOQBFrF09NTszNOW9DuGW7aDPY",[1157,1166,1174],{"title":1158,"description":1159,"heroImage":1160,"category":425,"date":1161,"authors":1162,"slug":1165,"externalUrl":429},"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",[1163,1164],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":1167,"description":1168,"heroImage":1169,"category":425,"date":1170,"authors":1171,"slug":1173,"externalUrl":429},"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",[1172],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1175,"description":1176,"heroImage":1177,"category":425,"date":1178,"authors":1179,"slug":1181,"externalUrl":429},"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",[1180],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":1183},[1184,1198,1210,1222],{"id":1185,"categories":1186,"header":1188,"text":1189,"button":1190,"image":1195},"ai-modernization",[1187],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1191,"config":1192},"Get your AI maturity score",{"href":1193,"dataGaName":1194,"dataGaLocation":659},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1196},{"src":1197},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1199,"categories":1200,"header":1202,"text":1189,"button":1203,"image":1207},"devops-modernization",[1201,994],"product","Are you just managing tools or shipping innovation?",{"text":1204,"config":1205},"Get your DevOps maturity score",{"href":1206,"dataGaName":1194,"dataGaLocation":659},"/assessments/devops-modernization-assessment/",{"config":1208},{"src":1209},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1211,"categories":1212,"header":1214,"text":1189,"button":1215,"image":1219},"security-modernization",[1213],"security","Are you trading speed for security?",{"text":1216,"config":1217},"Get your security maturity score",{"href":1218,"dataGaName":1194,"dataGaLocation":659},"/assessments/security-modernization-assessment/",{"config":1220},{"src":1221},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1223,"paths":1224,"header":1227,"text":1228,"button":1229,"image":1234},"github-azure-migration",[1225,1226],"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":1230,"config":1231},"See how GitLab compares to GitHub",{"href":1232,"dataGaName":1233,"dataGaLocation":659},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1235},{"src":1209},{"header":1237,"blurb":1238,"button":1239,"secondaryButton":1244},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1240,"config":1241},"Get your free trial",{"href":1242,"dataGaName":459,"dataGaLocation":1243},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":932,"config":1245},{"href":784,"dataGaName":464,"dataGaLocation":1243},1786803754280]