Skip to content

Deploy releases/k8s-manifests b1bc3cf#151

Merged
themightychris merged 8 commits into
deploys/k8s-manifestsfrom
releases/k8s-manifests
May 18, 2026
Merged

Deploy releases/k8s-manifests b1bc3cf#151
themightychris merged 8 commits into
deploys/k8s-manifestsfrom
releases/k8s-manifests

Conversation

@github-actions
Copy link
Copy Markdown

@github-actions github-actions Bot commented May 18, 2026

kubectl diff reports that applying b1bc3cf will change:

diff -uN /tmp/LIVE-2313019722/batch.v1.Job.envoy-gateway-system.envoy-gateway-gateway-helm-certgen /tmp/MERGED-710635894/batch.v1.Job.envoy-gateway-system.envoy-gateway-gateway-helm-certgen
--- /tmp/LIVE-2313019722/batch.v1.Job.envoy-gateway-system.envoy-gateway-gateway-helm-certgen	2026-05-18 02:17:19.737416402 +0000
+++ /tmp/MERGED-710635894/batch.v1.Job.envoy-gateway-system.envoy-gateway-gateway-helm-certgen	2026-05-18 02:17:19.747416404 +0000
@@ -1 +1,70 @@
-{}
+apiVersion: batch/v1
+kind: Job
+metadata:
+  annotations:
+    helm.sh/hook: pre-install, pre-upgrade
+  labels:
+    app.kubernetes.io/instance: envoy-gateway
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: gateway-helm
+    app.kubernetes.io/version: v1.7.3
+    helm.sh/chart: gateway-helm-v1.7.3
+  name: envoy-gateway-gateway-helm-certgen
+  namespace: envoy-gateway-system
+spec:
+  backoffLimit: 1
+  completionMode: NonIndexed
+  completions: 1
+  manualSelector: false
+  parallelism: 1
+  podReplacementPolicy: TerminatingOrFailed
+  selector:
+    matchLabels:
+      batch.kubernetes.io/controller-uid: e4c009bd-9583-4e53-b94c-3d27dd216933
+  suspend: false
+  template:
+    metadata:
+      creationTimestamp: null
+      labels:
+        app: certgen
+        batch.kubernetes.io/controller-uid: e4c009bd-9583-4e53-b94c-3d27dd216933
+        batch.kubernetes.io/job-name: envoy-gateway-gateway-helm-certgen
+        controller-uid: e4c009bd-9583-4e53-b94c-3d27dd216933
+        job-name: envoy-gateway-gateway-helm-certgen
+    spec:
+      containers:
+      - command:
+        - envoy-gateway
+        - certgen
+        env:
+        - name: ENVOY_GATEWAY_NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        - name: KUBERNETES_CLUSTER_DOMAIN
+          value: cluster.local
+        image: docker.io/envoyproxy/gateway:v1.7.3
+        imagePullPolicy: IfNotPresent
+        name: envoy-gateway-certgen
+        securityContext:
+          allowPrivilegeEscalation: false
+          capabilities:
+            drop:
+            - ALL
+          privileged: false
+          readOnlyRootFilesystem: true
+          runAsGroup: 65532
+          runAsNonRoot: true
+          runAsUser: 65532
+          seccompProfile:
+            type: RuntimeDefault
+        terminationMessagePath: /dev/termination-log
+        terminationMessagePolicy: File
+      dnsPolicy: ClusterFirst
+      restartPolicy: Never
+      schedulerName: default-scheduler
+      serviceAccount: envoy-gateway-gateway-helm-certgen
+      serviceAccountName: envoy-gateway-gateway-helm-certgen
+      terminationGracePeriodSeconds: 30
+  ttlSecondsAfterFinished: 30

themightychris and others added 8 commits May 17, 2026 21:38
Adopts a convention: top-level directories under the workspace root use
the `_` prefix when they hold infrastructure / glue / admin manifests
that aren't tied to a single workload. Workloads stay bare:

  balancer/                  ← workload (project deploys its own)
  _infra/                    ← cluster-level infrastructure (this rename)

Renames `infra/` → `_infra/` and the matching `.holo/branches/k8s-manifests/infra/`
path. The .holo path rename doesn't affect deployed output (k8s-normalize
routes by resource namespace, not workspace path) but keeps the two
parallel for readability.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitOps-ifies what's currently live on the cluster from earlier kubectl
applies (now byte-identical to these files), plus adds the central pile
of HTTPRoutes that recover services broken by the wildcard DNS flip to
the Envoy LB.

Bones (`_infra/envoy-gateway/`):
- `gatewayclass.yaml` — GatewayClass `eg` referencing the EnvoyProxy
- `envoyproxy.yaml`   — `mergeGateways: true` so all Gateways using `eg`
  share one Envoy data-plane Deployment + one LoadBalancer (cost flat
  regardless of Gateway count, mirroring ingress-nginx's model)
- `main-gateway.yaml` — one Gateway with an HTTP catchall listener,
  `allowedRoutes.namespaces.from: All` so HTTPRoutes in any namespace
  can attach

Central HTTPRoutes (`_httproutes/`):
- One file per app, each `HTTPRoute` lives in its app's own namespace
  (not co-located with the Gateway — k8s-normalize routes by resource
  namespace at deploy time, workspace organization is purely visual)
- 14 HTTPRoutes for every Ingress host on `*.sandbox.k8s.phl.io`
- Each `parentRefs` the central `main-gateway`; each `backendRefs` the
  app's existing Service in the same namespace (no ReferenceGrants
  needed)

