Files
ax/deploy/ax-controller.yaml
Jaana Dogan 0b5427c4bb Remove Gateway concept to avoid bifurcation with Substrate (#395)
Remove the Gateway resource across the API, controller, server, CLI,
store, and documentation.

Gateway introduced an unnecessary layer and architectural bifurcation
between Agent Substrate and AX. By removing it, AX aligns directly with
Substrate's native primitives and networking rather than maintaining an
overlapping ingress/routing abstraction.

- Reserved protobuf field 8 and removed Gateway RPCs and messages.
- Cleaned up controller reconciler, server endpoints, and store models.
- Updated CLI, documentation, and example manifests.
2026-09-24 16:59:45 -07:00

120 lines
3.5 KiB
YAML

# 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: ax-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: ax-controller
namespace: ax-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ax-controller
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: ax-controller
subjects:
- kind: ServiceAccount
name: ax-controller
namespace: ax-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ax-controller
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ax-controller
namespace: ax-system
labels:
app.kubernetes.io/name: ax-controller
app.kubernetes.io/part-of: ax
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: ax-controller
template:
metadata:
labels:
app.kubernetes.io/name: ax-controller
spec:
serviceAccountName: ax-controller
containers:
- name: controller
image: ko://github.com/google/ax/cmd/ax-controller
imagePullPolicy: IfNotPresent
args:
- "--redis-addr=ax-redis.ax-system.svc.cluster.local:6379"
- "--substrate-endpoint=api.ate-system.svc.cluster.local:443"
- "--substrate-authority=api.ate-system.svc"
- "--substrate-token-file=/var/run/secrets/ateapi/token"
- "--substrate-ca-file=/run/servicedns-ca/trust-bundle.pem"
- "--template=default-template"
- "--template-atespace=ax-system"
env:
- name: ATENET_ROUTER_ADDR
value: "atenet-router.ate-system.svc.cluster.local:80"
- name: AX_SNAPSHOTS_BUCKET
value: "gs://dberkov-gke-dev3/ate-env/"
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
volumeMounts:
- mountPath: /var/run/secrets/ateapi
name: ate-token
readOnly: true
- mountPath: /run/servicedns-ca
name: servicedns-ca
readOnly: true
volumes:
- name: ate-token
projected:
defaultMode: 420
sources:
- serviceAccountToken:
audience: api.ate-system.svc
expirationSeconds: 7200
path: token
- name: servicedns-ca
projected:
defaultMode: 420
sources:
- clusterTrustBundle:
labelSelector:
matchLabels:
podcert.ate.dev/canarying: live
path: trust-bundle.pem
signerName: servicedns.podcert.ate.dev/identity