[{"data":1,"prerenderedAt":1791},["ShallowReactive",2],{"/de-de/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab":3,"navigation-de-de":1007,"banner-de-de":1439,"footer-de-de":1447,"blog-post-authors-de-de-Regnard Raquedan":1688,"blog-related-posts-de-de-fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab":1703,"blog-promotions-de-de":1728,"next-steps-de-de":1781},{"id":4,"title":5,"authors":6,"body":8,"category":988,"date":989,"description":990,"extension":991,"externalUrl":992,"faq":992,"featured":993,"heroImage":994,"meta":995,"navigation":301,"path":996,"seo":997,"slug":999,"stem":1000,"tags":1001,"template":1005,"updatedDate":992,"__hash__":1006},"blogPosts/de-de/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab.md","KI-Agenten mittels GitLab in Cloud Run bereitstellen",[7],"Regnard Raquedan",{"type":9,"value":10,"toc":981},"minimark",[11,22,27,30,33,37,40,43,70,73,80,84,87,109,115,124,127,165,168,173,176,207,213,216,219,237,240,440,445,448,455,792,795,821,830,835,838,855,858,872,876,879,905,910,915,929,934,945,952,956,959,977],[12,13,14,15,21],"p",{},"KI-Agents für Production-Umgebungen bereitzustellen erfordert systematische Absicherung. Dieser Leitfaden beschreibt, wie sich AI-Agents mittels Googles Agent Development Kit (",[16,17,20],"a",{"href":18,"rel":19},"https://cloud.google.com/vertex-ai/generative-ai/docs/agent-development-kit/quickstart",[],"ADK",") in Cloud Run deployen lassen – mit GitLabs nativer Integration und CI/CD-Komponenten. Cloud Run bietet serverless Deployment ohne Kubernetes-Cluster-Management.",[23,24,26],"h2",{"id":25},"was-sind-ai-agents-und-warum-sind-sie-relevant","Was sind AI-Agents und warum sind sie relevant?",[12,28,29],{},"Agentische KI stellt eine bedeutende Entwicklung im Bereich künstliche Intelligenz dar. Anders als traditionelle generative KI-Tools, die konstante menschliche Anleitung erfordern, nutzen AI-Agents fortgeschrittene Language Models und Natural Language Processing für autonome Aktionen. Diese Systeme können Anfragen verstehen, Entscheidungen treffen und mehrstufige Pläne selbstständig ausführen.",[12,31,32],{},"Dieses Tutorial nutzt Googles ADK, ein flexibles und modulares Framework für die Entwicklung und Bereitstellung von AI-Agents. ADK ist für Gemini und das Google-Ökosystem optimiert, bleibt jedoch model-agnostisch, deployment-agnostisch und kompatibel mit anderen Frameworks.",[23,34,36],{"id":35},"demo-anwendung-canada-city-advisor","Demo-Anwendung: Canada City Advisor",[12,38,39],{},"Das Deployment-Beispiel demonstriert eine praktische Multi-Agent-Architektur: Der Canada City Advisor hilft Nutzenden, die ideale kanadische Stadt basierend auf Präferenzen und Rahmenbedingungen zu finden.",[12,41,42],{},"Der Ablauf:",[44,45,46,50,67],"ul",{},[47,48,49],"li",{},"Nutzende geben Budget-Anforderungen und Lifestyle-Präferenzen ein",[47,51,52,53],{},"Der Root-Agent koordiniert zwei Sub-Agents:\n",[44,54,55,58],{},[47,56,57],{},"Budget-Analyzer-Agent: Evaluiert finanzielle Rahmenbedingungen (Datenquelle: Canada Mortgage and Housing Corporation)",[47,59,60,61,66],{},"Lifestyle-Preferences-Agent: Matcht Städte mit Nutzer-Anforderungen (nutzt Weather-Service mit ",[16,62,65],{"href":63,"rel":64},"https://open-meteo.com/",[],"Open-Meteo"," für Stadt-Informationen)",[47,68,69],{},"Das System generiert personalisierte Stadt-Empfehlungen",[12,71,72],{},"Diese Multi-Agent-Architektur zeigt die Möglichkeiten agentischer KI: Spezialisierte Agents arbeiten zusammen, um komplexe Probleme zu lösen. Die Sub-Agents werden nur aktiviert, wenn der Root-Agent Budget- und Lifestyle-Analyse als notwendig bestimmt.",[12,74,75],{},[76,77],"img",{"alt":78,"src":79},"Multi-Agent-Architektur für Demo-Anwendung mit agentischer KI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751576568/obgxpxvlnxtzifddrrz1.png",[23,81,83],{"id":82},"voraussetzungen","Voraussetzungen",[12,85,86],{},"Folgende Anforderungen müssen erfüllt sein:",[44,88,89,103,106],{},[47,90,91,92],{},"Google Cloud-Projekt mit aktivierten APIs:\n",[44,93,94,97,100],{},[47,95,96],{},"Cloud Run API",[47,98,99],{},"Artifact Registry API",[47,101,102],{},"Vertex AI API",[47,104,105],{},"GitLab-Projekt für Source Code",[47,107,108],{},"Entsprechende Permissions in GitLab und Google Cloud",[12,110,111],{},[112,113,114],"strong",{},"Schritt 1: IAM-Integration mit Workload Identity Federation",[12,116,117,118,123],{},"Der erste Schritt etabliert sichere, keyless Authentifizierung zwischen GitLab und Google Cloud mittels ",[16,119,122],{"href":120,"rel":121},"https://cloud.google.com/iam/docs/workload-identity-federation",[],"Workload Identity Federation",". Dies eliminiert Service-Account-Keys und verbessert die Sicherheit.",[12,125,126],{},"Im GitLab-Projekt:",[128,129,130,136],"ol",{},[47,131,132,133],{},"Navigieren zu ",[112,134,135],{},"Settings > Integrations > Google Cloud IAM",[47,137,138,139],{},"Folgende Angaben bereitstellen:\n",[44,140,141,147,153,159],{},[47,142,143,146],{},[112,144,145],{},"Project ID",": Google Cloud Project ID",[47,148,149,152],{},[112,150,151],{},"Project Number",": In Google Cloud Console zu finden",[47,154,155,158],{},[112,156,157],{},"Pool ID",": Eindeutiger Identifier für Workload Identity Pool",[47,160,161,164],{},[112,162,163],{},"Provider ID",": Eindeutiger Identifier für Identity Provider",[12,166,167],{},"GitLab generiert ein Script. Dieses Script in Google Cloud Shell ausführen, um die Workload Identity Federation zu erstellen.",[12,169,170],{},[112,171,172],{},"Schritt 2: Google Artifact Registry Integration konfigurieren",[12,174,175],{},"Als Nächstes wird die Verbindung zu Google Artifact Registry konfiguriert, wo Container-Images gespeichert werden.",[128,177,178,184],{},[47,179,180,181],{},"In GitLab navigieren zu ",[112,182,183],{},"Settings > Integrations > Google Artifact Registry",[47,185,186,187],{},"Eingaben:\n",[44,188,189,195,201],{},[47,190,191,194],{},[112,192,193],{},"Google Cloud Project ID",": Wie in Schritt 1",[47,196,197,200],{},[112,198,199],{},"Repository Name",": Name eines existierenden Artifact Registry Repository",[47,202,203,206],{},[112,204,205],{},"Location",": Region des Repository",[12,208,209,212],{},[112,210,211],{},"Wichtig:"," Das Repository muss bereits in Artifact Registry existieren. GitLab erstellt in diesem Kontext kein neues Repository.",[12,214,215],{},"GitLab generiert Commands für die notwendigen Permissions. Diese in Google Cloud Shell ausführen.",[12,217,218],{},"Zusätzlich folgende Rollen zum Service Principal für Cloud Run-Deployment hinzufügen:",[44,220,221,227,232],{},[47,222,223],{},[224,225,226],"code",{},"roles/run.admin",[47,228,229],{},[224,230,231],{},"roles/iam.serviceAccountUser",[47,233,234],{},[224,235,236],{},"roles/cloudbuild.builds.editor",[12,238,239],{},"Die Rollen lassen sich mittels folgender gcloud-Commands hinzufügen:",[241,242,247],"pre",{"className":243,"code":244,"language":245,"meta":246,"style":246},"language-shell shiki shiki-themes github-light","GCP_PROJECT_ID=\"\u003Cyour-project-id>\" #replace\nGCP_PROJECT_NUMBER=\"\u003Cyour-project-number>\" #replace\nGCP_WORKLOAD_IDENTITY_POOL=\"\u003Cyour-pool-id>\" #replace\n\ngcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \\\n  --member=\"principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true\" \\\n  --role='roles/run.admin'\n\ngcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \\\n  --member=\"principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true\" \\\n  --role='roles/iam.serviceAccountUser'\n\ngcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \\\n  --member=\"principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true\" \\\n  --role='roles/cloudbuild.builds.editor'\n","shell","",[224,248,249,270,283,296,303,323,345,354,359,372,389,397,402,415,432],{"__ignoreMap":246},[250,251,254,258,262,266],"span",{"class":252,"line":253},"line",1,[250,255,257],{"class":256},"sgsFI","GCP_PROJECT_ID",[250,259,261],{"class":260},"sD7c4","=",[250,263,265],{"class":264},"sYBdl","\"\u003Cyour-project-id>\"",[250,267,269],{"class":268},"sAwPA"," #replace\n",[250,271,273,276,278,281],{"class":252,"line":272},2,[250,274,275],{"class":256},"GCP_PROJECT_NUMBER",[250,277,261],{"class":260},[250,279,280],{"class":264},"\"\u003Cyour-project-number>\"",[250,282,269],{"class":268},[250,284,286,289,291,294],{"class":252,"line":285},3,[250,287,288],{"class":256},"GCP_WORKLOAD_IDENTITY_POOL",[250,290,261],{"class":260},[250,292,293],{"class":264},"\"\u003Cyour-pool-id>\"",[250,295,269],{"class":268},[250,297,299],{"class":252,"line":298},4,[250,300,302],{"emptyLinePlaceholder":301},true,"\n",[250,304,306,310,313,316,319],{"class":252,"line":305},5,[250,307,309],{"class":308},"s7eDp","gcloud",[250,311,312],{"class":264}," projects",[250,314,315],{"class":264}," add-iam-policy-binding",[250,317,318],{"class":256}," ${GCP_PROJECT_ID} ",[250,320,322],{"class":321},"sYu0t","\\\n",[250,324,326,329,332,334,337,339,342],{"class":252,"line":325},6,[250,327,328],{"class":321},"  --member=",[250,330,331],{"class":264},"\"principalSet://iam.googleapis.com/projects/${",[250,333,275],{"class":256},[250,335,336],{"class":264},"}/locations/global/workloadIdentityPools/${",[250,338,288],{"class":256},[250,340,341],{"class":264},"}/attribute.developer_access/true\"",[250,343,344],{"class":321}," \\\n",[250,346,348,351],{"class":252,"line":347},7,[250,349,350],{"class":321},"  --role=",[250,352,353],{"class":264},"'roles/run.admin'\n",[250,355,357],{"class":252,"line":356},8,[250,358,302],{"emptyLinePlaceholder":301},[250,360,362,364,366,368,370],{"class":252,"line":361},9,[250,363,309],{"class":308},[250,365,312],{"class":264},[250,367,315],{"class":264},[250,369,318],{"class":256},[250,371,322],{"class":321},[250,373,375,377,379,381,383,385,387],{"class":252,"line":374},10,[250,376,328],{"class":321},[250,378,331],{"class":264},[250,380,275],{"class":256},[250,382,336],{"class":264},[250,384,288],{"class":256},[250,386,341],{"class":264},[250,388,344],{"class":321},[250,390,392,394],{"class":252,"line":391},11,[250,393,350],{"class":321},[250,395,396],{"class":264},"'roles/iam.serviceAccountUser'\n",[250,398,400],{"class":252,"line":399},12,[250,401,302],{"emptyLinePlaceholder":301},[250,403,405,407,409,411,413],{"class":252,"line":404},13,[250,406,309],{"class":308},[250,408,312],{"class":264},[250,410,315],{"class":264},[250,412,318],{"class":256},[250,414,322],{"class":321},[250,416,418,420,422,424,426,428,430],{"class":252,"line":417},14,[250,419,328],{"class":321},[250,421,331],{"class":264},[250,423,275],{"class":256},[250,425,336],{"class":264},[250,427,288],{"class":256},[250,429,341],{"class":264},[250,431,344],{"class":321},[250,433,435,437],{"class":252,"line":434},15,[250,436,350],{"class":321},[250,438,439],{"class":264},"'roles/cloudbuild.builds.editor'\n",[12,441,442],{},[112,443,444],{},"Schritt 3: CI/CD-Pipeline erstellen",[12,446,447],{},"Die Deployment-Pipeline nutzt GitLabs CI/CD-Komponenten. Diese vereinfachen die Konfiguration erheblich.",[12,449,450,451,454],{},"Eine ",[224,452,453],{},".gitlab-ci.yml","-Datei im Projekt-Root erstellen:",[241,456,460],{"className":457,"code":458,"language":459,"meta":246,"style":246},"language-yaml shiki shiki-themes github-light","stages:\n  - build\n  - test\n  - upload\n  - deploy\n\nvariables:\n  GITLAB_IMAGE: $CI_REGISTRY_IMAGE/main:$CI_COMMIT_SHORT_SHA\n  AR_IMAGE: $GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_LOCATION-docker.pkg.dev/$GOOGLE_ARTIFACT_REGISTRY_PROJECT_ID/$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_NAME/main:$CI_COMMIT_SHORT_SHA\n\nbuild:\n  image: docker:24.0.5\n  stage: build\n  services:\n    - docker:24.0.5-dind\n  before_script:\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n  script:\n    - docker build -t $GITLAB_IMAGE .\n    - docker push $GITLAB_IMAGE\n\ninclude:\n  - template: Jobs/Dependency-Scanning.gitlab-ci.yml\n  - template: Jobs/SAST.gitlab-ci.yml\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n  - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@main\n    inputs:\n      stage: upload\n      source: $GITLAB_IMAGE\n      target: $AR_IMAGE\n  - component: gitlab.com/google-gitlab-components/cloud-run/deploy-cloud-run@main\n    inputs:\n      stage: deploy\n      project_id: \"\u003Cyour-project-id>\" #replace\n      service: \"canadian-city\"\n      region: \"us-central1\"\n      image: $AR_IMAGE\n","yaml",[224,461,462,471,479,486,493,500,504,511,522,532,536,543,553,562,569,577,585,593,601,609,617,622,630,643,655,667,680,688,698,709,720,732,739,748,760,771,782],{"__ignoreMap":246},[250,463,464,468],{"class":252,"line":253},[250,465,467],{"class":466},"shJU0","stages",[250,469,470],{"class":256},":\n",[250,472,473,476],{"class":252,"line":272},[250,474,475],{"class":256},"  - ",[250,477,478],{"class":264},"build\n",[250,480,481,483],{"class":252,"line":285},[250,482,475],{"class":256},[250,484,485],{"class":264},"test\n",[250,487,488,490],{"class":252,"line":298},[250,489,475],{"class":256},[250,491,492],{"class":264},"upload\n",[250,494,495,497],{"class":252,"line":305},[250,496,475],{"class":256},[250,498,499],{"class":264},"deploy\n",[250,501,502],{"class":252,"line":325},[250,503,302],{"emptyLinePlaceholder":301},[250,505,506,509],{"class":252,"line":347},[250,507,508],{"class":466},"variables",[250,510,470],{"class":256},[250,512,513,516,519],{"class":252,"line":356},[250,514,515],{"class":466},"  GITLAB_IMAGE",[250,517,518],{"class":256},": ",[250,520,521],{"class":264},"$CI_REGISTRY_IMAGE/main:$CI_COMMIT_SHORT_SHA\n",[250,523,524,527,529],{"class":252,"line":361},[250,525,526],{"class":466},"  AR_IMAGE",[250,528,518],{"class":256},[250,530,531],{"class":264},"$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_LOCATION-docker.pkg.dev/$GOOGLE_ARTIFACT_REGISTRY_PROJECT_ID/$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_NAME/main:$CI_COMMIT_SHORT_SHA\n",[250,533,534],{"class":252,"line":374},[250,535,302],{"emptyLinePlaceholder":301},[250,537,538,541],{"class":252,"line":391},[250,539,540],{"class":466},"build",[250,542,470],{"class":256},[250,544,545,548,550],{"class":252,"line":399},[250,546,547],{"class":466},"  image",[250,549,518],{"class":256},[250,551,552],{"class":264},"docker:24.0.5\n",[250,554,555,558,560],{"class":252,"line":404},[250,556,557],{"class":466},"  stage",[250,559,518],{"class":256},[250,561,478],{"class":264},[250,563,564,567],{"class":252,"line":417},[250,565,566],{"class":466},"  services",[250,568,470],{"class":256},[250,570,571,574],{"class":252,"line":434},[250,572,573],{"class":256},"    - ",[250,575,576],{"class":264},"docker:24.0.5-dind\n",[250,578,580,583],{"class":252,"line":579},16,[250,581,582],{"class":466},"  before_script",[250,584,470],{"class":256},[250,586,588,590],{"class":252,"line":587},17,[250,589,573],{"class":256},[250,591,592],{"class":264},"docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n",[250,594,596,599],{"class":252,"line":595},18,[250,597,598],{"class":466},"  script",[250,600,470],{"class":256},[250,602,604,606],{"class":252,"line":603},19,[250,605,573],{"class":256},[250,607,608],{"class":264},"docker build -t $GITLAB_IMAGE .\n",[250,610,612,614],{"class":252,"line":611},20,[250,613,573],{"class":256},[250,615,616],{"class":264},"docker push $GITLAB_IMAGE\n",[250,618,620],{"class":252,"line":619},21,[250,621,302],{"emptyLinePlaceholder":301},[250,623,625,628],{"class":252,"line":624},22,[250,626,627],{"class":466},"include",[250,629,470],{"class":256},[250,631,633,635,638,640],{"class":252,"line":632},23,[250,634,475],{"class":256},[250,636,637],{"class":466},"template",[250,639,518],{"class":256},[250,641,642],{"class":264},"Jobs/Dependency-Scanning.gitlab-ci.yml\n",[250,644,646,648,650,652],{"class":252,"line":645},24,[250,647,475],{"class":256},[250,649,637],{"class":466},[250,651,518],{"class":256},[250,653,654],{"class":264},"Jobs/SAST.gitlab-ci.yml\n",[250,656,658,660,662,664],{"class":252,"line":657},25,[250,659,475],{"class":256},[250,661,637],{"class":466},[250,663,518],{"class":256},[250,665,666],{"class":264},"Jobs/Secret-Detection.gitlab-ci.yml\n",[250,668,670,672,675,677],{"class":252,"line":669},26,[250,671,475],{"class":256},[250,673,674],{"class":466},"component",[250,676,518],{"class":256},[250,678,679],{"class":264},"gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@main\n",[250,681,683,686],{"class":252,"line":682},27,[250,684,685],{"class":466},"    inputs",[250,687,470],{"class":256},[250,689,691,694,696],{"class":252,"line":690},28,[250,692,693],{"class":466},"      stage",[250,695,518],{"class":256},[250,697,492],{"class":264},[250,699,701,704,706],{"class":252,"line":700},29,[250,702,703],{"class":466},"      source",[250,705,518],{"class":256},[250,707,708],{"class":264},"$GITLAB_IMAGE\n",[250,710,712,715,717],{"class":252,"line":711},30,[250,713,714],{"class":466},"      target",[250,716,518],{"class":256},[250,718,719],{"class":264},"$AR_IMAGE\n",[250,721,723,725,727,729],{"class":252,"line":722},31,[250,724,475],{"class":256},[250,726,674],{"class":466},[250,728,518],{"class":256},[250,730,731],{"class":264},"gitlab.com/google-gitlab-components/cloud-run/deploy-cloud-run@main\n",[250,733,735,737],{"class":252,"line":734},32,[250,736,685],{"class":466},[250,738,470],{"class":256},[250,740,742,744,746],{"class":252,"line":741},33,[250,743,693],{"class":466},[250,745,518],{"class":256},[250,747,499],{"class":264},[250,749,751,754,756,758],{"class":252,"line":750},34,[250,752,753],{"class":466},"      project_id",[250,755,518],{"class":256},[250,757,265],{"class":264},[250,759,269],{"class":268},[250,761,763,766,768],{"class":252,"line":762},35,[250,764,765],{"class":466},"      service",[250,767,518],{"class":256},[250,769,770],{"class":264},"\"canadian-city\"\n",[250,772,774,777,779],{"class":252,"line":773},36,[250,775,776],{"class":466},"      region",[250,778,518],{"class":256},[250,780,781],{"class":264},"\"us-central1\"\n",[250,783,785,788,790],{"class":252,"line":784},37,[250,786,787],{"class":466},"      image",[250,789,518],{"class":256},[250,791,719],{"class":264},[12,793,794],{},"Die Pipeline besteht aus vier Stages:",[128,796,797,803,809,815],{},[47,798,799,802],{},[112,800,801],{},"Build",": Erstellt den Docker-Container mit dem AI-Agent",[47,804,805,808],{},[112,806,807],{},"Test",": Führt Security-Scans aus (Container-Scanning, Dependency-Scanning, SAST)",[47,810,811,814],{},[112,812,813],{},"Upload",": Pusht den Container zu Artifact Registry",[47,816,817,820],{},[112,818,819],{},"Deploy",": Deployt zu Cloud Run",[12,822,823,824,829],{},"Der Vorteil von ",[16,825,828],{"href":826,"rel":827},"https://docs.gitlab.com/ci/components/",[],"GitLabs CI/CD-Komponenten",": Es sind nur wenige Parameter erforderlich – die Komponenten übernehmen die komplexe Authentifizierungs- und Deployment-Logik.",[12,831,832],{},[112,833,834],{},"Schritt 4: Deployment und Test",[12,836,837],{},"Mit vollständiger Konfiguration erfolgt das Deployment:",[128,839,840,846,849,852],{},[47,841,842,843,845],{},"Code und ",[224,844,453],{}," zum GitLab-Repository committen",[47,847,848],{},"Die Pipeline triggert automatisch",[47,850,851],{},"Pipeline-Fortschritt im GitLab CI/CD-Interface überwachen",[47,853,854],{},"Nach Abschluss die Cloud Run-URL in der Google Cloud Console finden",[12,856,857],{},"Die Stages werden nacheinander ausgeführt:",[44,859,860,863,866,869],{},[47,861,862],{},"Build-Stage erstellt den Container",[47,864,865],{},"Test-Stage führt umfassende Security-Scans aus",[47,867,868],{},"Upload-Stage pusht zu Artifact Registry",[47,870,871],{},"Deploy-Stage erstellt oder aktualisiert den Cloud Run-Service",[23,873,875],{"id":874},"sicherheitsvorteile","Sicherheitsvorteile",[12,877,878],{},"Der Ansatz bietet mehrere Sicherheitsvorteile:",[44,880,881,887,893,899],{},[47,882,883,886],{},[112,884,885],{},"Keine langlebigen Credentials:"," Workload Identity Federation eliminiert Service-Account-Keys",[47,888,889,892],{},[112,890,891],{},"Automatisierte Security-Scans:"," Jedes Deployment wird auf Schwachstellen geprüft",[47,894,895,898],{},[112,896,897],{},"Audit-Trail:"," Vollständige Nachvollziehbarkeit, wer was wann deployed hat",[47,900,901,904],{},[112,902,903],{},"Principle of Least Privilege:"," Fein-granulare IAM-Rollen limitieren Zugriff",[12,906,907],{},[112,908,909],{},"CLOUD RUN ODER GKE?",[12,911,912],{},[112,913,914],{},"Cloud Run (Serverless):",[44,916,917,920,923,926],{},[47,918,919],{},"Kein Kubernetes-Cluster-Management erforderlich",[47,921,922],{},"Automatisches Scaling ohne Konfiguration",[47,924,925],{},"Pay-per-use statt fester Cluster-Kosten",[47,927,928],{},"Schneller Einstieg für einfache AI-Agents",[12,930,931],{},[112,932,933],{},"GKE (Kubernetes-Orchestrierung):",[44,935,936,939,942],{},[47,937,938],{},"Vollständige Cluster-Kontrolle",[47,940,941],{},"Komplexe Multi-Service-Architekturen",[47,943,944],{},"Enterprise-Orchestrierung mit HPA, Custom Resources",[12,946,947,948],{},"→ Tutorial: ",[16,949,951],{"href":950},"/de-de/blog/secure-ai-agent-deployment-to-gke/","KI-Agenten mittels GitLab in GKE bereitstellen",[23,953,955],{"id":954},"zusammenfassung","Zusammenfassung",[12,957,958],{},"Die Kombination von GitLabs Security-Features mit Google Clouds AI- und Serverless-Plattformen ermöglicht sichere und skalierbare AI-Agent-Deployments. Die Integration zwischen GitLab und Google Cloud vereinfacht den Prozess erheblich.",[960,961,962],"blockquote",{},[12,963,964,965,970,971,976],{},"Das komplette Code-Beispiel zum Testen: ",[16,966,969],{"href":967,"rel":968},"https://gitlab.com/gitlab-partners-public/google-cloud/demos/ai-agent-deployment",[],"GitHub Repository",". Noch kein GitLab-Kunde? Die DevSecOps-Plattform lässt sich mit einer ",[16,972,975],{"href":973,"rel":974},"https://about.gitlab.com/de-de/free-trial/",[],"kostenlosen Testversion"," erkunden.",[978,979,980],"style",{},"html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}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);}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}",{"title":246,"searchDepth":272,"depth":272,"links":982},[983,984,985,986,987],{"id":25,"depth":272,"text":26},{"id":35,"depth":272,"text":36},{"id":82,"depth":272,"text":83},{"id":874,"depth":272,"text":875},{"id":954,"depth":272,"text":955},"ai","2025-11-10","Serverless AI-Agent-Deployment mit GitLab und Google Cloud Run – Multi-Agent-Architektur, integrierte Scans, OIDC-Authentifizierung.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670563/Blog/Hero%20Images/cloudcomputing.jpg",{},"/de-de/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab",{"noIndex":993,"title":5,"description":998},"Serverless AI-Agent-Deployment mit GitLab und Google Cloud Run – integrierte Security-Scans, OIDC-Authentifizierung ohne Kubernetes-Komplexität.","fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab","de-de/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab",[1002,1003,1004],"AI","google","tutorial","BlogPost","HepWYoGeH-Ar_ZEzrhAx3ZABaYthxfPsymsx7YvyM2s",{"logo":1008,"freeTrial":1013,"sales":1018,"login":1023,"items":1028,"search":1357,"minimal":1391,"duo":1409,"switchNav":1418,"pricingDeployment":1429},{"config":1009},{"href":1010,"dataGaName":1011,"dataGaLocation":1012},"/de-de/","gitlab logo","header",{"text":1014,"config":1015},"Kostenlose Testversion anfordern",{"href":1016,"dataGaName":1017,"dataGaLocation":1012},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":1019,"config":1020},"Demo anfordern",{"href":1021,"dataGaName":1022,"dataGaLocation":1012},"/de-de/sales/?contact-topic=request-demo","sales",{"text":1024,"config":1025},"Anmelden",{"href":1026,"dataGaName":1027,"dataGaLocation":1012},"https://gitlab.com/users/sign_in/","sign in",[1029,1058,1160,1165,1279,1335],{"text":1030,"config":1031,"menu":1033},"Plattform",{"dataNavLevelOne":1032},"platform",{"type":1034,"columns":1035},"cards",[1036,1042,1050],{"title":1030,"description":1037,"link":1038},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":1039,"config":1040},"Die Plattform erkunden",{"href":1041,"dataGaName":1032,"dataGaLocation":1012},"/de-de/platform/",{"title":1043,"description":1044,"link":1045},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":1046,"config":1047},"Lerne GitLab Duo kennen",{"href":1048,"dataGaName":1049,"dataGaLocation":1012},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1051,"description":1052,"link":1053},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":1054,"config":1055},"Mehr erfahren",{"href":1056,"dataGaName":1057,"dataGaLocation":1012},"/de-de/why-gitlab/","why gitlab",{"text":1059,"left":301,"config":1060,"menu":1062},"Produkt",{"dataNavLevelOne":1061},"solutions",{"type":1063,"link":1064,"columns":1068,"feature":1139},"lists",{"text":1065,"config":1066},"Alle Lösungen anzeigen",{"href":1067,"dataGaName":1061,"dataGaLocation":1012},"/de-de/solutions/",[1069,1094,1117],{"title":1070,"description":1071,"link":1072,"items":1077},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":1073},{"icon":1074,"href":1075,"dataGaName":1076,"dataGaLocation":1012},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[1078,1082,1085,1090],{"text":1079,"config":1080},"CI/CD",{"href":1081,"dataGaLocation":1012,"dataGaName":1079},"/de-de/solutions/continuous-integration/",{"text":1043,"config":1083},{"href":1048,"dataGaLocation":1012,"dataGaName":1084},"gitlab duo agent platform - product menu",{"text":1086,"config":1087},"Quellcodeverwaltung",{"href":1088,"dataGaLocation":1012,"dataGaName":1089},"/de-de/solutions/source-code-management/","Source Code Management",{"text":1091,"config":1092},"Automatische Softwarebereitstellung",{"href":1075,"dataGaLocation":1012,"dataGaName":1093},"Automated software delivery",{"title":1095,"description":1096,"link":1097,"items":1102},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":1098},{"href":1099,"dataGaName":1100,"dataGaLocation":1012,"icon":1101},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1103,1107,1112],{"text":1104,"config":1105},"Anwendungssicherheitstests",{"href":1099,"dataGaName":1106,"dataGaLocation":1012},"Application security testing",{"text":1108,"config":1109},"Schutz der Software-Lieferkette",{"href":1110,"dataGaLocation":1012,"dataGaName":1111},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":1113,"config":1114},"Software-Compliance",{"href":1115,"dataGaName":1116,"dataGaLocation":1012},"/de-de/solutions/software-compliance/","software compliance",{"title":1118,"link":1119,"items":1124},"Messung",{"config":1120},{"icon":1121,"href":1122,"dataGaName":1123,"dataGaLocation":1012},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[1125,1129,1134],{"text":1126,"config":1127},"Sichtbarkeit und Messung",{"href":1122,"dataGaLocation":1012,"dataGaName":1128},"Visibility and Measurement",{"text":1130,"config":1131},"Wertstrommanagement",{"href":1132,"dataGaLocation":1012,"dataGaName":1133},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":1135,"config":1136},"Analysen und Einblicke",{"href":1137,"dataGaLocation":1012,"dataGaName":1138},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":1140,"type":1063,"items":1141},"GitLab für",[1142,1148,1154],{"text":1143,"config":1144},"Enterprise",{"icon":1145,"href":1146,"dataGaLocation":1012,"dataGaName":1147},"Building","/de-de/enterprise/","enterprise",{"text":1149,"config":1150},"Kleinunternehmen",{"icon":1151,"href":1152,"dataGaLocation":1012,"dataGaName":1153},"Work","/de-de/small-business/","small business",{"text":1155,"config":1156},"Öffentlicher Sektor",{"icon":1157,"href":1158,"dataGaLocation":1012,"dataGaName":1159},"Organization","/de-de/solutions/public-sector/","public sector",{"text":1161,"config":1162},"Preise",{"href":1163,"dataGaName":1164,"dataGaLocation":1012,"dataNavLevelOne":1164},"/de-de/pricing/","pricing",{"text":1166,"config":1167,"menu":1169},"Ressourcen",{"dataNavLevelOne":1168},"resources",{"type":1063,"link":1170,"columns":1174,"feature":1268},{"text":1171,"config":1172},"Alle Ressourcen anzeigen",{"href":1173,"dataGaName":1168,"dataGaLocation":1012},"/de-de/resources/",[1175,1208,1235],{"title":1176,"items":1177},"Erste Schritte",[1178,1183,1188,1193,1198,1203],{"text":1179,"config":1180},"Installieren",{"href":1181,"dataGaName":1182,"dataGaLocation":1012},"/de-de/install/","install",{"text":1184,"config":1185},"Kurzanleitungen",{"href":1186,"dataGaName":1187,"dataGaLocation":1012},"/de-de/get-started/","quick setup checklists",{"text":1189,"config":1190},"Lernen",{"href":1191,"dataGaLocation":1012,"dataGaName":1192},"https://university.gitlab.com/","learn",{"text":1194,"config":1195},"Produktdokumentation",{"href":1196,"dataGaName":1197,"dataGaLocation":1012},"https://docs.gitlab.com/","product documentation",{"text":1199,"config":1200},"Best-Practice-Videos",{"href":1201,"dataGaName":1202,"dataGaLocation":1012},"/de-de/getting-started-videos/","best practice videos",{"text":1204,"config":1205},"Integrationen",{"href":1206,"dataGaName":1207,"dataGaLocation":1012},"/de-de/integrations/","integrations",{"title":1209,"items":1210},"Entdecken",[1211,1216,1221,1226,1230],{"text":1212,"config":1213},"Kundenerfolge",{"href":1214,"dataGaName":1215,"dataGaLocation":1012},"/de-de/customers/","customer success stories",{"text":1217,"config":1218},"Blog",{"href":1219,"dataGaName":1220,"dataGaLocation":1012},"/de-de/blog/","blog",{"text":1222,"config":1223},"Demo-Hub",{"href":1224,"dataGaName":1225,"dataGaLocation":1012},"/de-de/demo-hub/","demo hub",{"text":1227,"config":1228},"The Source",{"href":1229,"dataGaName":1220,"dataGaLocation":1012},"/de-de/the-source/",{"text":1231,"config":1232},"Remote",{"href":1233,"dataGaName":1234,"dataGaLocation":1012},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1236,"items":1237},"Vernetzen",[1238,1243,1248,1253,1258,1263],{"text":1239,"config":1240},"GitLab-Services",{"href":1241,"dataGaName":1242,"dataGaLocation":1012},"/de-de/services/","services",{"text":1244,"config":1245},"Beitragen",{"href":1246,"dataGaName":1247,"dataGaLocation":1012},"https://contributors.gitlab.com","contribute",{"text":1249,"config":1250},"Community",{"href":1251,"dataGaName":1252,"dataGaLocation":1012},"/community/","community",{"text":1254,"config":1255},"Forum",{"href":1256,"dataGaName":1257,"dataGaLocation":1012},"https://forum.gitlab.com/","forum",{"text":1259,"config":1260},"Veranstaltungen",{"href":1261,"dataGaName":1262,"dataGaLocation":1012},"/events/","events",{"text":1264,"config":1265},"Partner",{"href":1266,"dataGaName":1267,"dataGaLocation":1012},"/de-de/partners/","partners",{"config":1269,"title":1272,"text":1273,"link":1274},{"background":1270,"textColor":1271},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":1275,"config":1276},"Aktuelle Nachrichten",{"href":1277,"dataGaName":1278,"dataGaLocation":1012},"/de-de/whats-new/","whats new",{"text":1280,"config":1281,"menu":1283},"Unternehmen",{"dataNavLevelOne":1282},"company",{"type":1063,"columns":1284},[1285],{"items":1286},[1287,1292,1298,1300,1305,1310,1315,1320,1325,1330],{"text":1288,"config":1289},"Über",{"href":1290,"dataGaName":1291,"dataGaLocation":1012},"/de-de/company/","about",{"text":1293,"config":1294,"footerGa":1297},"Karriere",{"href":1295,"dataGaName":1296,"dataGaLocation":1012},"/jobs/","jobs",{"dataGaName":1296},{"text":1259,"config":1299},{"href":1261,"dataGaName":1262,"dataGaLocation":1012},{"text":1301,"config":1302},"Geschäftsführung",{"href":1303,"dataGaName":1304,"dataGaLocation":1012},"/company/team/e-group/","leadership",{"text":1306,"config":1307},"Handbuch",{"href":1308,"dataGaName":1309,"dataGaLocation":1012},"https://handbook.gitlab.com/","handbook",{"text":1311,"config":1312},"Investor Relations",{"href":1313,"dataGaName":1314,"dataGaLocation":1012},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1316,"config":1317},"Trust Center",{"href":1318,"dataGaName":1319,"dataGaLocation":1012},"/de-de/security/","trust center",{"text":1321,"config":1322},"AI Transparency Center",{"href":1323,"dataGaName":1324,"dataGaLocation":1012},"/de-de/ai-transparency-center/","ai transparency center",{"text":1326,"config":1327},"Newsletter",{"href":1328,"dataGaName":1329,"dataGaLocation":1012},"/company/contact/#contact-forms","newsletter",{"text":1331,"config":1332},"Presse",{"href":1333,"dataGaName":1334,"dataGaLocation":1012},"/press/","press",{"text":1336,"config":1337,"menu":1338},"Kontakt",{"dataNavLevelOne":1282},{"type":1063,"columns":1339},[1340],{"items":1341},[1342,1347,1352],{"text":1343,"config":1344},"Vertrieb kontaktieren",{"href":1345,"dataGaName":1346,"dataGaLocation":1012},"/de-de/sales/","talk to sales",{"text":1348,"config":1349},"Support-Portal",{"href":1350,"dataGaName":1351,"dataGaLocation":1012},"https://support.gitlab.com/hc/en-us","support portal",{"text":1353,"config":1354},"Kundenportal",{"href":1355,"dataGaName":1356,"dataGaLocation":1012},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1358,"login":1359,"suggestions":1366},"Schließen",{"text":1360,"link":1361},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1362,"config":1363},"gitlab.com",{"href":1026,"dataGaName":1364,"dataGaLocation":1365},"search login","search",{"text":1367,"default":1368},"Vorschläge",[1369,1371,1376,1378,1383,1388],{"text":1043,"config":1370},{"href":1048,"dataGaName":1043,"dataGaLocation":1365},{"text":1372,"config":1373},"Codevorschläge (KI)",{"href":1374,"dataGaName":1375,"dataGaLocation":1365},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1079,"config":1377},{"href":1081,"dataGaName":1079,"dataGaLocation":1365},{"text":1379,"config":1380},"GitLab auf AWS",{"href":1381,"dataGaName":1382,"dataGaLocation":1365},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1384,"config":1385},"GitLab auf Google Cloud",{"href":1386,"dataGaName":1387,"dataGaLocation":1365},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1051,"config":1389},{"href":1056,"dataGaName":1390,"dataGaLocation":1365},"Why GitLab?",{"freeTrial":1392,"mobileIcon":1397,"desktopIcon":1402,"secondaryButton":1405},{"text":1393,"config":1394},"Kostenlos testen",{"href":1395,"dataGaName":1017,"dataGaLocation":1396},"https://gitlab.com/-/trials/new/","nav",{"altText":1398,"config":1399},"GitLab-Symbol",{"src":1400,"dataGaName":1401,"dataGaLocation":1396},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1398,"config":1403},{"src":1404,"dataGaName":1401,"dataGaLocation":1396},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1176,"config":1406},{"href":1407,"dataGaName":1408,"dataGaLocation":1396},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1410,"mobileIcon":1414,"desktopIcon":1416},{"text":1411,"config":1412},"Mehr über GitLab Duo erfahren",{"href":1048,"dataGaName":1413,"dataGaLocation":1396},"gitlab duo",{"altText":1398,"config":1415},{"src":1400,"dataGaName":1401,"dataGaLocation":1396},{"altText":1398,"config":1417},{"src":1404,"dataGaName":1401,"dataGaLocation":1396},{"button":1419,"mobileIcon":1424,"desktopIcon":1426},{"text":1420,"config":1421},"/Option",{"href":1422,"dataGaName":1423,"dataGaLocation":1396},"#contact","switch",{"altText":1398,"config":1425},{"src":1400,"dataGaName":1401,"dataGaLocation":1396},{"altText":1398,"config":1427},{"src":1428,"dataGaName":1401,"dataGaLocation":1396},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1430,"mobileIcon":1435,"desktopIcon":1437},{"text":1431,"config":1432},"Zurück zur Preisübersicht",{"href":1163,"dataGaName":1433,"dataGaLocation":1396,"icon":1434},"back to pricing","GoBack",{"altText":1398,"config":1436},{"src":1400,"dataGaName":1401,"dataGaLocation":1396},{"altText":1398,"config":1438},{"src":1404,"dataGaName":1401,"dataGaLocation":1396},{"title":1440,"button":1441,"config":1445},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":1054,"config":1442},{"href":1443,"dataGaName":1444,"dataGaLocation":1012},"/de-de/gitlab-orbit/","orbit",{"layout":1446,"disabled":993},"release",{"data":1448},{"text":1449,"source":1450,"edit":1456,"contribute":1461,"config":1466,"items":1471,"minimal":1677},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1451,"config":1452},"Quelltext der Seite anzeigen",{"href":1453,"dataGaName":1454,"dataGaLocation":1455},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1457,"config":1458},"Diese Seite bearbeiten",{"href":1459,"dataGaName":1460,"dataGaLocation":1455},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1462,"config":1463},"Beteilige dich",{"href":1464,"dataGaName":1465,"dataGaLocation":1455},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1467,"facebook":1468,"youtube":1469,"linkedin":1470},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1472,1517,1570,1612,1644],{"title":1161,"links":1473,"subMenu":1488},[1474,1478,1483],{"text":1475,"config":1476},"Tarife anzeigen",{"href":1163,"dataGaName":1477,"dataGaLocation":1455},"view plans",{"text":1479,"config":1480},"Vorteile von Premium",{"href":1481,"dataGaName":1482,"dataGaLocation":1455},"/de-de/pricing/premium/","why premium",{"text":1484,"config":1485},"Vorteile von Ultimate",{"href":1486,"dataGaName":1487,"dataGaLocation":1455},"/de-de/pricing/ultimate/","why ultimate",[1489],{"title":1336,"links":1490},[1491,1493,1495,1497,1502,1507,1512],{"text":1343,"config":1492},{"href":1345,"dataGaName":1022,"dataGaLocation":1455},{"text":1348,"config":1494},{"href":1350,"dataGaName":1351,"dataGaLocation":1455},{"text":1353,"config":1496},{"href":1355,"dataGaName":1356,"dataGaLocation":1455},{"text":1498,"config":1499},"Status",{"href":1500,"dataGaName":1501,"dataGaLocation":1455},"https://status.gitlab.com/","status",{"text":1503,"config":1504},"Nutzungsbedingungen",{"href":1505,"dataGaName":1506,"dataGaLocation":1455},"/terms/","terms of use",{"text":1508,"config":1509},"Datenschutzerklärung",{"href":1510,"dataGaName":1511,"dataGaLocation":1455},"/de-de/privacy/","privacy statement",{"text":1513,"config":1514},"Cookie-Einstellungen",{"dataGaName":1515,"dataGaLocation":1455,"id":1516,"isOneTrustButton":301},"cookie preferences","ot-sdk-btn",{"title":1059,"links":1518,"subMenu":1527},[1519,1523],{"text":1520,"config":1521},"DevSecOps-Plattform",{"href":1041,"dataGaName":1522,"dataGaLocation":1455},"devsecops platform",{"text":1524,"config":1525},"KI-unterstützte Entwicklung",{"href":1048,"dataGaName":1526,"dataGaLocation":1455},"ai-assisted development",[1528],{"title":1529,"links":1530},"Themen",[1531,1535,1540,1545,1550,1555,1560,1565],{"text":1079,"config":1532},{"href":1533,"dataGaName":1534,"dataGaLocation":1455},"/de-de/topics/ci-cd/","cicd",{"text":1536,"config":1537},"GitOps",{"href":1538,"dataGaName":1539,"dataGaLocation":1455},"/de-de/topics/gitops/","gitops",{"text":1541,"config":1542},"DevOps",{"href":1543,"dataGaName":1544,"dataGaLocation":1455},"/de-de/topics/devops/","devops",{"text":1546,"config":1547},"Versionskontrolle",{"href":1548,"dataGaName":1549,"dataGaLocation":1455},"/de-de/topics/version-control/","version control",{"text":1551,"config":1552},"DevSecOps",{"href":1553,"dataGaName":1554,"dataGaLocation":1455},"/de-de/topics/devsecops/","devsecops",{"text":1556,"config":1557},"Cloud-nativ",{"href":1558,"dataGaName":1559,"dataGaLocation":1455},"/de-de/topics/cloud-native/","cloud native",{"text":1561,"config":1562},"KI für das Programmieren",{"href":1563,"dataGaName":1564,"dataGaLocation":1455},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1566,"config":1567},"Agentische KI",{"href":1568,"dataGaName":1569,"dataGaLocation":1455},"/de-de/topics/agentic-ai/","agentic ai",{"title":1571,"links":1572},"Lösungen",[1573,1576,1578,1583,1587,1590,1593,1596,1598,1600,1602,1607],{"text":1104,"config":1574},{"href":1099,"dataGaName":1575,"dataGaLocation":1455},"Application Security Testing",{"text":1091,"config":1577},{"href":1075,"dataGaName":1076,"dataGaLocation":1455},{"text":1579,"config":1580},"Agile Entwicklung",{"href":1581,"dataGaName":1582,"dataGaLocation":1455},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1584,"config":1585},"SCM",{"href":1088,"dataGaName":1586,"dataGaLocation":1455},"source code management",{"text":1079,"config":1588},{"href":1081,"dataGaName":1589,"dataGaLocation":1455},"continuous integration & delivery",{"text":1130,"config":1591},{"href":1132,"dataGaName":1592,"dataGaLocation":1455},"value stream management",{"text":1536,"config":1594},{"href":1595,"dataGaName":1539,"dataGaLocation":1455},"/de-de/solutions/gitops/",{"text":1143,"config":1597},{"href":1146,"dataGaName":1147,"dataGaLocation":1455},{"text":1149,"config":1599},{"href":1152,"dataGaName":1153,"dataGaLocation":1455},{"text":1155,"config":1601},{"href":1158,"dataGaName":1159,"dataGaLocation":1455},{"text":1603,"config":1604},"Bildungswesen",{"href":1605,"dataGaName":1606,"dataGaLocation":1455},"/de-de/solutions/education/","education",{"text":1608,"config":1609},"Finanzdienstleistungen",{"href":1610,"dataGaName":1611,"dataGaLocation":1455},"/de-de/solutions/finance/","financial services",{"title":1166,"links":1613},[1614,1616,1618,1620,1623,1625,1628,1630,1632,1634,1636,1638,1640,1642],{"text":1179,"config":1615},{"href":1181,"dataGaName":1182,"dataGaLocation":1455},{"text":1184,"config":1617},{"href":1186,"dataGaName":1187,"dataGaLocation":1455},{"text":1189,"config":1619},{"href":1191,"dataGaName":1192,"dataGaLocation":1455},{"text":1194,"config":1621},{"href":1196,"dataGaName":1622,"dataGaLocation":1455},"docs",{"text":1217,"config":1624},{"href":1219,"dataGaName":1220,"dataGaLocation":1455},{"text":1626,"config":1627},"Neuerungen",{"href":1277,"dataGaName":1278,"dataGaLocation":1455},{"text":1212,"config":1629},{"href":1214,"dataGaName":1215,"dataGaLocation":1455},{"text":1231,"config":1631},{"href":1233,"dataGaName":1234,"dataGaLocation":1455},{"text":1239,"config":1633},{"href":1241,"dataGaName":1242,"dataGaLocation":1455},{"text":1244,"config":1635},{"href":1246,"dataGaName":1247,"dataGaLocation":1455},{"text":1249,"config":1637},{"href":1251,"dataGaName":1252,"dataGaLocation":1455},{"text":1254,"config":1639},{"href":1256,"dataGaName":1257,"dataGaLocation":1455},{"text":1259,"config":1641},{"href":1261,"dataGaName":1262,"dataGaLocation":1455},{"text":1264,"config":1643},{"href":1266,"dataGaName":1267,"dataGaLocation":1455},{"title":1280,"links":1645},[1646,1648,1650,1652,1654,1656,1661,1666,1668,1670,1672],{"text":1288,"config":1647},{"href":1290,"dataGaName":1282,"dataGaLocation":1455},{"text":1293,"config":1649},{"href":1295,"dataGaName":1296,"dataGaLocation":1455},{"text":1301,"config":1651},{"href":1303,"dataGaName":1304,"dataGaLocation":1455},{"text":1306,"config":1653},{"href":1308,"dataGaName":1309,"dataGaLocation":1455},{"text":1311,"config":1655},{"href":1313,"dataGaName":1314,"dataGaLocation":1455},{"text":1657,"config":1658},"Nachhaltigkeit",{"href":1659,"dataGaName":1660,"dataGaLocation":1455},"/sustainability/","Sustainability",{"text":1662,"config":1663},"Vielfalt, Inklusion und Zugehörigkeit",{"href":1664,"dataGaName":1665,"dataGaLocation":1455},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1316,"config":1667},{"href":1318,"dataGaName":1319,"dataGaLocation":1455},{"text":1326,"config":1669},{"href":1328,"dataGaName":1329,"dataGaLocation":1455},{"text":1331,"config":1671},{"href":1333,"dataGaName":1334,"dataGaLocation":1455},{"text":1673,"config":1674},"Transparenzerklärung zu moderner Sklaverei",{"href":1675,"dataGaName":1676,"dataGaLocation":1455},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1678},[1679,1682,1685],{"text":1680,"config":1681},"Terms",{"href":1505,"dataGaName":1506,"dataGaLocation":1455},{"text":1683,"config":1684},"Cookies",{"dataGaName":1515,"dataGaLocation":1455,"id":1516,"isOneTrustButton":301},{"text":1686,"config":1687},"Datenschutz",{"href":1510,"dataGaName":1511,"dataGaLocation":1455},[1689],{"id":1690,"title":7,"body":992,"config":1691,"content":1693,"description":992,"extension":1697,"meta":1698,"navigation":301,"path":1699,"seo":1700,"stem":1701,"__hash__":1702},"blogAuthors/en-us/blog/authors/regnard-raquedan.yml",{"template":1692},"BlogAuthor",{"name":7,"config":1694},{"headshot":1695,"ctfId":1696},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663118/Blog/Author%20Headshots/regnard_raquedan_headshot.png","rraquedan","yml",{},"/en-us/blog/authors/regnard-raquedan",{},"en-us/blog/authors/regnard-raquedan","1JCF9gTeSA0OaLWrorCsz7_b5_2A2kagAMVhH8r4NcM",[1704,1712,1720],{"title":1705,"description":1706,"heroImage":1707,"category":988,"date":1708,"authors":1709,"slug":1711,"externalUrl":992},"Wie ich einen Demo-Generator mit Duo Agent Platform baute","So sahen Demos nicht immer aus. Ein Rückblick auf ihre Entwicklung, plus ein Tutorial zum Bau einer eigenen Demo und eines eigenen Agenten.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-08-13",[1710],"Itzik Gan Baruch","agentic-click-through-demo",{"title":1713,"description":1714,"heroImage":1715,"category":988,"date":1716,"authors":1717,"slug":1719,"externalUrl":992},"Governance für agentische KI, MCPs und KI-Code-Assistenten","KI-Agenten schreiben, pushen und deployen, ohne dass jeder Schritt geprüft wird. Ein praktisches Framework für Zugriff, Berechtigungen und Audit-Trails.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785337625/ifzlc2hyzaxhzmjgyymh.png","2026-07-31",[1718],"Julie Griffin","govern-agentic-ai-mcps-code-assistants",{"title":1721,"description":1722,"heroImage":1723,"category":988,"date":1724,"authors":1725,"slug":1727,"externalUrl":992},"Claude Opus 5 auf GitLab: Reasoning für die anspruchsvollsten Aufgaben","Anthropics Claude Opus 5 ist jetzt auf der GitLab Duo Agent Platform verfügbar und bringt tieferes Reasoning für die anspruchsvollsten Aufgaben.","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-07-27",[1726],"Brittany Lutz","claude-opus-5-on-gitlab-duo-agent-platform",{"promotions":1729},[1730,1743,1755,1767],{"id":1731,"categories":1732,"header":1733,"text":1734,"button":1735,"image":1740},"ai-modernization",[988],"Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":1736,"config":1737},"Ermittle deinen KI-Reifegrad",{"href":1738,"dataGaName":1739,"dataGaLocation":1220},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":1741},{"src":1742},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1744,"categories":1745,"header":1747,"text":1734,"button":1748,"image":1752},"devops-modernization",[1746,1554],"product","Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":1749,"config":1750},"Ermittle deinen DevOps-Reifegrad",{"href":1751,"dataGaName":1739,"dataGaLocation":1220},"/de-de/assessments/devops-modernization-assessment/",{"config":1753},{"src":1754},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1756,"categories":1757,"header":1759,"text":1734,"button":1760,"image":1764},"security-modernization",[1758],"security","Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":1761,"config":1762},"Ermittle deinen Sicherheitsreifegrad",{"href":1763,"dataGaName":1739,"dataGaLocation":1220},"/de-de/assessments/security-modernization-assessment/",{"config":1765},{"src":1766},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1768,"paths":1769,"header":1772,"text":1773,"button":1774,"image":1779},"github-azure-migration",[1770,1771],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Ist dein Team bereit für den Umzug von GitHub nach Azure?","GitHub stellt bereits auf Azure um. Finde heraus, was das für dich bedeutet.",{"text":1775,"config":1776},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":1777,"dataGaName":1778,"dataGaLocation":1220},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1780},{"src":1754},{"header":1782,"blurb":1783,"button":1784,"secondaryButton":1789},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":1785,"config":1786},"Kostenlosen Test starten",{"href":1787,"dataGaName":1017,"dataGaLocation":1788},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1343,"config":1790},{"href":1345,"dataGaName":1022,"dataGaLocation":1788},1786803756002]