This is phase 1+2 of the ingress-nginx → Envoy migration: HTTP-only
recovery. Phase 3 adds per-hostname HTTPS listeners on `main-gateway`
with cert-manager-issued certs and cross-namespace cert Secret refs.

When a project ships its own HTTPRoute in their own repo (e.g.,
balancer-main, paws-data-pipeline), the corresponding file in this
central pile gets deleted in the same PR that bumps the project's
source ref.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nd-httproutes

feat(envoy-gateway): GitOps the gateway bones + central HTTPRoute pile
Source-holobranch: k8s-manifests-github
Source-commit: a27f206
Source: a27f206
These pr-* environments haven't been deployed in years (pods are running
on stale images, no project is updating them). Removing their entries
from the central pile rather than perpetuating zombie traffic routes
through the new Envoy gateway.

Cluster-side helm releases for pr-63 / pr-80 / pr-100 (code-for-philly)
and pr-220 (laddr) will be uninstalled separately to clean up the
remaining Deployments, Services, Ingresses, Certificates, and Secrets.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Source-holobranch: k8s-manifests-github
Source-commit: 8760db9
Source: 8760db9
@github-actions github-actions Bot changed the title Deploy releases/k8s-manifests 9642e9e Deploy releases/k8s-manifests b1bc3cf May 18, 2026
@themightychris themightychris merged commit 658cc9e into deploys/k8s-manifests May 18, 2026
1 check passed
@github-actions
Copy link
Copy Markdown
Author

kubectl apply output (excluding unchanged) for 658cc9e was:

customresourcedefinition.apiextensions.k8s.io/backends.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/backendtlspolicies.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/backendtrafficpolicies.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/backups.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/clienttrafficpolicies.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/clusterimagecatalogs.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/clusters.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/databases.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/envoyextensionpolicies.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/envoypatchpolicies.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/envoyproxies.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/failoverquorums.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/gatewayclasses.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/gateways.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/httproutefilters.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/httproutes.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/imagecatalogs.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/listenersets.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/poolers.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/publications.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/referencegrants.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/scheduledbackups.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/sealedsecrets.bitnami.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/securitypolicies.gateway.envoyproxy.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/subscriptions.postgresql.cnpg.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/tlsroutes.gateway.networking.k8s.io serverside-applied
clusterrole.rbac.authorization.k8s.io/envoy-gateway-gateway-helm-envoy-gateway-role configured
clusterrole.rbac.authorization.k8s.io/grafana-clusterrole configured
clusterrole.rbac.authorization.k8s.io/prometheus-alertmanager configured
clusterrole.rbac.authorization.k8s.io/prometheus-pushgateway configured
clusterrolebinding.rbac.authorization.k8s.io/sealed-secrets configured
mutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook configured
mutatingwebhookconfiguration.admissionregistration.k8s.io/cnpg-mutating-webhook-configuration configured
mutatingwebhookconfiguration.admissionregistration.k8s.io/envoy-gateway-topology-injector.envoy-gateway-system configured
validatingadmissionpolicy.admissionregistration.k8s.io/safe-upgrades.gateway.networking.k8s.io configured
validatingadmissionpolicybinding.admissionregistration.k8s.io/safe-upgrades.gateway.networking.k8s.io configured
validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook configured
validatingwebhookconfiguration.admissionregistration.k8s.io/cnpg-validating-webhook-configuration configured
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission configured
secret/regcred created
deployment.apps/choose-native-plants configured
httproute.gateway.networking.k8s.io/choose-native-plants configured
cluster.postgresql.cnpg.io/shared-cluster configured
configmap/cnpg-controller-manager-config configured
httproute.gateway.networking.k8s.io/latest configured
httproute.gateway.networking.k8s.io/codeforphilly configured
statefulset.apps/data-warehouse-postgresql configured
httproute.gateway.networking.k8s.io/echo-http configured
deployment.apps/envoy-gateway configured
job.batch/envoy-gateway-gateway-helm-certgen created
configmap/grafana-dashboards-default configured
deployment.apps/grafana configured
httproute.gateway.networking.k8s.io/grafana configured
deployment.apps/ingress-nginx-controller configured
deployment.apps/metrics-server configured
httproute.gateway.networking.k8s.io/latest configured
secret/promtail configured
statefulset.apps/loki configured
httproute.gateway.networking.k8s.io/metabase configured
statefulset.apps/database configured
httproute.gateway.networking.k8s.io/paws-data-pipeline configured
httproute.gateway.networking.k8s.io/prevention-point configured
deployment.apps/prometheus-alertmanager configured
deployment.apps/prometheus-kube-state-metrics configured
deployment.apps/prometheus-pushgateway configured
deployment.apps/prometheus-server configured
serviceaccount/prometheus-kube-state-metrics configured
deployment.apps/sealed-secrets configured
httproute.gateway.networking.k8s.io/sealed-secrets configured
rolebinding.rbac.authorization.k8s.io/sealed-secrets-key-admin configured
service/sealed-secrets configured

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant