Skip to content

Commit f46a430

Browse files
authored
ci: Parameterize CNS image repository (#2280)
ci: Parameterize CNS image repo
1 parent 5866205 commit f46a430

File tree

4 files changed

+36
-24
lines changed

4 files changed

+36
-24
lines changed

.pipelines/cni/cilium/cilium-overlay-load-test-template.yaml

+7-11
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ stages:
3030
- stage: ${{ parameters.name }}
3131
variables:
3232
commitID: $[ stagedependencies.setup.env.outputs['SetEnvVars.commitID'] ]
33+
cnsVersion: $[ stagedependencies.setup.env.outputs['SetEnvVars.cnsVersion'] ]
34+
dropgzVersion: $[ stagedependencies.setup.env.outputs['SetEnvVars.dropgzVersion'] ]
3335
pool:
3436
name: "$(BUILD_POOL_NAME_DEFAULT)"
3537
dependsOn:
@@ -54,24 +56,18 @@ stages:
5456
pwd
5557
kubectl cluster-info
5658
kubectl get po -owide -A
57-
echo "Deploy Azure-CNS"
58-
kubectl apply -f test/integration/manifests/cilium/cns-write-ovly.yaml
59+
5960
echo "deploy Cilium ConfigMap"
6061
kubectl apply -f cilium/configmap.yaml
6162
kubectl apply -f test/integration/manifests/cilium/cilium-config.yaml
62-
echo "install Cilium onto Overlay Cluster"
63-
kubectl apply -f test/integration/manifests/cilium/cilium-agent
64-
kubectl apply -f test/integration/manifests/cilium/cilium-operator
63+
echo "install Cilium ${CILIUM_VERSION_TAG} onto Overlay Cluster"
6564
# Passes Cilium image to daemonset and deployment
6665
envsubst '${CILIUM_VERSION_TAG},${CILIUM_IMAGE_REGISTRY}' < test/integration/manifests/cilium/daemonset.yaml | kubectl apply -f -
6766
envsubst '${CILIUM_VERSION_TAG},${CILIUM_IMAGE_REGISTRY}' < test/integration/manifests/cilium/deployment.yaml | kubectl apply -f -
6867
kubectl get po -owide -A
69-
echo "deploy ip-masq-agent for overlay"
70-
kubectl create -f test/integration/manifests/ip-masq-agent/ip-masq-agent.yaml --validate=false
71-
cd test/integration/manifests/ip-masq-agent/
72-
kubectl create configmap config-custom.yaml
73-
kubectl create configmap config-reconcile.yaml
74-
cd ../../../..
68+
69+
echo "Deploy Azure-CNS"
70+
sudo -E env "PATH=$PATH" make test-integration CNS_VERSION=$(cnsVersion) CNI_DROPGZ_VERSION=$(dropgzVersion) INSTALL_CNS=true INSTALL_OVERLAY=true TEST_DROPGZ=${{ parameters.testDropgz }} CNS_IMAGE_REPO=$(CNS_IMAGE_REPO)
7571
kubectl get po -owide -A
7672
- job: deploy_pods
7773
displayName: "Scale Test"

.pipelines/cni/singletenancy/linux-cniv2-template.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ stages:
6666
make -C ./hack/aks set-kubeconf AZCLI=az CLUSTER=${{ parameters.clusterName }}-$(commitID)
6767
kubectl cluster-info
6868
kubectl get po -owide -A
69-
sudo -E env "PATH=$PATH" make test-integration CNS_VERSION=$(cnsVersion) CNI_DROPGZ_VERSION=$(dropgzVersion) INSTALL_CNS=true INSTALL_AZURE_CNI_OVERLAY=true TEST_DROPGZ=${{ parameters.testDropgz }}
69+
sudo -E env "PATH=$PATH" make test-integration CNS_VERSION=$(cnsVersion) CNI_DROPGZ_VERSION=$(dropgzVersion) INSTALL_CNS=true INSTALL_AZURE_CNI_OVERLAY=true TEST_DROPGZ=${{ parameters.testDropgz }} CNS_IMAGE_REPO=$(CNS_IMAGE_REPO)
7070
name: "overlaye2e"
7171
displayName: "Overlay Integration"
7272
- ${{ if contains(parameters.clusterType, 'swift') }}:
@@ -81,7 +81,7 @@ stages:
8181
make -C ./hack/aks set-kubeconf AZCLI=az CLUSTER=${{ parameters.clusterName }}-$(commitID)
8282
kubectl cluster-info
8383
kubectl get po -owide -A
84-
sudo -E env "PATH=$PATH" make test-integration CNS_VERSION=$(cnsVersion) CNI_DROPGZ_VERSION=$(dropgzVersion) INSTALL_CNS=true INSTALL_AZURE_VNET=true TEST_DROPGZ=${{ parameters.testDropgz }}
84+
sudo -E env "PATH=$PATH" make test-integration CNS_VERSION=$(cnsVersion) CNI_DROPGZ_VERSION=$(dropgzVersion) INSTALL_CNS=true INSTALL_AZURE_VNET=true TEST_DROPGZ=${{ parameters.testDropgz }} CNS_IMAGE_REPO=$(CNS_IMAGE_REPO)
8585
name: "swifte2e"
8686
displayName: "Swift Integration"
8787
- template: ../../npm/npm-cni-integration-test.yaml

test/internal/kubernetes/utils.go

+8-5
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,16 @@ func MustSetupConfigMap(ctx context.Context, clientset *kubernetes.Clientset, co
152152

153153
func Int32ToPtr(i int32) *int32 { return &i }
154154

155-
func ParseImageString(s string) (image, version string) {
156-
sl := strings.Split(s, ":")
157-
return sl[0], sl[1]
155+
func ParseImageString(s string) (url, image, version string) {
156+
s1 := strings.Split(s, ":")
157+
s2 := s1[0]
158+
index := strings.LastIndex(s2, "/") // Returns byte location
159+
160+
return s2[:index], s2[index:], s1[1]
158161
}
159162

160-
func GetImageString(image, version string) string {
161-
return image + ":" + version
163+
func GetImageString(url, image, version string) string {
164+
return url + image + ":" + version
162165
}
163166

164167
func WaitForPodsRunning(ctx context.Context, clientset *kubernetes.Clientset, namespace, labelselector string) error {

test/internal/kubernetes/utils_create.go

+19-6
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,19 @@ const (
5151
envTestDropgz = "TEST_DROPGZ"
5252
envCNIDropgzVersion = "CNI_DROPGZ_VERSION"
5353
envCNSVersion = "CNS_VERSION"
54+
envCNSImageRepo = "CNS_IMAGE_REPO"
5455
EnvInstallCNS = "INSTALL_CNS"
5556
cnsLinuxLabelSelector = "k8s-app=azure-cns"
5657
cnsWindowsLabelSelector = "k8s-app=azure-cns-win"
58+
acnImageRepoURL = "acnpublic.azurecr.io"
59+
mcrImageRepoURL = "mcr.microsoft.com/containernetworking"
5760
)
5861

62+
var imageRepoURL = map[string]string{
63+
"ACN": acnImageRepoURL,
64+
"MCR": mcrImageRepoURL,
65+
}
66+
5967
var (
6068
ErrUnsupportedCNSScenario = errors.New("unsupported CNS scenario")
6169
ErrPathNotFound = errors.New("failed to get the absolute path to directory")
@@ -517,9 +525,14 @@ func parseCNSDaemonset(cnsVersion, cniDropgzVersion string,
517525
}
518526

519527
cns := MustParseDaemonSet(cnsScenarioDetails.daemonsetPath)
528+
_, image, _ := ParseImageString(cns.Spec.Template.Spec.Containers[0].Image)
529+
url, key := imageRepoURL[os.Getenv(string(envCNSImageRepo))]
530+
if !key {
531+
log.Printf("%s not set to expected value \"ACN\", \"MCR\". Default to %s", envCNSImageRepo, imageRepoURL["ACN"])
532+
url = imageRepoURL["ACN"]
533+
}
520534

521-
image, _ := ParseImageString(cns.Spec.Template.Spec.Containers[0].Image)
522-
cns.Spec.Template.Spec.Containers[0].Image = GetImageString(image, cnsVersion)
535+
cns.Spec.Template.Spec.Containers[0].Image = GetImageString(url, image, cnsVersion)
523536

524537
log.Printf("Checking environment scenario")
525538
cns = loadDropgzImage(cns, cniDropgzVersion)
@@ -546,12 +559,12 @@ func loadDropgzImage(cns appsv1.DaemonSet, dropgzVersion string) appsv1.DaemonSe
546559
installFlag := os.Getenv(envTestDropgz)
547560
if testDropgzScenario, err := strconv.ParseBool(installFlag); err == nil && testDropgzScenario {
548561
log.Printf("Env %v set to true, deploy cniTest.Dockerfile", envTestDropgz)
549-
initImage, _ := ParseImageString("acnpublic.azurecr.io/cni-dropgz-test:latest")
550-
cns.Spec.Template.Spec.InitContainers[0].Image = GetImageString(initImage, dropgzVersion)
562+
url, initImage, _ := ParseImageString("acnpublic.azurecr.io/cni-dropgz-test:latest")
563+
cns.Spec.Template.Spec.InitContainers[0].Image = GetImageString(url, initImage, dropgzVersion)
551564
} else {
552565
log.Printf("Env %v not set to true, deploying cni.Dockerfile", envTestDropgz)
553-
initImage, _ := ParseImageString(cns.Spec.Template.Spec.InitContainers[0].Image)
554-
cns.Spec.Template.Spec.InitContainers[0].Image = GetImageString(initImage, dropgzVersion)
566+
url, initImage, _ := ParseImageString(cns.Spec.Template.Spec.InitContainers[0].Image)
567+
cns.Spec.Template.Spec.InitContainers[0].Image = GetImageString(url, initImage, dropgzVersion)
555568
}
556569
return cns
557570
}

0 commit comments

Comments
 (0)