From baeebafadc81910776b94e7126532268e61aa0b0 Mon Sep 17 00:00:00 2001 From: Daniel Farrell Date: Thu, 10 Aug 2023 15:36:54 -0400 Subject: [PATCH] Add OVN IC CI Fixes: submariner-io/enhancements#209 Signed-off-by: Daniel Farrell --- .github/workflows/testing.yml | 5 +++- Makefile | 6 +++- Makefile.inc | 1 + scripts/shared/lib/clusters_kind | 49 ++++++++++++++++++++++++++------ 4 files changed, 50 insertions(+), 11 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index a89583769..efc1f18c4 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -122,8 +122,11 @@ jobs: lighthouse: lighthouse - extra-toggles: air-gap ovn: ovn + - extra-toggles: air-gap + ovn: ovn-ic - extra-toggles: dual-stack - extra-toggles: ovn + - extra-toggles: ovn-ic - deploytool: operator extra-toggles: lighthouse - deploytool: helm @@ -132,7 +135,7 @@ jobs: - extra-toggles: prometheus steps: - name: Reclaim space on GHA host (if the job needs it) - if: ${{ matrix.ovn != '' }} + if: ${{ matrix.ovn != '' }} || ${{ matrix.ovn-ic != '' }} run: rm -rf /usr/share/dotnet - name: Check out the repository diff --git a/Makefile b/Makefile index e9711c52c..2aeeebfbb 100644 --- a/Makefile +++ b/Makefile @@ -13,12 +13,16 @@ ifneq (,$(DAPPER_HOST_ARCH)) # Running in Dapper -ifneq (,$(filter ovn,$(USING))) +ifneq (,$(filter ovn%,$(USING))) SETTINGS ?= $(DAPPER_SOURCE)/.shipyard.e2e.ovn.yml else SETTINGS ?= $(DAPPER_SOURCE)/.shipyard.e2e.yml endif +ifneq (,$(filter ovn-ic,$(USING))) +export OVN_IC = true +endif + export LAZY_DEPLOY = false scale: SETTINGS = $(DAPPER_SOURCE)/.shipyard.scale.yml diff --git a/Makefile.inc b/Makefile.inc index 282bba60b..eda620098 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -148,6 +148,7 @@ override PRELOAD_IMAGES += submariner-globalnet endif ifneq (,$(shell grep -w ovn $(SETTINGS))) override PRELOAD_IMAGES += submariner-networkplugin-syncer +# TODO Peload OVN IC image for air-gapped endif ifeq ($(LIGHTHOUSE),true) override PRELOAD_IMAGES += lighthouse-agent lighthouse-coredns diff --git a/scripts/shared/lib/clusters_kind b/scripts/shared/lib/clusters_kind index a5507b1f1..484b37b33 100755 --- a/scripts/shared/lib/clusters_kind +++ b/scripts/shared/lib/clusters_kind @@ -191,18 +191,13 @@ EOF } function deploy_kind_ovn(){ - local OVN_SRC_IMAGE="ghcr.io/ovn-org/ovn-kubernetes/ovn-kube-f:master" export K8s_VERSION="${K8S_VERSION}" export NET_CIDR_IPV4="${cluster_CIDRs[${cluster}]}" export SVC_CIDR_IPV4="${service_CIDRs[${cluster}]}" export KIND_CLUSTER_NAME="${cluster}" - export OVN_IMAGE="localhost:5000/ovn-daemonset-f:latest" - docker pull "${OVN_SRC_IMAGE}" - docker tag "${OVN_SRC_IMAGE}" "${OVN_IMAGE}" - docker push "${OVN_IMAGE}" - - delete_cluster_on_fail ./ovn-kubernetes/contrib/kind.sh -ov "$OVN_IMAGE" -cn "${KIND_CLUSTER_NAME}" -ric -lr -dd "${KIND_CLUSTER_NAME}.local" + [[ "$OVN_IC" = true ]] && delete_cluster_on_fail ./ovn-kubernetes/contrib/kind.sh -ov "$OVN_IMAGE" -cn "${KIND_CLUSTER_NAME}" -ric -ic -npz 1 -wk 3 -lr -dd "${KIND_CLUSTER_NAME}.local" + [[ "$OVN_IC" != true ]] && delete_cluster_on_fail ./ovn-kubernetes/contrib/kind.sh -ov "$OVN_IMAGE" -cn "${KIND_CLUSTER_NAME}" -ric -lr -dd "${KIND_CLUSTER_NAME}.local" [[ "$AIR_GAPPED" = true ]] && air_gap_iptables } @@ -247,7 +242,7 @@ function provider_failed() { # ovn-kubernetes repo from master in order to access the required # kind scripts, and manifest generation templates. function download_ovnk() { - echo "Cloning ovn-kubernetes from source" + echo "Cloning ovn-kubernetes source" mkdir -p ovn-kubernetes # We only need the contrib directory, use a sparse checkout ( @@ -264,11 +259,47 @@ function download_ovnk() { ) } +function prepare_ovn_ic() { + echo "Building ovn-kubernetes with interconnect (OVN-IC) from source" + rm -rf ovn-kubernetes || true + git clone https://github.com/ovn-org/ovn-kubernetes + pushd ovn-kubernetes || exit + + pushd go-controller || exit + make + popd || exit + + cp go-controller/_output/go/bin/* dist/images + + pushd dist/images || exit + echo "ref: $(git rev-parse --symbolic-full-name HEAD) commit: $(git rev-parse HEAD)" > git_info + docker build -t "${OVN_IMAGE}" -f Dockerfile.fedora . + docker push "${OVN_IMAGE}" + popd || exit + + popd || exit +} + +function prepare_ovn() { + export OVN_IMAGE="localhost:5000/ovn-daemonset-f:latest" + + if [[ "$OVN_IC" = true ]]; then + prepare_ovn_ic + else + download_ovnk + + local OVN_SRC_IMAGE="ghcr.io/ovn-org/ovn-kubernetes/ovn-kube-f:master" + docker pull "${OVN_SRC_IMAGE}" + docker tag "${OVN_SRC_IMAGE}" "${OVN_IMAGE}" + docker push "${OVN_IMAGE}" + fi +} + function provider_prepare() { [[ -z "${K8S_VERSION}" ]] && K8S_VERSION="${DEFAULT_K8S_VERSION}" [[ -n "${kind_k8s_versions[$K8S_VERSION]}" ]] && K8S_VERSION="${kind_k8s_versions[$K8S_VERSION]}" download_kind - [[ "${cluster_cni[*]}" != *"ovn"* ]] || download_ovnk run_local_registry + [[ "${cluster_cni[*]}" = *"ovn"* ]] && prepare_ovn }