Files
deploy/manifests/base/application-controller-deployment/hanzocd-application-controller-deployment.yaml
zeekayandHanzo Dev 1ab6e799c1 cd: the module is github.com/hanzoai/cd, where it is actually hosted
go.mod still declared `module github.com/hanzoai/deploy` after the repo was
renamed. A Go module path is not cosmetic — it is the resolvable location. So
`go get github.com/hanzoai/cd` could not work, and anything importing this
module had to spell a name that no longer exists at that address. The build log
of v3.6.0 is where it surfaced: the compiler was still emitting
github.com/hanzoai/deploy/cmd/cd/commands.

3541 import paths across 690 .go, 19 .proto, 4 .yaml, 3 .sh, 2 .mod, Procfile
and Makefile. Plus the 62 ghcr.io/hanzoai/deploy image references, moved to
ghcr.io/hanzoai/cd to match hanzo.yml's build target — a distinct string from
the module path, replaced separately so neither could clobber the other.

go mod tidy clean, CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./... clean.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 21:16:24 -07:00

416 lines
14 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: hanzocd-application-controller
app.kubernetes.io/part-of: hanzocd
app.kubernetes.io/component: application-controller
name: hanzocd-application-controller
spec:
selector:
matchLabels:
app.kubernetes.io/name: hanzocd-application-controller
replicas: 1
template:
metadata:
labels:
app.kubernetes.io/name: hanzocd-application-controller
spec:
containers:
- args:
- /usr/local/bin/hanzocd-application-controller
env:
- name: KV_PASSWORD
valueFrom:
secretKeyRef:
key: auth
name: hanzocd-redis
- name: GRPC_ENABLE_TXT_SERVICE_CONFIG
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.grpc.enable.txt.service.config
optional: true
- name: CD_RECONCILIATION_TIMEOUT
valueFrom:
configMapKeyRef:
name: hanzocd-cm
key: timeout.reconciliation
optional: true
- name: CD_HARD_RECONCILIATION_TIMEOUT
valueFrom:
configMapKeyRef:
name: hanzocd-cm
key: timeout.hard.reconciliation
optional: true
- name: CD_RECONCILIATION_JITTER
valueFrom:
configMapKeyRef:
key: timeout.reconciliation.jitter
name: hanzocd-cm
optional: true
- name: CD_REPO_ERROR_GRACE_PERIOD_SECONDS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.repo.error.grace.period.seconds
optional: true
- name: CD_APPLICATION_CONTROLLER_REPO_SERVER
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: repo.server
optional: true
- name: CD_APPLICATION_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.repo.server.timeout.seconds
optional: true
- name: CD_APPLICATION_CONTROLLER_STATUS_PROCESSORS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.status.processors
optional: true
- name: CD_APPLICATION_CONTROLLER_OPERATION_PROCESSORS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.operation.processors
optional: true
- name: CD_APPLICATION_CONTROLLER_HYDRATION_PROCESSORS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.hydration.processors
optional: true
- name: CD_APPLICATION_CONTROLLER_LOGFORMAT
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.log.format
optional: true
- name: CD_APPLICATION_CONTROLLER_LOGLEVEL
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.log.level
optional: true
- name: CD_LOG_FORMAT_TIMESTAMP
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: log.format.timestamp
optional: true
- name: CD_K8S_CLIENT_QPS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8s.client.qps
optional: true
- name: CD_K8S_CLIENT_BURST
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8s.client.burst
optional: true
- name: CD_K8S_CLIENT_MAX_IDLE_CONNECTIONS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8s.client.max.idle.connections
optional: true
- name: CD_K8S_TCP_TIMEOUT
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8s.tcp.timeout
optional: true
- name: CD_K8S_TCP_KEEPALIVE
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8s.tcp.keepalive
optional: true
- name: CD_K8S_TLS_HANDSHAKE_TIMEOUT
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8s.tls.handshake.timeout
optional: true
- name: CD_K8S_TCP_IDLE_TIMEOUT
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8s.tcp.idle.timeout
optional: true
- name: CD_APPLICATION_CONTROLLER_METRICS_CACHE_EXPIRATION
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.metrics.cache.expiration
optional: true
- name: CD_APPLICATION_CONTROLLER_SELF_HEAL_TIMEOUT_SECONDS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.self.heal.timeout.seconds
optional: true
- name: CD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_TIMEOUT_SECONDS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.self.heal.backoff.timeout.seconds
optional: true
- name: CD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_FACTOR
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.self.heal.backoff.factor
optional: true
- name: CD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_CAP_SECONDS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.self.heal.backoff.cap.seconds
optional: true
- name: CD_APPLICATION_CONTROLLER_SELF_HEAL_BACKOFF_COOLDOWN_SECONDS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.self.heal.backoff.cooldown.seconds
optional: true
- name: CD_SYNC_WAVE_DELAY
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.sync.wave.delay.seconds
optional: true
- name: CD_APPLICATION_CONTROLLER_SYNC_TIMEOUT
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.sync.timeout.seconds
optional: true
- name: CD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.repo.server.plaintext
optional: true
- name: CD_APPLICATION_CONTROLLER_REPO_SERVER_STRICT_TLS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.repo.server.strict.tls
optional: true
- name: CD_APPLICATION_CONTROLLER_PERSIST_RESOURCE_HEALTH
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.resource.health.persist
optional: true
- name: CD_APP_STATE_CACHE_EXPIRATION
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.app.state.cache.expiration
optional: true
- name: KV_SERVER
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: redis.server
optional: true
- name: KV_SENTINEL_HOSTS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: redis.sentinel.hosts
optional: true
- name: KV_SENTINEL_MASTER
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: redis.sentinel.master
optional: true
- name: KV_COMPRESSION
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: redis.compression
optional: true
- name: REDISDB
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: redis.db
optional: true
- name: CD_KV_KEY_PREFIX
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: redis.key.prefix
optional: true
- name: CD_DEFAULT_CACHE_EXPIRATION
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.default.cache.expiration
optional: true
- name: CD_APPLICATION_CONTROLLER_OTLP_ADDRESS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: otlp.address
optional: true
- name: CD_APPLICATION_CONTROLLER_OTLP_INSECURE
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: otlp.insecure
optional: true
- name: CD_APPLICATION_CONTROLLER_OTLP_HEADERS
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: otlp.headers
optional: true
- name: CD_APPLICATION_CONTROLLER_OTLP_SAMPLE_RATIO
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: otlp.sample.ratio
optional: true
- name: CD_APPLICATION_NAMESPACES
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: application.namespaces
optional: true
- name: CD_CONTROLLER_SHARDING_ALGORITHM
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.sharding.algorithm
optional: true
- name: CD_APPLICATION_CONTROLLER_KUBECTL_PARALLELISM_LIMIT
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.kubectl.parallelism.limit
optional: true
- name: CD_K8SCLIENT_RETRY_MAX
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8sclient.retry.max
optional: true
- name: CD_K8SCLIENT_RETRY_BASE_BACKOFF
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.k8sclient.retry.base.backoff
optional: true
- name: CD_APPLICATION_CONTROLLER_SERVER_SIDE_DIFF
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.diff.server.side
optional: true
- name: CD_HYDRATOR_ENABLED
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: hydrator.enabled
optional: true
- name: CD_CLUSTER_CACHE_BATCH_EVENTS_PROCESSING
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.cluster.cache.batch.events.processing
optional: true
- name: CD_CLUSTER_CACHE_EVENTS_PROCESSING_INTERVAL
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: controller.cluster.cache.events.processing.interval
optional: true
- name: CD_APPLICATION_CONTROLLER_COMMIT_SERVER
valueFrom:
configMapKeyRef:
name: hanzocd-cmd-params-cm
key: commit.server
optional: true
image: ghcr.io/hanzoai/cd:latest
imagePullPolicy: Always
name: hanzocd-application-controller
ports:
- containerPort: 8082
readinessProbe:
httpGet:
path: /healthz
port: 8082
initialDelaySeconds: 5
periodSeconds: 10
securityContext:
runAsNonRoot: true
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
seccompProfile:
type: RuntimeDefault
workingDir: /home/cd
volumeMounts:
- name: hanzocd-repo-server-tls
mountPath: /app/config/controller/tls
- name: hanzocd-home
mountPath: /home/cd
- name: hanzocd-cmd-params-cm
mountPath: /home/cd/params
serviceAccountName: hanzocd-application-controller
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/name: hanzocd-application-controller
topologyKey: kubernetes.io/hostname
- weight: 5
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/part-of: hanzocd
topologyKey: kubernetes.io/hostname
volumes:
- emptyDir: {}
name: hanzocd-home
- name: hanzocd-repo-server-tls
secret:
secretName: hanzocd-repo-server-tls
optional: true
items:
- key: tls.crt
path: tls.crt
- key: tls.key
path: tls.key
- key: ca.crt
path: ca.crt
- name: hanzocd-cmd-params-cm
configMap:
optional: true
name: hanzocd-cmd-params-cm
items:
- key: controller.profile.enabled
path: profiler.enabled
nodeSelector:
kubernetes.io/os: linux