# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. apiVersion: v1 kind: Namespace metadata: name: agent-sandbox --- apiVersion: v1 kind: ServiceAccount metadata: name: adk-agent-sa namespace: agent-sandbox --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: adk-agent-role namespace: agent-sandbox rules: - apiGroups: ["batch"] resources: ["jobs"] # create: Needed for _batch_v1.create_namespaced_job(). # watch: Needed for watch.stream(self._batch_v1.list_namespaced_job, ...) to wait for completion # list/get: Required for the watch to initialize and to get job details. verbs: ["create", "get", "watch", "list", "delete"] - apiGroups: [""] resources: ["configmaps"] # create: Needed mount the agent's code into the Job's Pod. # delete: Needed for cleanup in the finally block verbs: ["create", "get", "list", "delete"] - apiGroups: [""] resources: ["pods"] # list: Needed to find the correct Pod _core_v1.list_namespaced_pod(label_selector=...) verbs: ["get", "list", "delete"] - apiGroups: [""] # get: Needed for _core_v1.read_namespaced_pod_log() to get the code execution results and logs. resources: ["pods/log"] verbs: ["get", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: adk-agent-binding namespace: agent-sandbox subjects: - kind: ServiceAccount name: adk-agent-sa namespace: agent-sandbox roleRef: kind: Role name: adk-agent-role apiGroup: rbac.authorization.k8s.io