Files
docs/apps/base-docs/k8s/base-platform.yaml
1e0f2f9bc6 docs: delete the object-store documentation that was never ours
content/docs/projects/hanzoai/s3/ held 218 files of another project's server
documentation, published under our name at /docs/projects/hanzoai/s3: 11 MB,
23 Go files carrying AGPL-3.0 headers, and five go.mod files declaring that
project's module path. Its own meta.json lists exactly one page, `index`, so
none of it was reachable from the nav either -- a snapshot nobody navigated to
and nobody had read since it landed. What stays is the two-file placeholder
every repo without docs gets, so the route still resolves.

The rest is small and first-party: a table row, a retention sentence, a vendor
list, and S3_ENDPOINT in base-platform.yaml, which named a Service that exists
in no namespace -- our object store answers on s3.hanzo.svc:9000.

The two redirect source paths in public/_redirects keep the old spelling on
purpose. They are the URLs the deleted pages were published at, so they have
to match to catch an old link; the comment above them now says what the object
store is instead of what it is not.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-19 21:07:54 -07:00

141 lines
3.5 KiB
YAML

# Multi-tenant Base platform deployment
# This runs Base with the platform plugin enabled
# IAM auth via hanzo.id, KMS secrets via kms.hanzo.ai
apiVersion: apps/v1
kind: Deployment
metadata:
name: base-platform
namespace: hanzo
spec:
replicas: 3
selector:
matchLabels:
app: base-platform
template:
metadata:
labels:
app: base-platform
spec:
imagePullSecrets:
- name: ghcr-secret
containers:
- name: base
image: ghcr.io/hanzoai/base:0.52.3
imagePullPolicy: Always
ports:
- containerPort: 8090
name: api
env:
- name: BASE_ADMIN_EMAIL
valueFrom:
secretKeyRef:
name: base-platform-secrets
key: ADMIN_EMAIL
- name: BASE_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: base-platform-secrets
key: ADMIN_PASSWORD
- name: IAM_URL
value: "https://hanzo.id"
- name: IAM_CLIENT_ID
valueFrom:
secretKeyRef:
name: base-platform-secrets
key: IAM_CLIENT_ID
- name: IAM_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: base-platform-secrets
key: IAM_CLIENT_SECRET
- name: KMS_URL
value: "https://kms.hanzo.ai"
- name: KMS_UNIVERSAL_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: base-platform-secrets
key: KMS_TOKEN
- name: S3_ENDPOINT
value: "http://s3.hanzo.svc:9000"
- name: S3_BUCKET
value: "base-files"
- name: PLATFORM_ENABLED
value: "true"
volumeMounts:
- name: data
mountPath: /app/hz_data
readinessProbe:
httpGet:
# Root /healthz — independent of BASE_API_PREFIX.
# The API-group twin is /v1/health.
path: /healthz
port: 8090
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz
port: 8090
initialDelaySeconds: 10
periodSeconds: 30
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: "2"
memory: 2Gi
volumes:
- name: data
persistentVolumeClaim:
claimName: base-platform-data
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: base-platform-data
namespace: hanzo
spec:
accessModes:
- ReadWriteOnce
storageClassName: do-block-storage
resources:
requests:
storage: 50Gi
---
apiVersion: v1
kind: Service
metadata:
name: base-platform
namespace: hanzo
spec:
selector:
app: base-platform
ports:
- port: 8090
targetPort: 8090
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: base-platform
namespace: hanzo
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- api.base.hanzo.ai
secretName: api-base-hanzo-ai-tls
rules:
- host: api.base.hanzo.ai
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: base-platform
port:
number: 8090