From 8791fc7bd98a046d46cc84e9f25df158e31220d6 Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Mon, 13 Sep 2021 11:00:24 +0300 Subject: [PATCH] Add e2e test for CRDs+CRs reconciliation using cert-manager Signed-off-by: Stefan Prodan --- .github/workflows/e2e.yaml | 6 +++++ config/testdata/crds-crs/cert-manager.yaml | 31 ++++++++++++++++++++++ controllers/kustomization_controller.go | 9 ++++--- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 config/testdata/crds-crs/cert-manager.yaml diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 86c1da6c6..e25b21590 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -58,6 +58,7 @@ jobs: echo -e "${RESULT}\n\ndoes not equal\n\n${EXPECTED}" exit 1 fi + kubectl delete -f config/testdata/status-defaults - name: Deploy controllers run: | make dev-deploy IMG=test/kustomize-controller:latest @@ -80,6 +81,11 @@ jobs: kubectl -n impersonation wait kustomizations/podinfo --for=condition=ready --timeout=4m kubectl -n impersonation delete kustomizations/podinfo until kubectl -n impersonation get deploy/podinfo 2>&1 | grep NotFound ; do sleep 2; done + - name: Run CRDs + CRs tests + run: | + kubectl -n kustomize-system apply -f ./config/testdata/crds-crs + kubectl -n kustomize-system wait kustomizations/certs --for=condition=ready --timeout=4m + kubectl -n kustomizer-cert-test wait issuers/my-ca-issuer --for=condition=ready --timeout=1m - name: Logs run: | kubectl -n kustomize-system logs deploy/source-controller diff --git a/config/testdata/crds-crs/cert-manager.yaml b/config/testdata/crds-crs/cert-manager.yaml new file mode 100644 index 000000000..db9fd8cad --- /dev/null +++ b/config/testdata/crds-crs/cert-manager.yaml @@ -0,0 +1,31 @@ +apiVersion: source.toolkit.fluxcd.io/v1beta1 +kind: GitRepository +metadata: + name: certs +spec: + interval: 15m + url: https://github.com/stefanprodan/kustomizer + ref: + tag: "v1.1.0" +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: certs +spec: + interval: 10m + path: "./testdata/certs" + prune: true + sourceRef: + kind: GitRepository + name: certs + healthChecks: + - apiVersion: apps/v1 + kind: Deployment + name: cert-manager + namespace: cert-manager + - apiVersion: apps/v1 + kind: Deployment + name: cert-manager-webhook + namespace: cert-manager + timeout: 2m diff --git a/controllers/kustomization_controller.go b/controllers/kustomization_controller.go index 435b8ed14..36b879acf 100644 --- a/controllers/kustomization_controller.go +++ b/controllers/kustomization_controller.go @@ -612,9 +612,12 @@ func (r *KustomizationReconciler) apply(ctx context.Context, manager *ssa.Resour var stageTwo []*unstructured.Unstructured for _, u := range objects { - if manager.IsClusterDefinition(u.GetKind()) { + switch u.GetKind() { + case "CustomResourceDefinition": stageOne = append(stageOne, u) - } else { + case "Namespace": + stageOne = append(stageOne, u) + default: stageTwo = append(stageTwo, u) } } @@ -647,7 +650,7 @@ func (r *KustomizationReconciler) apply(ctx context.Context, manager *ssa.Resour if len(stageTwo) > 0 { changeSet, err := manager.ApplyAll(ctx, stageTwo, kustomization.Spec.Force) if err != nil { - return false, err + return false, fmt.Errorf("%w\n%s", err, changeSetLog.String()) } if changeSet != nil && len(changeSet.Entries) > 0 {