Skip to content

Conversation

@electricjesus
Copy link
Member

@electricjesus electricjesus commented Dec 19, 2025

Description

  • Adds build infrastructure for Istio components: ztunnel, pilot, install-cni, and proxyv2 - Includes Semaphore CI/CD pipelines and Dockerfiles
  • Cherry-picked from enterprise repo

Related issues/PRs

Todos

  • Tests
  • Documentation
  • Release note

Release Note

added istio image build infrastructure

Reminder for the reviewer

Make sure that this PR has the correct labels and milestone set.

Every PR needs one docs-* label.

  • docs-pr-required: This change requires a change to the documentation that has not been completed yet.
  • docs-completed: This change has all necessary documentation completed.
  • docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

  • release-note-required: This PR has user-facing changes. Most PRs should have this label.
  • release-note-not-required: This PR has no user-facing changes.

Other optional labels:

  • cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
  • needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

Copilot AI review requested due to automatic review settings December 19, 2025 08:27
@electricjesus electricjesus requested a review from a team as a code owner December 19, 2025 08:27
@marvin-tigera marvin-tigera added this to the Calico v3.32.0 milestone Dec 19, 2025
@marvin-tigera marvin-tigera added release-note-required Change has user-facing impact (no matter how small) docs-pr-required Change is not yet documented labels Dec 19, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds comprehensive build infrastructure for Istio components to support Calico's integration with Istio ambient mesh. It introduces build systems for four Istio components (ztunnel, pilot, install-cni, and proxyv2) along with CI/CD pipelines and necessary patches for transparent network policy support.

Key Changes

  • Introduces Rust build infrastructure for ztunnel compilation with Calico-specific patches
  • Adds build targets and Dockerfiles for four Istio components: ztunnel, pilot-discovery, install-cni, and proxyv2
  • Implements Semaphore CI/CD pipelines for building, testing, and publishing Istio images across multiple architectures

Reviewed changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
metadata.mk Adds Rust build version and UBI10 base image support
lib.Makefile Introduces Rust Docker build environment and third-party image retagging infrastructure
third_party/istio-ztunnel/Makefile Complete build system for ztunnel component with source download, patching, and image creation
third_party/istio-ztunnel/Dockerfile Minimal container packaging for ztunnel binary with required runtime libraries
third_party/istio-ztunnel/patches/0001-transparent-policies.patch Patch adding transparent network policy support to ztunnel
istio/Makefile Build orchestration for Istio pilot, CNI, and proxy components with multi-arch support
istio/Dockerfile-* Dockerfiles for pilot, install-cni, proxyv2, and ztunnel images
istio/patches/*.patch Patches for DSCP magic mark support and dependency updates
istio/deps.txt Dependency tracking for CI triggers
.semaphore/*.yml CI/CD pipeline definitions for building and publishing Istio images


# istio-install-cni image
$(ISTIO_CNI_IMAGE): $(ISTIO_CNI_IMAGE_CREATED)
$(ISTIO_CNI_IMAGE_CREATED): register Dockerfile-install-cni bin/install-cni-$(ARCH) bin/istio-cni-$(ARCH) bin/LICENSE
Copy link

Copilot AI Dec 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The dependency register appears to be undefined. This is likely a typo or missing target definition. Verify whether this should be a defined phony target or if it should be removed from the dependency list.

Copilot uses AI. Check for mistakes.
@electricjesus electricjesus force-pushed the pick-istio-images-builds-components-from-private branch from e2f366e to 4a3a877 Compare December 19, 2025 12:25
hjiawei and others added 13 commits December 23, 2025 09:51
…-istio--ztunnel

feat(third_party): ztunnel component with ci/cd:
Cherry-picked from tigera/calico-private PR projectcalico#10291

This adds:
- istio/ directory with Dockerfile-cni, Dockerfile-pilot, Dockerfile-ztunnel
- istio/Makefile for building Istio components
- SemaphoreCI pipeline for building and pushing istio images
- Patches for DSCP magic mark support
Cherry-picked from tigera/calico-private PR projectcalico#10321

This adds:
- istio/Dockerfile-proxyv2 for building proxyv2 image
- istio/Dockerfile-install-cni for CNI installation
- Updated Makefile with proxyv2 targets
- Updated semaphore blocks for proxyv2 builds
Cherry-picked from tigera/calico-private PR projectcalico#10343

This updates:
- Istio version to 1.28.1
- Patches for DSCP magic mark support
- Dependencies updates
Cherry-picked from tigera/calico-private PR projectcalico#10362
Cherry-picked from tigera/calico-private PR projectcalico#10378
Cherry-picked from tigera/calico-private PR projectcalico#10381
The bin/LICENSE rule was failing in CI because the bin/ directory
did not exist when building istio-ztunnel (which has no binary build
dependency that would create the directory first).
@electricjesus electricjesus force-pushed the pick-istio-images-builds-components-from-private branch 2 times, most recently from 9c9cb74 to fc62620 Compare December 23, 2025 10:33
@electricjesus electricjesus force-pushed the pick-istio-images-builds-components-from-private branch from fc62620 to 39bb4fb Compare December 23, 2025 11:51
- Add DOCKER_BUILD_THIRD_PARTY macro to lib.Makefile
- Add CALICO_BASE_UBI10 variable and build-arg support
- Update CALICO_BASE_UBI10_VER to use existing image tag
- Remove duplicate 50-istio-ztunnel.yml block
- Export BRANCH_NAME in semaphore blocks for image tagging
- Use docker.io/calico as DEV_REGISTRIES (rely on global docker-hub secret)
- Remove GCR login from Istio block (no longer needed)
- Update Dockerfile-ztunnel to pull from calico/istio-ztunnel:${BRANCH_NAME}
- Update Makefile to pass BRANCH_NAME build arg
- Skip istio-ztunnel image build on PRs (image not in registry yet)
- Remove private registry overrides from third_party/istio-ztunnel/Makefile
@electricjesus electricjesus force-pushed the pick-istio-images-builds-components-from-private branch from a4660bc to effd524 Compare December 23, 2025 15:14
- Remove unused istio/deps.txt file
- Remove cd-third-party-common and retag-third-party-* Makefile targets
- Change istio-ztunnel push registry from GCR/Quay to docker.io/calico
- Rename ZTUNNEL_IMAGE to istio-ztunnel-base to avoid overwriting final image
- Delete duplicate patch file (0001-dscp-magic-mark-for-transparent-policies.patch)
- Fix regex patterns in promotion config (release- -> release-.*)
- Regenerate semaphore.yml and semaphore-scheduled-builds.yml
@electricjesus electricjesus force-pushed the pick-istio-images-builds-components-from-private branch from 448470f to 880feb8 Compare December 24, 2025 10:33
@electricjesus
Copy link
Member Author

thanks @hjiawei ! I addressed your comments. I tried disabling the if [ -z "${SEMAPHORE_GIT_PR_NUMBER}" ]; then make -C third_party/istio-ztunnel cd ARCHES=arm64 CONFIRM=true; fi bit so that I can try if it does push to docker.io/calico, but it doesn't. perhaps the repo path needs to be created first?

@electricjesus electricjesus force-pushed the pick-istio-images-builds-components-from-private branch from 880feb8 to bc23e20 Compare December 24, 2025 10:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-pr-required Change is not yet documented release-note-required Change has user-facing impact (no matter how small)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants