remora/tests/kind/deployment/qualification-ingress.yaml.in
ms2k 414b380516 Harden WebBFF and deployment release behavior
Model fail-closed cross-replica session renewal and implement owner-fenced refresh, transient observer handling, logout fencing, and graceful shutdown. Remove chart-owned Ingress while retaining qualification-owned external routing.
2026-07-20 17:09:26 +09:00

195 lines
5 KiB
YAML

apiVersion: v1
kind: ServiceAccount
metadata:
name: qualification-ingress
namespace: remora-testbed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: qualification-ingress
namespace: remora-testbed
rules:
- apiGroups: [""]
resources: [configmaps, pods, secrets, endpoints]
verbs: [get, list, watch]
- apiGroups: [""]
resources: [services]
verbs: [get, list, watch]
- apiGroups: [networking.k8s.io]
resources: [ingresses, ingressclasses]
verbs: [get, list, watch]
- apiGroups: [networking.k8s.io]
resources: [ingresses/status]
verbs: [update]
- apiGroups: [coordination.k8s.io]
resources: [leases]
verbs: [get, create, update]
- apiGroups: [""]
resources: [events]
verbs: [create, patch]
- apiGroups: [discovery.k8s.io]
resources: [endpointslices]
verbs: [get, list, watch]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: remora-qualification-ingress
rules:
- apiGroups: [""]
resources: [configmaps, endpoints, nodes, pods, secrets, namespaces]
verbs: [list, watch]
- apiGroups: [""]
resources: [nodes]
verbs: [get]
- apiGroups: [""]
resources: [services]
verbs: [get, list, watch]
- apiGroups: [networking.k8s.io]
resources: [ingresses, ingressclasses]
verbs: [get, list, watch]
- apiGroups: [networking.k8s.io]
resources: [ingresses/status]
verbs: [update]
- apiGroups: [coordination.k8s.io]
resources: [leases]
verbs: [list, watch]
- apiGroups: [""]
resources: [events]
verbs: [create, patch]
- apiGroups: [discovery.k8s.io]
resources: [endpointslices]
verbs: [get, list, watch]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: qualification-ingress
namespace: remora-testbed
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: qualification-ingress
subjects:
- kind: ServiceAccount
name: qualification-ingress
namespace: remora-testbed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: remora-qualification-ingress
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: remora-qualification-ingress
subjects:
- kind: ServiceAccount
name: qualification-ingress
namespace: remora-testbed
---
apiVersion: v1
kind: ConfigMap
metadata:
name: qualification-ingress
namespace: remora-testbed
---
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: qualification-nginx
spec:
controller: remora.dev/qualification-ingress
---
apiVersion: v1
kind: Service
metadata:
name: qualification-ingress
namespace: remora-testbed
spec:
selector:
app.kubernetes.io/name: qualification-ingress
ports:
- {name: http, port: 80, targetPort: http}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qualification-ingress
namespace: remora-testbed
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: qualification-ingress
template:
metadata:
labels:
app.kubernetes.io/name: qualification-ingress
spec:
serviceAccountName: qualification-ingress
containers:
- name: controller
image: @@INGRESS_IMAGE@@
imagePullPolicy: Never
args:
- /nginx-ingress-controller
- --election-id=qualification-ingress
- --controller-class=remora.dev/qualification-ingress
- --ingress-class=qualification-nginx
- --configmap=$(POD_NAMESPACE)/qualification-ingress
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- {name: LD_PRELOAD, value: /usr/local/lib/libmimalloc.so}
ports:
- {name: http, containerPort: 80}
readinessProbe:
httpGet: {path: /healthz, port: 10254}
initialDelaySeconds: 5
periodSeconds: 2
resources:
requests: {cpu: 100m, memory: 90Mi}
limits: {cpu: "1", memory: 256Mi}
securityContext:
allowPrivilegeEscalation: false
capabilities:
add: [NET_BIND_SERVICE]
drop: [ALL]
runAsGroup: 82
runAsNonRoot: true
runAsUser: 101
seccompProfile: {type: RuntimeDefault}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qualification-remora-route
namespace: remora-testbed
spec:
ingressClassName: qualification-nginx
rules:
- host: qualification-ingress
http:
paths:
- path: /v1
pathType: Prefix
backend:
service:
name: remora-remora
port:
name: http
- path: /
pathType: Prefix
backend:
service:
name: remora-remora-web
port:
name: http