Skip to content

WIP single IP k3s deployments - DO NOT MERGE#1671

Open
scottmbaker wants to merge 2 commits intomainfrom
single-ip
Open

WIP single IP k3s deployments - DO NOT MERGE#1671
scottmbaker wants to merge 2 commits intomainfrom
single-ip

Conversation

@scottmbaker
Copy link
Copy Markdown
Contributor

Description

Standard on-prem deployments require three IP addresses for MetalLB LoadBalancer services. This is impractical for Coder VMs and other constrained environments that only have a single IP. Single-IP mode removes this barrier by assigning each service a unique port on the shared IP.

  • Preserve full compatibility with existing multiple IP address deployments. This is the default.
  • Add single-IP deployment mode for on-prem K3s installations. Instead of requiring three separate IPs for ArgoCD, Traefik, and HAProxy, operators can set ORCH_IP in onprem.env to share a single IP across all three services on different ports (443, 8443, 9443).
  • Fix tinkerbell provisioning URLs to include the HAProxy port in single-IP mode, so PXE boot works correctly via iDRAC/iPXE.
  • Fix ORCH_NO_PROXY documentation to include Kubernetes-internal DNS suffixes required for proxy environments.
  • Increase K3s max-pods to 500 and add a node registration wait loop to improve install reliability.
  • Switch metallb-config to the upstream orch-utils chart (v26.1.0) which now supports single-IP pool creation.

Fixes # (issue)

Any Newly Introduced Dependencies

Please describe any newly introduced 3rd party dependencies in this change. List their name, license information and how they are used in the project.

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

Checklist:

  • I agree to use the APACHE-2.0 license for my code changes
  • I have not introduced any 3rd party dependency changes
  • I have performed a self-review of my code

scottmbaker and others added 2 commits April 3, 2026 11:38
Allow deploying Edge Orchestrator with a single IP address shared across
ArgoCD (8443), Traefik (443), and HAProxy (9443) using MetalLB
allow-shared-ip annotations. This enables deployment on environments with
limited IP addresses such as Coder VMs.

Changes:
- post-orch-install.sh: accept ORCH_IP in non-interactive mode, add ArgoCD
  shared-IP annotations
- pre-orch-install.sh: increase max-pods to 500, add node registration
  wait loop
- onprem.env: add ORCH_IP variable and proxy documentation
- cluster_onprem.tpl: add singleIpMode and haproxyPort values
- generate_cluster_yaml.sh: correct Helm value paths for ArgoCD and
  HAProxy ports, export HAPROXY_PORT for envsubst
- infra-onboarding.tpl: conditionally append haproxyPort to tinkerbell
  provisioning URLs
- metallb-config.yaml: switch to upstream orch-utils chart (v26.1.0) with
  single-IP pool support
- SINGLE-IP-POC.md: deployment instructions and documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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