mirror of
https://github.com/sredevopsorg/deepseek-kubernetes-sandbox.git
synced 2026-11-03 01:13:24 +00:00
* feat(repo)!: restructure around the dsh-harness image and one example per implementation
- the root Dockerfile is the primary artifact; versions.env is the single source of truth
- merge gateway-api/dsh-demo into examples/dsh-agents-as-a-service (manifests/, exposure variants)
- move the single-tenant template into examples/minimal-single-tenant
- publish the gateway as a nested package under the repository image
- mirror the DSH ref for release identities (first release dsh-v0.2.1-rc.2-r2)
- CI: lint/python/manifests/gateway-image, reusable multi-arch build, tag-driven release, weekly e2e
- docs: README, docs/{main-image,examples,gitflow,versioning}, example READMEs, AGENTS.md, governance
- SSO is opt-in again; gateway pull policy and cookie defaults match the documented demo
BREAKING CHANGE: example manifest paths, the gateway image name, and the removal
of deploy/ and gateway-api/ affect existing deployments; see the migration table
in README.md.
* docs(changelog): generate initial changelog from history
* fix(scripts): make set-version update Dockerfile and sample revision pins
* build(hadolint): document intentional lint exceptions for the main image
---------
Co-authored-by: SREDevOpsAgents <agents@sredevops.org>
135 lines
4.5 KiB
YAML
135 lines
4.5 KiB
YAML
# oauth2-proxy — GitHub OAuth login in front of the dsh-gateway.
|
|
#
|
|
# Runs as a reverse proxy: it authenticates the browser against GitHub
|
|
# (restricted to a configured organization), then forwards the request to
|
|
# the dsh-gateway Service with the authenticated identity in X-Forwarded-User
|
|
# (plus X-Auth-Request-* via --set-xauthrequest). The gateway trusts that
|
|
# header only when AUTH_PROXY_HEADER is set on its Deployment.
|
|
#
|
|
# ENABLING SSO TAKES BOTH SIDES (see ../../../exposure/README.md):
|
|
# 1. Set AUTH_PROXY_HEADER=X-Forwarded-User on deploy/dsh-gateway, otherwise
|
|
# the gateway ignores the header and the login is cosmetic:
|
|
# kubectl -n dsh-demo set env deploy/dsh-gateway \
|
|
# AUTH_PROXY_HEADER=X-Forwarded-User COOKIE_SECURE=true
|
|
# 2. Make dsh-gateway reachable ONLY through this proxy: keep the Service
|
|
# ClusterIP, route browser traffic through 71-httproute.yaml, and do not
|
|
# apply ../ingress/ (or anything else that reaches the gateway). A
|
|
# client that can reach dsh-gateway:8080 can spoof X-Forwarded-User and
|
|
# impersonate any user.
|
|
# TLS terminates at the Gateway listener (70-gateway.yaml); keep
|
|
# --cookie-secure=true and COOKIE_SECURE=true on the gateway.
|
|
#
|
|
# The image is pinned to quay.io/oauth2-proxy/oauth2-proxy:v7.15.5
|
|
# (versions.env: OAUTH2_PROXY_IMAGE). Credentials come from the
|
|
# "oauth2-proxy" Secret (see 73-oauth2-proxy-secret.yaml.example); this
|
|
# manifest never carries secrets.
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: oauth2-proxy
|
|
namespace: dsh-demo
|
|
labels:
|
|
app: oauth2-proxy
|
|
app.kubernetes.io/part-of: dsh-demo
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: oauth2-proxy
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: oauth2-proxy
|
|
app.kubernetes.io/part-of: dsh-demo
|
|
spec:
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
runAsUser: 2000
|
|
runAsGroup: 2000
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
containers:
|
|
- name: oauth2-proxy
|
|
image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.5
|
|
imagePullPolicy: IfNotPresent
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
readOnlyRootFilesystem: true
|
|
capabilities:
|
|
drop: ["ALL"]
|
|
args:
|
|
- --http-address=0.0.0.0:4180
|
|
- --provider=github
|
|
# TODO: replace with the GitHub organization allowed to sign in.
|
|
- --github-org=your-github-org
|
|
- --email-domain=*
|
|
# Reverse-proxy target: the gateway backend Service.
|
|
- --upstream=http://dsh-gateway:8080
|
|
# Public callback (TLS terminates at the Gateway listener).
|
|
# TODO: replace with the actual public FQDN.
|
|
- --redirect-url=https://dsh-demo.example.com/oauth2/callback
|
|
- --cookie-secure=true
|
|
- --cookie-name=_oauth2_proxy
|
|
# Also expose X-Auth-Request-User/Email/Groups upstream.
|
|
- --set-xauthrequest
|
|
# Single provider: skip the provider-selection page.
|
|
- --skip-provider-button
|
|
env:
|
|
- name: OAUTH2_PROXY_CLIENT_ID
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: oauth2-proxy
|
|
key: client-id
|
|
- name: OAUTH2_PROXY_CLIENT_SECRET
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: oauth2-proxy
|
|
key: client-secret
|
|
- name: OAUTH2_PROXY_COOKIE_SECRET
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: oauth2-proxy
|
|
key: cookie-secret
|
|
ports:
|
|
- name: http
|
|
containerPort: 4180
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /ping
|
|
port: http
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 10
|
|
timeoutSeconds: 1
|
|
failureThreshold: 3
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /ready
|
|
port: http
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 10
|
|
timeoutSeconds: 5
|
|
failureThreshold: 3
|
|
resources:
|
|
requests:
|
|
cpu: 10m
|
|
memory: 32Mi
|
|
limits:
|
|
cpu: 200m
|
|
memory: 128Mi
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: oauth2-proxy
|
|
namespace: dsh-demo
|
|
labels:
|
|
app: oauth2-proxy
|
|
app.kubernetes.io/part-of: dsh-demo
|
|
spec:
|
|
selector:
|
|
app: oauth2-proxy
|
|
ports:
|
|
- name: http
|
|
port: 4180
|
|
targetPort: http
|