From bb40bb880b2269a96b6c5b04fe831d6b1ecd86df Mon Sep 17 00:00:00 2001 From: Michael Nairn Date: Mon, 23 Oct 2023 09:44:23 +0100 Subject: [PATCH 1/4] feat: DNSProvider secret ref in DNSPolicy Removes the requirement for a ManagedZone to be configured for a host in order for the DNSPolicy to create dns records for it. Make DNSRecord.zoneID optional Set specific allowed values for providerRef.Kind Allow a providerRef.Kind of ManagedZone that looks up zones from Managedzones in the current ns (Current behaviour) and loads dns client through the managed zone providerRef. Add logic around zoneAssignment in dnsPolicy, some providerRef.kinds will result in zoneAssignment being false which indicates that a zone is not going to be looked up or assigned to any created DNSRecords. A DNSRecord will be created for all listeners in this case. Created a v1alpha2 API for DNSPolicy, ManagedZone and DNSRecord. v1alpha1 versions are removed and no longer supported. E2E Test Updates * DO NOT MERGE Add 406_dnspolicy_provider_ref branch for testing * Add e2e test for dnspolicy focused on istio gateways and providers * Add suite id and generate a testDomainName to use for all tests in that instance of the suite (Avoids thigns like wildcard hosts being created that coudl affect all instances of a suite running in teh same hosted zone) * Removed all references to managed zones as input to the e2e test suite. Env vars required now are TEST_DNS_ZONE_DOMAIN_NAME, TEST_DNS_ZONE_ID and TEST_DNS_PROVIDER_SECRET_NAME. ManagedZone updates * Make description optional * fix managedZoneListToZoneList - use range index * Make ID and description pointers * Remove hostedzone prefix from AWS hosted zones * Use status id in managedZoneListToZoneList --- .github/workflows/ci-e2e.yaml | 50 +- bundle/manifests/kuadrant.io_dnspolicies.yaml | 17 +- bundle/manifests/kuadrant.io_dnsrecords.yaml | 17 +- .../manifests/kuadrant.io_managedzones.yaml | 26 +- ...eway-controller.clusterserviceversion.yaml | 12 +- cmd/policy_controller/main.go | 2 + .../controller/aws/managed_zone.yaml | 4 +- .../controller/gcp/managed_zone.yaml | 4 +- .../crd/bases/kuadrant.io_dnspolicies.yaml | 17 +- .../crd/bases/kuadrant.io_dnsrecords.yaml | 17 +- .../crd/bases/kuadrant.io_managedzones.yaml | 26 +- config/samples/dnspolicy.yaml | 2 +- .../kuadrant.io_v1alpha1_dnsrecord-ns.yaml | 22 - .../kuadrant.io_v1alpha1_dnsrecord.yaml | 20 - .../kuadrant.io_v1alpha1_managedzone.yaml | 11 +- ...> kuadrant.io_v1alpha2_dnsrecord-geo.yaml} | 13 +- .../kuadrant.io_v1alpha2_dnsrecord-ns.yaml | 17 + .../kuadrant.io_v1alpha2_dnsrecord.yaml | 15 + hack/.deployUtils | 8 +- pkg/_internal/conditions/conditions_test.go | 6 +- pkg/_internal/policy/policy_test.go | 10 +- pkg/apis/v1alpha1/zz_generated.deepcopy.go | 696 ----------------- .../{v1alpha1 => v1alpha2}/dnspolicy_types.go | 29 +- .../{v1alpha1 => v1alpha2}/dnsrecord_types.go | 16 +- pkg/apis/v1alpha2/groupversion_info.go | 36 + .../managedzone_types.go | 26 +- pkg/apis/v1alpha2/shared_types.go | 39 + pkg/apis/v1alpha2/zz_generated.deepcopy.go | 708 ++++++++++++++++++ .../dnshealthcheckprobe_controller.go | 5 +- pkg/controllers/dnspolicy/dns_helper.go | 109 ++- pkg/controllers/dnspolicy/dns_helper_test.go | 331 ++++---- .../dnspolicy/dnspolicy_controller.go | 13 +- .../dnspolicy/dnspolicy_dnsrecords.go | 88 ++- .../dnspolicy/dnspolicy_healthchecks.go | 11 +- .../dnspolicy/dnspolicy_healthchecks_test.go | 47 +- .../dnsrecord/dnsrecord_controller.go | 72 +- .../managedzone/managedzone_controller.go | 46 +- pkg/dns/aws/dns.go | 143 +++- pkg/dns/aws/health.go | 16 +- pkg/dns/aws/health_test.go | 40 +- pkg/dns/dns.go | 62 +- pkg/dns/dnsprovider/dnsProvider.go | 55 +- pkg/dns/filters.go | 71 ++ pkg/dns/google/google.go | 98 ++- pkg/dns/google/google_test.go | 56 +- pkg/dns/health.go | 16 +- pkg/dns/target.go | 13 +- pkg/dns/target_test.go | 51 +- pkg/policysync/policy_test.go | 6 +- .../dnspolicy_providers_istio_gateway_test.go | 394 ++++++++++ test/e2e/gateway_single_spoke_test.go | 16 +- test/e2e/suite_test.go | 8 + test/gateway_integration/suite_test.go | 20 +- ...dnspolicy_controller_health_checks_test.go | 62 +- ...dnspolicy_controller_multi_cluster_test.go | 130 ++-- ...nspolicy_controller_single_cluster_test.go | 66 +- .../dnspolicy_controller_test.go | 35 +- .../managedzone_controller_test.go | 23 +- test/policy_integration/suite_test.go | 6 +- test/util/helper.go | 2 + test/util/suite_config.go | 5 + test/util/test_dnspolicy_types.go | 113 ++- 62 files changed, 2490 insertions(+), 1605 deletions(-) delete mode 100644 config/samples/kuadrant.io_v1alpha1_dnsrecord-ns.yaml delete mode 100644 config/samples/kuadrant.io_v1alpha1_dnsrecord.yaml rename config/samples/{kuadrant.io_v1alpha1_dnsrecord-geo.yaml => kuadrant.io_v1alpha2_dnsrecord-geo.yaml} (77%) create mode 100644 config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml create mode 100644 config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml rename pkg/apis/{v1alpha1 => v1alpha2}/dnspolicy_types.go (87%) rename pkg/apis/{v1alpha1 => v1alpha2}/dnsrecord_types.go (97%) create mode 100644 pkg/apis/v1alpha2/groupversion_info.go rename pkg/apis/{v1alpha1 => v1alpha2}/managedzone_types.go (91%) create mode 100644 pkg/apis/v1alpha2/shared_types.go create mode 100644 pkg/apis/v1alpha2/zz_generated.deepcopy.go create mode 100644 pkg/dns/filters.go create mode 100644 test/e2e/dnspolicy_providers_istio_gateway_test.go diff --git a/.github/workflows/ci-e2e.yaml b/.github/workflows/ci-e2e.yaml index 5656212a7..c1a392e3c 100644 --- a/.github/workflows/ci-e2e.yaml +++ b/.github/workflows/ci-e2e.yaml @@ -5,6 +5,7 @@ on: branches: - main - "release-*" + - 406_dnspolicy_provider_ref tags: - "v[0-9]+.[0-9]+.[0-9]+" paths-ignore: @@ -43,24 +44,6 @@ jobs: - uses: actions/setup-go@v4 with: go-version: "1.21.x" - - name: Create controller-config.env - run: | - echo "AWS_DNS_PUBLIC_ZONE_ID=${{ secrets.E2E_AWS_DNS_PUBLIC_ZONE_ID }}" >> controller-config.env - echo "ZONE_ROOT_DOMAIN=${{ secrets.E2E_AWS_DNS_PUBLIC_ZONE_NAME }}" >> controller-config.env - echo "ZONE_NAME=${{ secrets.E2E_GCP_ZONE_NAME }}" >> controller-config.env - echo "ZONE_DNS_NAME=${{ secrets.E2E_GCP_ZONE_DNS_NAME }}" >> controller-config.env - - - name: Create aws-credentials.env - run: | - echo "AWS_ACCESS_KEY_ID=${{ secrets.E2E_AWS_ACCESS_KEY_ID }}" >> aws-credentials.env - echo "AWS_SECRET_ACCESS_KEY=${{ secrets.E2E_AWS_SECRET_ACCESS_KEY }}" >> aws-credentials.env - echo "AWS_REGION=${{ env.AWS_REGION }}" >> aws-credentials.env - - name: Create gcp-credentials.env - run: | - secret="${{ secrets.E2E_GOOGLE }}" - decoded=$(echo "$secret" | base64 --decode ) - echo "GOOGLE=$decoded" >> gcp-credentials.env - echo "PROJECT_ID=${{ secrets.E2E_PROJECT_ID }}" >> gcp-credentials.env - name: Setup environment run: | export OCM_SINGLE=1 @@ -74,31 +57,42 @@ jobs: kubectl --context kind-mgc-control-plane -n multicluster-gateway-controller-system wait --timeout=300s --for=condition=Available deployment/mgc-policy-controller kubectl --context kind-mgc-control-plane logs --all-containers --ignore-errors deployment/mgc-controller-manager -n multicluster-gateway-controller-system kubectl --context kind-mgc-control-plane logs --all-containers --ignore-errors deployment/mgc-policy-controller -n multicluster-gateway-controller-system - kubectl get managedzones -n multi-cluster-gateways mgc-dev-mz-aws -o yaml - kubectl --context kind-mgc-control-plane -n multi-cluster-gateways wait --timeout=60s --for=condition=Ready managedzone/mgc-dev-mz-aws - kubectl get managedzones -n multi-cluster-gateways mgc-dev-mz-gcp -o yaml - kubectl --context kind-mgc-control-plane -n multi-cluster-gateways wait --timeout=60s --for=condition=Ready managedzone/mgc-dev-mz-gcp + - name: Create AWS provider secret + run: | + echo "{\"zoneIDFilter\": [], \"domainFilter\": [\"e2e.hcpapps.net\"]}" > e2e-test-aws-provider-config.json + kubectl create secret generic e2e-test-aws-credentials -n multi-cluster-gateways \ + --type=kuadrant.io/aws \ + --from-literal=AWS_ACCESS_KEY_ID=${{ secrets.E2E_AWS_ACCESS_KEY_ID }} \ + --from-literal=AWS_SECRET_ACCESS_KEY=${{ secrets.E2E_AWS_SECRET_ACCESS_KEY }} \ + --from-file=CONFIG=e2e-test-aws-provider-config.json + - name: Create GCP provider secret + run: | + secret="${{ secrets.E2E_GOOGLE }}" + decoded=$(echo "$secret" | base64 --decode ) + echo "$decoded" >> gcp_credentials.json + echo "{\"zoneIDFilter\": [], \"domainFilter\": [\"e2e.google.hcpapps.net\"]}" > e2e-test-gcp-provider-config.json + kubectl create secret generic e2e-test-gcp-credentials -n multi-cluster-gateways \ + --type=kuadrant.io/gcp \ + --from-literal=PROJECT_ID=${{ secrets.E2E_PROJECT_ID }} \ + --from-file=GOOGLE=gcp_credentials.json \ + --from-file=CONFIG=e2e-test-gcp-provider-config.json - name: Run suite AWS run: | export OCM_SINGLE=1 export TEST_HUB_NAMESPACE=multi-cluster-gateways export TEST_HUB_KUBE_CONTEXT=kind-mgc-control-plane - export TEST_DNS_PROVIDER_SECRET_NAME=mgc-aws-credentials + export TEST_DNS_PROVIDER_SECRET_NAME=e2e-test-aws-credentials export TEST_DNS_ZONE_DOMAIN_NAME=e2e.hcpapps.net export TEST_DNS_ZONE_ID=Z086929132US3PB46EOLR - export TEST_MANAGED_ZONE=${{ secrets.E2E_AWS_DNS_PUBLIC_ZONE_NAME }} - export TEST_MANAGED_ZONE_NAME=mgc-dev-mz-aws make test-e2e - name: Run suite GCP run: | export OCM_SINGLE=1 export TEST_HUB_NAMESPACE=multi-cluster-gateways export TEST_HUB_KUBE_CONTEXT=kind-mgc-control-plane - export TEST_DNS_PROVIDER_SECRET_NAME=mgc-gcp-credentials + export TEST_DNS_PROVIDER_SECRET_NAME=e2e-test-gcp-credentials export TEST_DNS_ZONE_DOMAIN_NAME=e2e.google.hcpapps.net export TEST_DNS_ZONE_ID=e2e-google-hcpapps-net - export TEST_MANAGED_ZONE=${{ secrets.E2E_GCP_ZONE_DNS_NAME }} - export TEST_MANAGED_ZONE_NAME=mgc-dev-mz-gcp make test-e2e - name: Dump Gateway Controller logs if: ${{ failure() }} diff --git a/bundle/manifests/kuadrant.io_dnspolicies.yaml b/bundle/manifests/kuadrant.io_dnspolicies.yaml index c971d8477..71b80e2f3 100644 --- a/bundle/manifests/kuadrant.io_dnspolicies.yaml +++ b/bundle/manifests/kuadrant.io_dnspolicies.yaml @@ -21,7 +21,7 @@ spec: jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string - name: v1alpha1 + name: v1alpha2 schema: openAPIV3Schema: description: DNSPolicy is the Schema for the dnspolicies API @@ -156,6 +156,20 @@ spec: type: integer type: object type: object + providerRef: + properties: + kind: + enum: + - None + - Secret + - ManagedZone + type: string + name: + type: string + required: + - kind + - name + type: object routingStrategy: default: loadbalanced enum: @@ -201,6 +215,7 @@ spec: - name type: object required: + - providerRef - routingStrategy - targetRef type: object diff --git a/bundle/manifests/kuadrant.io_dnsrecords.yaml b/bundle/manifests/kuadrant.io_dnsrecords.yaml index 59c146a08..cb036a085 100644 --- a/bundle/manifests/kuadrant.io_dnsrecords.yaml +++ b/bundle/manifests/kuadrant.io_dnsrecords.yaml @@ -19,7 +19,7 @@ spec: jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string - name: v1alpha1 + name: v1alpha2 schema: openAPIV3Schema: description: DNSRecord is the Schema for the dnsrecords API @@ -85,15 +85,24 @@ spec: type: object minItems: 1 type: array - managedZone: - description: ManagedZoneReference holds a reference to a ManagedZone + providerRef: properties: + kind: + enum: + - None + - Secret + - ManagedZone + type: string name: - description: '`name` is the name of the managed zone. Required' type: string required: + - kind - name type: object + zoneID: + type: string + required: + - providerRef type: object status: description: DNSRecordStatus defines the observed state of DNSRecord diff --git a/bundle/manifests/kuadrant.io_managedzones.yaml b/bundle/manifests/kuadrant.io_managedzones.yaml index b9d9fd74a..74e102b95 100644 --- a/bundle/manifests/kuadrant.io_managedzones.yaml +++ b/bundle/manifests/kuadrant.io_managedzones.yaml @@ -35,7 +35,7 @@ spec: jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string - name: v1alpha1 + name: v1alpha2 schema: openAPIV3Schema: description: ManagedZone is the Schema for the managedzones API @@ -58,13 +58,6 @@ spec: description: description: Description for this ManagedZone type: string - dnsProviderSecretRef: - properties: - name: - type: string - required: - - name - type: object domainName: description: Domain name of this ManagedZone pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ @@ -82,10 +75,23 @@ spec: required: - name type: object + providerRef: + properties: + kind: + enum: + - None + - Secret + - ManagedZone + type: string + name: + type: string + required: + - kind + - name + type: object required: - - description - - dnsProviderSecretRef - domainName + - providerRef type: object status: description: ManagedZoneStatus defines the observed state of a Zone diff --git a/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml b/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml index 37cb742a8..63efb780b 100644 --- a/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml +++ b/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml @@ -4,7 +4,7 @@ metadata: annotations: alm-examples: '[]' capabilities: Basic Install - createdAt: "2023-12-21T13:08:31Z" + createdAt: "2023-12-04T11:02:57Z" operators.operatorframework.io/builder: operator-sdk-v1.28.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 name: multicluster-gateway-controller.v0.0.0 @@ -18,15 +18,13 @@ spec: version: v1alpha1 - kind: DNSPolicy name: dnspolicies.kuadrant.io - version: v1alpha1 + version: v1alpha2 - kind: DNSRecord name: dnsrecords.kuadrant.io - version: v1alpha1 - - description: ManagedZone is the Schema for the managedzones API - displayName: Managed Zone - kind: ManagedZone + version: v1alpha2 + - kind: ManagedZone name: managedzones.kuadrant.io - version: v1alpha1 + version: v1alpha2 - kind: TLSPolicy name: tlspolicies.kuadrant.io version: v1alpha1 diff --git a/cmd/policy_controller/main.go b/cmd/policy_controller/main.go index 2cc81ce0f..7f99d06ed 100644 --- a/cmd/policy_controller/main.go +++ b/cmd/policy_controller/main.go @@ -38,6 +38,7 @@ import ( "github.com/kuadrant/kuadrant-operator/pkg/reconcilers" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnshealthcheckprobe" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnspolicy" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnsrecord" @@ -55,6 +56,7 @@ func init() { utilruntime.Must(clientgoscheme.AddToScheme(scheme.Scheme)) utilruntime.Must(gatewayapiv1.AddToScheme(scheme.Scheme)) utilruntime.Must(v1alpha1.AddToScheme(scheme.Scheme)) + utilruntime.Must(v1alpha2.AddToScheme(scheme.Scheme)) utilruntime.Must(certmanv1.AddToScheme(scheme.Scheme)) //this is need for now but will be removed soon utilruntime.Must(clusterv1.AddToScheme(scheme.Scheme)) diff --git a/config/local-setup/controller/aws/managed_zone.yaml b/config/local-setup/controller/aws/managed_zone.yaml index 6e7e3be28..4e8608ac3 100644 --- a/config/local-setup/controller/aws/managed_zone.yaml +++ b/config/local-setup/controller/aws/managed_zone.yaml @@ -1,4 +1,4 @@ -apiVersion: kuadrant.io/v1alpha1 +apiVersion: kuadrant.io/v1alpha2 kind: ManagedZone metadata: name: dev-mz-aws @@ -6,5 +6,5 @@ spec: id: DUMMY_ID domainName: DUMMY_DOMAIN_NAME description: "Dev Managed Zone" - dnsProviderSecretRef: + providerRef: name: mgc-aws-credentials diff --git a/config/local-setup/controller/gcp/managed_zone.yaml b/config/local-setup/controller/gcp/managed_zone.yaml index d67f57715..6ddee876b 100644 --- a/config/local-setup/controller/gcp/managed_zone.yaml +++ b/config/local-setup/controller/gcp/managed_zone.yaml @@ -1,4 +1,4 @@ -apiVersion: kuadrant.io/v1alpha1 +apiVersion: kuadrant.io/v1alpha2 kind: ManagedZone metadata: name: dev-mz-gcp @@ -6,5 +6,5 @@ spec: id: DUMMY_ID domainName: DUMMY_DOMAIN_NAME description: "Dev Managed Zone" - dnsProviderSecretRef: + providerRef: name: mgc-gcp-credentials diff --git a/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml b/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml index 44486d0f9..b865b4664 100644 --- a/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml +++ b/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml @@ -20,7 +20,7 @@ spec: jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string - name: v1alpha1 + name: v1alpha2 schema: openAPIV3Schema: description: DNSPolicy is the Schema for the dnspolicies API @@ -155,6 +155,20 @@ spec: type: integer type: object type: object + providerRef: + properties: + kind: + enum: + - None + - Secret + - ManagedZone + type: string + name: + type: string + required: + - kind + - name + type: object routingStrategy: default: loadbalanced enum: @@ -200,6 +214,7 @@ spec: - name type: object required: + - providerRef - routingStrategy - targetRef type: object diff --git a/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml b/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml index b75091f0b..e49cdeaef 100644 --- a/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml +++ b/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml @@ -20,7 +20,7 @@ spec: jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string - name: v1alpha1 + name: v1alpha2 schema: openAPIV3Schema: description: DNSRecord is the Schema for the dnsrecords API @@ -86,15 +86,24 @@ spec: type: object minItems: 1 type: array - managedZone: - description: ManagedZoneReference holds a reference to a ManagedZone + providerRef: properties: + kind: + enum: + - None + - Secret + - ManagedZone + type: string name: - description: '`name` is the name of the managed zone. Required' type: string required: + - kind - name type: object + zoneID: + type: string + required: + - providerRef type: object status: description: DNSRecordStatus defines the observed state of DNSRecord diff --git a/config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml b/config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml index d96bbb44d..e69a37179 100644 --- a/config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml +++ b/config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml @@ -36,7 +36,7 @@ spec: jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string - name: v1alpha1 + name: v1alpha2 schema: openAPIV3Schema: description: ManagedZone is the Schema for the managedzones API @@ -59,13 +59,6 @@ spec: description: description: Description for this ManagedZone type: string - dnsProviderSecretRef: - properties: - name: - type: string - required: - - name - type: object domainName: description: Domain name of this ManagedZone pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ @@ -83,10 +76,23 @@ spec: required: - name type: object + providerRef: + properties: + kind: + enum: + - None + - Secret + - ManagedZone + type: string + name: + type: string + required: + - kind + - name + type: object required: - - description - - dnsProviderSecretRef - domainName + - providerRef type: object status: description: ManagedZoneStatus defines the observed state of a Zone diff --git a/config/samples/dnspolicy.yaml b/config/samples/dnspolicy.yaml index dbd506ddc..9919c9da9 100644 --- a/config/samples/dnspolicy.yaml +++ b/config/samples/dnspolicy.yaml @@ -1,4 +1,4 @@ -apiVersion: kuadrant.io/v1alpha1 +apiVersion: kuadrant.io/v1alpha2 kind: DNSPolicy metadata: name: example-dnspolicy diff --git a/config/samples/kuadrant.io_v1alpha1_dnsrecord-ns.yaml b/config/samples/kuadrant.io_v1alpha1_dnsrecord-ns.yaml deleted file mode 100644 index 8ffe83b48..000000000 --- a/config/samples/kuadrant.io_v1alpha1_dnsrecord-ns.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSRecord -metadata: - labels: - app.kubernetes.io/name: dnsrecord-ns - app.kubernetes.io/instance: dnsrecord-sample - app.kubernetes.io/part-of: multicluster-gateway-controller - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/created-by: multicluster-gateway-controller - name: dnsrecord-ns -spec: - managedZone: - name: mgc-dev-mz - endpoints: - - dnsName: testns.hcpapps.net - recordTTL: 172800 - recordType: NS - targets: - - ns-59.awsdns-07.com - - ns-59.awsdns-07.com - - ns-910.awsdns-49.net - - ns-1440.awsdns-52.org diff --git a/config/samples/kuadrant.io_v1alpha1_dnsrecord.yaml b/config/samples/kuadrant.io_v1alpha1_dnsrecord.yaml deleted file mode 100644 index bdc0fd231..000000000 --- a/config/samples/kuadrant.io_v1alpha1_dnsrecord.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSRecord -metadata: - labels: - app.kubernetes.io/name: dnsrecord - app.kubernetes.io/instance: dnsrecord-sample - app.kubernetes.io/part-of: multicluster-gateway-controller - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/created-by: multicluster-gateway-controller - name: dnsrecord-sample -spec: - managedZone: - name: mgc-dev-mz - endpoints: - - dnsName: dnsrecord-simple.mn.hcpapps.net - recordTTL: 60 - recordType: A - targets: - - 52.215.108.61 - - 52.30.101.221 diff --git a/config/samples/kuadrant.io_v1alpha1_managedzone.yaml b/config/samples/kuadrant.io_v1alpha1_managedzone.yaml index 549542884..5a41b4f97 100644 --- a/config/samples/kuadrant.io_v1alpha1_managedzone.yaml +++ b/config/samples/kuadrant.io_v1alpha1_managedzone.yaml @@ -1,13 +1,10 @@ -apiVersion: kuadrant.io/v1alpha1 +apiVersion: kuadrant.io/v1alpha2 kind: ManagedZone metadata: - labels: - app.kubernetes.io/name: managedzone - app.kubernetes.io/instance: managedzone-sample - app.kubernetes.io/part-of: multicluster-gateway-controller - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/created-by: multicluster-gateway-controller name: managedzone-sample spec: domainName: testmz.hcapps.net description: "My managed domain" + providerRef: + name: my-provider-credentials + kind: Secret \ No newline at end of file diff --git a/config/samples/kuadrant.io_v1alpha1_dnsrecord-geo.yaml b/config/samples/kuadrant.io_v1alpha2_dnsrecord-geo.yaml similarity index 77% rename from config/samples/kuadrant.io_v1alpha1_dnsrecord-geo.yaml rename to config/samples/kuadrant.io_v1alpha2_dnsrecord-geo.yaml index e025b123b..f0a60693b 100644 --- a/config/samples/kuadrant.io_v1alpha1_dnsrecord-geo.yaml +++ b/config/samples/kuadrant.io_v1alpha2_dnsrecord-geo.yaml @@ -1,16 +1,11 @@ -apiVersion: kuadrant.io/v1alpha1 +apiVersion: kuadrant.io/v1alpha2 kind: DNSRecord metadata: - labels: - app.kubernetes.io/name: dnsrecord-geo - app.kubernetes.io/instance: dnsrecord-sample - app.kubernetes.io/part-of: multicluster-gateway-controller - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/created-by: multicluster-gateway-controller name: dnsrecord-geo spec: - managedZone: - name: mgc-dev-mz + providerRef: + name: managedzone-sample + kind: ManagedZone endpoints: - dnsName: dnsrecord-geo.mn.hcpapps.net recordTTL: 60 diff --git a/config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml b/config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml new file mode 100644 index 000000000..bc55e6d12 --- /dev/null +++ b/config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml @@ -0,0 +1,17 @@ +apiVersion: kuadrant.io/v1alpha2 +kind: DNSRecord +metadata: + name: dnsrecord-ns +spec: + providerRef: + name: managedzone-sample + kind: ManagedZone + endpoints: + - dnsName: testns.hcpapps.net + recordTTL: 172800 + recordType: NS + targets: + - ns-59.awsdns-07.com + - ns-59.awsdns-07.com + - ns-910.awsdns-49.net + - ns-1440.awsdns-52.org diff --git a/config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml b/config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml new file mode 100644 index 000000000..d010e4af7 --- /dev/null +++ b/config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml @@ -0,0 +1,15 @@ +apiVersion: kuadrant.io/v1alpha2 +kind: DNSRecord +metadata: + name: dnsrecord-sample +spec: + providerRef: + name: managedzone-sample + kind: ManagedZone + endpoints: + - dnsName: dnsrecord-simple.mn.hcpapps.net + recordTTL: 60 + recordType: A + targets: + - 52.215.108.61 + - 52.30.101.221 diff --git a/hack/.deployUtils b/hack/.deployUtils index ab4eab53b..dcab6a613 100644 --- a/hack/.deployUtils +++ b/hack/.deployUtils @@ -353,7 +353,7 @@ data: ZONE_ROOT_DOMAIN: ${KUADRANT_ZONE_ROOT_DOMAIN} LOG_LEVEL: "${LOG_LEVEL}" --- -apiVersion: kuadrant.io/v1alpha1 +apiVersion: kuadrant.io/v1alpha2 kind: ManagedZone metadata: name: ${KIND_CLUSTER_PREFIX}dev-mz @@ -362,7 +362,7 @@ spec: id: ${KUADRANT_AWS_DNS_PUBLIC_ZONE_ID} domainName: ${KUADRANT_ZONE_ROOT_DOMAIN} description: "Dev Managed Zone" - dnsProviderSecretRef: + providerRef: name: ${KIND_CLUSTER_PREFIX}aws-credentials EOF } @@ -393,7 +393,7 @@ data: ZONE_NAME: ${ZONE_NAME} LOG_LEVEL: "${LOG_LEVEL}" --- -apiVersion: kuadrant.io/v1alpha1 +apiVersion: kuadrant.io/v1alpha2 kind: ManagedZone metadata: name: ${KIND_CLUSTER_PREFIX}dev-mz @@ -402,7 +402,7 @@ spec: id: ${ZONE_NAME} domainName: ${ZONE_DNS_NAME} description: "Dev Managed Zone" - dnsProviderSecretRef: + providerRef: name: ${KIND_CLUSTER_PREFIX}gcp-credentials EOF } diff --git a/pkg/_internal/conditions/conditions_test.go b/pkg/_internal/conditions/conditions_test.go index f0e1c02db..cecff20d1 100644 --- a/pkg/_internal/conditions/conditions_test.go +++ b/pkg/_internal/conditions/conditions_test.go @@ -9,7 +9,7 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" ) const ( @@ -18,10 +18,10 @@ const ( func TestBuildPolicyCondition(t *testing.T) { runtimeObject := func() runtime.Object { - return &v1alpha1.DNSPolicy{ + return &v1alpha2.DNSPolicy{ TypeMeta: metav1.TypeMeta{ Kind: "DNSPolicy", - APIVersion: "kuadrant.io/v1alpha1", + APIVersion: "kuadrant.io/v1alpha2", }, } } diff --git a/pkg/_internal/policy/policy_test.go b/pkg/_internal/policy/policy_test.go index 4bb8dec04..36076fb78 100644 --- a/pkg/_internal/policy/policy_test.go +++ b/pkg/_internal/policy/policy_test.go @@ -11,7 +11,7 @@ import ( "github.com/kuadrant/kuadrant-operator/pkg/common" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" ) @@ -27,13 +27,13 @@ func TestGetTargetRefValueFromPolicy(t *testing.T) { { name: "should use target namespace", args: args{ - policy: &v1alpha1.DNSPolicy{ + policy: &v1alpha2.DNSPolicy{ TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: "test-policy", Namespace: "test-policy-ns", }, - Spec: v1alpha1.DNSPolicySpec{ + Spec: v1alpha2.DNSPolicySpec{ TargetRef: gatewayapiv1alpha2.PolicyTargetReference{ Group: "gateway.networking.k8s.io", Kind: "Gateway", @@ -47,13 +47,13 @@ func TestGetTargetRefValueFromPolicy(t *testing.T) { { name: "should use policy namespace when no target namespace set", args: args{ - policy: &v1alpha1.DNSPolicy{ + policy: &v1alpha2.DNSPolicy{ TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: "test-policy", Namespace: "test-policy-ns", }, - Spec: v1alpha1.DNSPolicySpec{ + Spec: v1alpha2.DNSPolicySpec{ TargetRef: gatewayapiv1alpha2.PolicyTargetReference{ Group: "gateway.networking.k8s.io", Kind: "Gateway", diff --git a/pkg/apis/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/v1alpha1/zz_generated.deepcopy.go index 2aae0a414..ffe3fd1ea 100644 --- a/pkg/apis/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/v1alpha1/zz_generated.deepcopy.go @@ -118,26 +118,6 @@ func (in *CertificateSpec) DeepCopy() *CertificateSpec { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *CustomWeight) DeepCopyInto(out *CustomWeight) { - *out = *in - if in.Selector != nil { - in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomWeight. -func (in *CustomWeight) DeepCopy() *CustomWeight { - if in == nil { - return nil - } - out := new(CustomWeight) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DNSHealthCheckProbe) DeepCopyInto(out *DNSHealthCheckProbe) { *out = *in @@ -249,648 +229,6 @@ func (in *DNSHealthCheckProbeStatus) DeepCopy() *DNSHealthCheckProbeStatus { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSPolicy) DeepCopyInto(out *DNSPolicy) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicy. -func (in *DNSPolicy) DeepCopy() *DNSPolicy { - if in == nil { - return nil - } - out := new(DNSPolicy) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DNSPolicy) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSPolicyList) DeepCopyInto(out *DNSPolicyList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]DNSPolicy, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicyList. -func (in *DNSPolicyList) DeepCopy() *DNSPolicyList { - if in == nil { - return nil - } - out := new(DNSPolicyList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DNSPolicyList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSPolicySpec) DeepCopyInto(out *DNSPolicySpec) { - *out = *in - in.TargetRef.DeepCopyInto(&out.TargetRef) - if in.HealthCheck != nil { - in, out := &in.HealthCheck, &out.HealthCheck - *out = new(HealthCheckSpec) - (*in).DeepCopyInto(*out) - } - if in.LoadBalancing != nil { - in, out := &in.LoadBalancing, &out.LoadBalancing - *out = new(LoadBalancingSpec) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicySpec. -func (in *DNSPolicySpec) DeepCopy() *DNSPolicySpec { - if in == nil { - return nil - } - out := new(DNSPolicySpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSPolicyStatus) DeepCopyInto(out *DNSPolicyStatus) { - *out = *in - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]v1.Condition, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.HealthCheck != nil { - in, out := &in.HealthCheck, &out.HealthCheck - *out = new(HealthCheckStatus) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicyStatus. -func (in *DNSPolicyStatus) DeepCopy() *DNSPolicyStatus { - if in == nil { - return nil - } - out := new(DNSPolicyStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSRecord) DeepCopyInto(out *DNSRecord) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecord. -func (in *DNSRecord) DeepCopy() *DNSRecord { - if in == nil { - return nil - } - out := new(DNSRecord) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DNSRecord) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSRecordList) DeepCopyInto(out *DNSRecordList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]DNSRecord, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordList. -func (in *DNSRecordList) DeepCopy() *DNSRecordList { - if in == nil { - return nil - } - out := new(DNSRecordList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DNSRecordList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSRecordRef) DeepCopyInto(out *DNSRecordRef) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordRef. -func (in *DNSRecordRef) DeepCopy() *DNSRecordRef { - if in == nil { - return nil - } - out := new(DNSRecordRef) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSRecordSpec) DeepCopyInto(out *DNSRecordSpec) { - *out = *in - if in.ManagedZoneRef != nil { - in, out := &in.ManagedZoneRef, &out.ManagedZoneRef - *out = new(ManagedZoneReference) - **out = **in - } - if in.Endpoints != nil { - in, out := &in.Endpoints, &out.Endpoints - *out = make([]*Endpoint, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(Endpoint) - (*in).DeepCopyInto(*out) - } - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordSpec. -func (in *DNSRecordSpec) DeepCopy() *DNSRecordSpec { - if in == nil { - return nil - } - out := new(DNSRecordSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DNSRecordStatus) DeepCopyInto(out *DNSRecordStatus) { - *out = *in - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]v1.Condition, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Endpoints != nil { - in, out := &in.Endpoints, &out.Endpoints - *out = make([]*Endpoint, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(Endpoint) - (*in).DeepCopyInto(*out) - } - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordStatus. -func (in *DNSRecordStatus) DeepCopy() *DNSRecordStatus { - if in == nil { - return nil - } - out := new(DNSRecordStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Endpoint) DeepCopyInto(out *Endpoint) { - *out = *in - if in.Targets != nil { - in, out := &in.Targets, &out.Targets - *out = make(Targets, len(*in)) - copy(*out, *in) - } - if in.Labels != nil { - in, out := &in.Labels, &out.Labels - *out = make(Labels, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.ProviderSpecific != nil { - in, out := &in.ProviderSpecific, &out.ProviderSpecific - *out = make(ProviderSpecific, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Endpoint. -func (in *Endpoint) DeepCopy() *Endpoint { - if in == nil { - return nil - } - out := new(Endpoint) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *HealthCheckSpec) DeepCopyInto(out *HealthCheckSpec) { - *out = *in - if in.Port != nil { - in, out := &in.Port, &out.Port - *out = new(int) - **out = **in - } - if in.Protocol != nil { - in, out := &in.Protocol, &out.Protocol - *out = new(HealthProtocol) - **out = **in - } - if in.FailureThreshold != nil { - in, out := &in.FailureThreshold, &out.FailureThreshold - *out = new(int) - **out = **in - } - if in.AdditionalHeadersRef != nil { - in, out := &in.AdditionalHeadersRef, &out.AdditionalHeadersRef - *out = new(AdditionalHeadersRef) - **out = **in - } - if in.ExpectedResponses != nil { - in, out := &in.ExpectedResponses, &out.ExpectedResponses - *out = make([]int, len(*in)) - copy(*out, *in) - } - if in.Interval != nil { - in, out := &in.Interval, &out.Interval - *out = new(v1.Duration) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckSpec. -func (in *HealthCheckSpec) DeepCopy() *HealthCheckSpec { - if in == nil { - return nil - } - out := new(HealthCheckSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *HealthCheckStatus) DeepCopyInto(out *HealthCheckStatus) { - *out = *in - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]v1.Condition, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckStatus. -func (in *HealthCheckStatus) DeepCopy() *HealthCheckStatus { - if in == nil { - return nil - } - out := new(HealthCheckStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in Labels) DeepCopyInto(out *Labels) { - { - in := &in - *out = make(Labels, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Labels. -func (in Labels) DeepCopy() Labels { - if in == nil { - return nil - } - out := new(Labels) - in.DeepCopyInto(out) - return *out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LoadBalancingGeo) DeepCopyInto(out *LoadBalancingGeo) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancingGeo. -func (in *LoadBalancingGeo) DeepCopy() *LoadBalancingGeo { - if in == nil { - return nil - } - out := new(LoadBalancingGeo) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LoadBalancingSpec) DeepCopyInto(out *LoadBalancingSpec) { - *out = *in - if in.Weighted != nil { - in, out := &in.Weighted, &out.Weighted - *out = new(LoadBalancingWeighted) - (*in).DeepCopyInto(*out) - } - if in.Geo != nil { - in, out := &in.Geo, &out.Geo - *out = new(LoadBalancingGeo) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancingSpec. -func (in *LoadBalancingSpec) DeepCopy() *LoadBalancingSpec { - if in == nil { - return nil - } - out := new(LoadBalancingSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LoadBalancingWeighted) DeepCopyInto(out *LoadBalancingWeighted) { - *out = *in - if in.Custom != nil { - in, out := &in.Custom, &out.Custom - *out = make([]*CustomWeight, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(CustomWeight) - (*in).DeepCopyInto(*out) - } - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancingWeighted. -func (in *LoadBalancingWeighted) DeepCopy() *LoadBalancingWeighted { - if in == nil { - return nil - } - out := new(LoadBalancingWeighted) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedHost) DeepCopyInto(out *ManagedHost) { - *out = *in - if in.ManagedZone != nil { - in, out := &in.ManagedZone, &out.ManagedZone - *out = new(ManagedZone) - (*in).DeepCopyInto(*out) - } - if in.DnsRecord != nil { - in, out := &in.DnsRecord, &out.DnsRecord - *out = new(DNSRecord) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedHost. -func (in *ManagedHost) DeepCopy() *ManagedHost { - if in == nil { - return nil - } - out := new(ManagedHost) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZone) DeepCopyInto(out *ManagedZone) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZone. -func (in *ManagedZone) DeepCopy() *ManagedZone { - if in == nil { - return nil - } - out := new(ManagedZone) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *ManagedZone) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneList) DeepCopyInto(out *ManagedZoneList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]ManagedZone, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneList. -func (in *ManagedZoneList) DeepCopy() *ManagedZoneList { - if in == nil { - return nil - } - out := new(ManagedZoneList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *ManagedZoneList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneReference) DeepCopyInto(out *ManagedZoneReference) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneReference. -func (in *ManagedZoneReference) DeepCopy() *ManagedZoneReference { - if in == nil { - return nil - } - out := new(ManagedZoneReference) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneSpec) DeepCopyInto(out *ManagedZoneSpec) { - *out = *in - if in.ParentManagedZone != nil { - in, out := &in.ParentManagedZone, &out.ParentManagedZone - *out = new(ManagedZoneReference) - **out = **in - } - if in.SecretRef != nil { - in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretRef) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneSpec. -func (in *ManagedZoneSpec) DeepCopy() *ManagedZoneSpec { - if in == nil { - return nil - } - out := new(ManagedZoneSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneStatus) DeepCopyInto(out *ManagedZoneStatus) { - *out = *in - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]v1.Condition, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.NameServers != nil { - in, out := &in.NameServers, &out.NameServers - *out = make([]*string, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(string) - **out = **in - } - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneStatus. -func (in *ManagedZoneStatus) DeepCopy() *ManagedZoneStatus { - if in == nil { - return nil - } - out := new(ManagedZoneStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in ProviderSpecific) DeepCopyInto(out *ProviderSpecific) { - { - in := &in - *out = make(ProviderSpecific, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderSpecific. -func (in ProviderSpecific) DeepCopy() ProviderSpecific { - if in == nil { - return nil - } - out := new(ProviderSpecific) - in.DeepCopyInto(out) - return *out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ProviderSpecificProperty) DeepCopyInto(out *ProviderSpecificProperty) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderSpecificProperty. -func (in *ProviderSpecificProperty) DeepCopy() *ProviderSpecificProperty { - if in == nil { - return nil - } - out := new(ProviderSpecificProperty) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SecretRef) DeepCopyInto(out *SecretRef) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef. -func (in *SecretRef) DeepCopy() *SecretRef { - if in == nil { - return nil - } - out := new(SecretRef) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TLSPolicy) DeepCopyInto(out *TLSPolicy) { *out = *in @@ -988,37 +326,3 @@ func (in *TLSPolicyStatus) DeepCopy() *TLSPolicyStatus { in.DeepCopyInto(out) return out } - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Target) DeepCopyInto(out *Target) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Target. -func (in *Target) DeepCopy() *Target { - if in == nil { - return nil - } - out := new(Target) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in Targets) DeepCopyInto(out *Targets) { - { - in := &in - *out = make(Targets, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Targets. -func (in Targets) DeepCopy() Targets { - if in == nil { - return nil - } - out := new(Targets) - in.DeepCopyInto(out) - return *out -} diff --git a/pkg/apis/v1alpha1/dnspolicy_types.go b/pkg/apis/v1alpha2/dnspolicy_types.go similarity index 87% rename from pkg/apis/v1alpha1/dnspolicy_types.go rename to pkg/apis/v1alpha2/dnspolicy_types.go index 60ff89103..83769c80b 100644 --- a/pkg/apis/v1alpha1/dnspolicy_types.go +++ b/pkg/apis/v1alpha2/dnspolicy_types.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package v1alpha1 +package v1alpha2 import ( "fmt" @@ -23,6 +23,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" gatewayapiv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" + + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" ) type RoutingStrategy string @@ -49,6 +51,9 @@ type DNSPolicySpec struct { // +kubebuilder:validation:Enum=simple;loadbalanced // +kubebuilder:default=loadbalanced RoutingStrategy RoutingStrategy `json:"routingStrategy"` + + // +required + ProviderRef ProviderRef `json:"providerRef"` } type LoadBalancingSpec struct { @@ -136,6 +141,10 @@ func (p *DNSPolicy) GetTargetRef() gatewayapiv1alpha2.PolicyTargetReference { return p.Spec.TargetRef } +func (p *DNSPolicy) GetProviderRef() ProviderRef { + return p.Spec.ProviderRef +} + // Validate ensures the resource is valid. Compatible with the validating interface // used by webhooks func (p *DNSPolicy) Validate() error { @@ -179,14 +188,14 @@ type DNSPolicyList struct { // By default, this health check will be applied to each unique DNS A Record for // the listeners assigned to the target gateway type HealthCheckSpec struct { - Endpoint string `json:"endpoint,omitempty"` - Port *int `json:"port,omitempty"` - Protocol *HealthProtocol `json:"protocol,omitempty"` - FailureThreshold *int `json:"failureThreshold,omitempty"` - AdditionalHeadersRef *AdditionalHeadersRef `json:"additionalHeadersRef,omitempty"` - ExpectedResponses []int `json:"expectedResponses,omitempty"` - AllowInsecureCertificates bool `json:"allowInsecureCertificates,omitempty"` - Interval *metav1.Duration `json:"interval,omitempty"` + Endpoint string `json:"endpoint,omitempty"` + Port *int `json:"port,omitempty"` + Protocol *v1alpha1.HealthProtocol `json:"protocol,omitempty"` + FailureThreshold *int `json:"failureThreshold,omitempty"` + AdditionalHeadersRef *v1alpha1.AdditionalHeadersRef `json:"additionalHeadersRef,omitempty"` + ExpectedResponses []int `json:"expectedResponses,omitempty"` + AllowInsecureCertificates bool `json:"allowInsecureCertificates,omitempty"` + Interval *metav1.Duration `json:"interval,omitempty"` } func (s *HealthCheckSpec) Validate() error { @@ -207,7 +216,7 @@ func (s *HealthCheckSpec) Default() { } if s.Protocol == nil { - protocol := HttpsProtocol + protocol := v1alpha1.HttpsProtocol s.Protocol = &protocol } } diff --git a/pkg/apis/v1alpha1/dnsrecord_types.go b/pkg/apis/v1alpha2/dnsrecord_types.go similarity index 97% rename from pkg/apis/v1alpha1/dnsrecord_types.go rename to pkg/apis/v1alpha2/dnsrecord_types.go index 3b8fe43f2..8f30bfd75 100644 --- a/pkg/apis/v1alpha1/dnsrecord_types.go +++ b/pkg/apis/v1alpha2/dnsrecord_types.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package v1alpha1 +package v1alpha2 import ( "fmt" @@ -102,12 +102,16 @@ func (e *Endpoint) String() string { // DNSRecordSpec defines the desired state of DNSRecord type DNSRecordSpec struct { - // +kubebuilder:validation:Required - // +required - ManagedZoneRef *ManagedZoneReference `json:"managedZone,omitempty"` // +kubebuilder:validation:MinItems=1 // +optional Endpoints []*Endpoint `json:"endpoints,omitempty"` + + // +kubebuilder:validation:Required + // +required + ProviderRef ProviderRef `json:"providerRef"` + + // +optional + ZoneID *string `json:"zoneID,omitempty"` } // DNSRecordStatus defines the observed state of DNSRecord @@ -151,6 +155,10 @@ type DNSRecord struct { Status DNSRecordStatus `json:"status,omitempty"` } +func (p *DNSRecord) GetProviderRef() ProviderRef { + return p.Spec.ProviderRef +} + //+kubebuilder:object:root=true // DNSRecordList contains a list of DNSRecord diff --git a/pkg/apis/v1alpha2/groupversion_info.go b/pkg/apis/v1alpha2/groupversion_info.go new file mode 100644 index 000000000..3f0cb8367 --- /dev/null +++ b/pkg/apis/v1alpha2/groupversion_info.go @@ -0,0 +1,36 @@ +/* +Copyright 2023 The MultiCluster Traffic Controller Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1alpha2 contains API Schema definitions for the kuadrant.io v1alpha2 API group +// +kubebuilder:object:generate=true +// +groupName=kuadrant.io +package v1alpha2 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: "kuadrant.io", Version: "v1alpha2"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/pkg/apis/v1alpha1/managedzone_types.go b/pkg/apis/v1alpha2/managedzone_types.go similarity index 91% rename from pkg/apis/v1alpha1/managedzone_types.go rename to pkg/apis/v1alpha2/managedzone_types.go index 8cbbede47..ffcafde84 100644 --- a/pkg/apis/v1alpha1/managedzone_types.go +++ b/pkg/apis/v1alpha2/managedzone_types.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package v1alpha1 +package v1alpha2 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,22 +31,19 @@ type ManagedZoneReference struct { type ManagedZoneSpec struct { // ID is the provider assigned id of this zone (i.e. route53.HostedZone.ID). // +optional - ID string `json:"id,omitempty"` + ID *string `json:"id,omitempty"` //Domain name of this ManagedZone + // +required // +kubebuilder:validation:Pattern=`^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$` DomainName string `json:"domainName"` //Description for this ManagedZone - Description string `json:"description"` + // +optional + Description *string `json:"description"` // Reference to another managed zone that this managed zone belongs to. // +optional ParentManagedZone *ManagedZoneReference `json:"parentManagedZone,omitempty"` // +required - SecretRef *SecretRef `json:"dnsProviderSecretRef"` -} - -type SecretRef struct { - //+required - Name string `json:"name"` + ProviderRef ProviderRef `json:"providerRef"` } // ManagedZoneStatus defines the observed state of a Zone @@ -89,6 +86,10 @@ type ManagedZone struct { Status ManagedZoneStatus `json:"status,omitempty"` } +func (p *ManagedZone) GetProviderRef() ProviderRef { + return p.Spec.ProviderRef +} + //+kubebuilder:object:root=true // ManagedZoneList contains a list of ManagedZone @@ -98,13 +99,6 @@ type ManagedZoneList struct { Items []ManagedZone `json:"items"` } -type ManagedHost struct { - Subdomain string - Host string - ManagedZone *ManagedZone - DnsRecord *DNSRecord -} - func init() { SchemeBuilder.Register(&ManagedZone{}, &ManagedZoneList{}) } diff --git a/pkg/apis/v1alpha2/shared_types.go b/pkg/apis/v1alpha2/shared_types.go new file mode 100644 index 000000000..8dbb03415 --- /dev/null +++ b/pkg/apis/v1alpha2/shared_types.go @@ -0,0 +1,39 @@ +/* +Copyright 2023 The MultiCluster Traffic Controller Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha2 + +// +kubebuilder:validation:Enum=None;Secret;ManagedZone +type ProviderKind string + +type ProviderRef struct { + //+required + Name string `json:"name"` + //+required + Kind ProviderKind `json:"kind"` +} + +const ( + ProviderKindNone = "None" + ProviderKindSecret = "Secret" + ProviderKindManagedZone = "ManagedZone" +) + +// +kubebuilder:object:generate=false +type ProviderAccessor interface { + GetNamespace() string + GetProviderRef() ProviderRef +} diff --git a/pkg/apis/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/v1alpha2/zz_generated.deepcopy.go new file mode 100644 index 000000000..a76f880c6 --- /dev/null +++ b/pkg/apis/v1alpha2/zz_generated.deepcopy.go @@ -0,0 +1,708 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2022 The MultiCluster Traffic Controller Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha2 + +import ( + "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomWeight) DeepCopyInto(out *CustomWeight) { + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomWeight. +func (in *CustomWeight) DeepCopy() *CustomWeight { + if in == nil { + return nil + } + out := new(CustomWeight) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSPolicy) DeepCopyInto(out *DNSPolicy) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicy. +func (in *DNSPolicy) DeepCopy() *DNSPolicy { + if in == nil { + return nil + } + out := new(DNSPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DNSPolicy) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSPolicyList) DeepCopyInto(out *DNSPolicyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DNSPolicy, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicyList. +func (in *DNSPolicyList) DeepCopy() *DNSPolicyList { + if in == nil { + return nil + } + out := new(DNSPolicyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DNSPolicyList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSPolicySpec) DeepCopyInto(out *DNSPolicySpec) { + *out = *in + in.TargetRef.DeepCopyInto(&out.TargetRef) + if in.HealthCheck != nil { + in, out := &in.HealthCheck, &out.HealthCheck + *out = new(HealthCheckSpec) + (*in).DeepCopyInto(*out) + } + if in.LoadBalancing != nil { + in, out := &in.LoadBalancing, &out.LoadBalancing + *out = new(LoadBalancingSpec) + (*in).DeepCopyInto(*out) + } + out.ProviderRef = in.ProviderRef +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicySpec. +func (in *DNSPolicySpec) DeepCopy() *DNSPolicySpec { + if in == nil { + return nil + } + out := new(DNSPolicySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSPolicyStatus) DeepCopyInto(out *DNSPolicyStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]v1.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.HealthCheck != nil { + in, out := &in.HealthCheck, &out.HealthCheck + *out = new(HealthCheckStatus) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSPolicyStatus. +func (in *DNSPolicyStatus) DeepCopy() *DNSPolicyStatus { + if in == nil { + return nil + } + out := new(DNSPolicyStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSRecord) DeepCopyInto(out *DNSRecord) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecord. +func (in *DNSRecord) DeepCopy() *DNSRecord { + if in == nil { + return nil + } + out := new(DNSRecord) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DNSRecord) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSRecordList) DeepCopyInto(out *DNSRecordList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DNSRecord, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordList. +func (in *DNSRecordList) DeepCopy() *DNSRecordList { + if in == nil { + return nil + } + out := new(DNSRecordList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DNSRecordList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSRecordRef) DeepCopyInto(out *DNSRecordRef) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordRef. +func (in *DNSRecordRef) DeepCopy() *DNSRecordRef { + if in == nil { + return nil + } + out := new(DNSRecordRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSRecordSpec) DeepCopyInto(out *DNSRecordSpec) { + *out = *in + if in.Endpoints != nil { + in, out := &in.Endpoints, &out.Endpoints + *out = make([]*Endpoint, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(Endpoint) + (*in).DeepCopyInto(*out) + } + } + } + out.ProviderRef = in.ProviderRef + if in.ZoneID != nil { + in, out := &in.ZoneID, &out.ZoneID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordSpec. +func (in *DNSRecordSpec) DeepCopy() *DNSRecordSpec { + if in == nil { + return nil + } + out := new(DNSRecordSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DNSRecordStatus) DeepCopyInto(out *DNSRecordStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]v1.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Endpoints != nil { + in, out := &in.Endpoints, &out.Endpoints + *out = make([]*Endpoint, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(Endpoint) + (*in).DeepCopyInto(*out) + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSRecordStatus. +func (in *DNSRecordStatus) DeepCopy() *DNSRecordStatus { + if in == nil { + return nil + } + out := new(DNSRecordStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Endpoint) DeepCopyInto(out *Endpoint) { + *out = *in + if in.Targets != nil { + in, out := &in.Targets, &out.Targets + *out = make(Targets, len(*in)) + copy(*out, *in) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(Labels, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProviderSpecific != nil { + in, out := &in.ProviderSpecific, &out.ProviderSpecific + *out = make(ProviderSpecific, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Endpoint. +func (in *Endpoint) DeepCopy() *Endpoint { + if in == nil { + return nil + } + out := new(Endpoint) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HealthCheckSpec) DeepCopyInto(out *HealthCheckSpec) { + *out = *in + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(int) + **out = **in + } + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(v1alpha1.HealthProtocol) + **out = **in + } + if in.FailureThreshold != nil { + in, out := &in.FailureThreshold, &out.FailureThreshold + *out = new(int) + **out = **in + } + if in.AdditionalHeadersRef != nil { + in, out := &in.AdditionalHeadersRef, &out.AdditionalHeadersRef + *out = new(v1alpha1.AdditionalHeadersRef) + **out = **in + } + if in.ExpectedResponses != nil { + in, out := &in.ExpectedResponses, &out.ExpectedResponses + *out = make([]int, len(*in)) + copy(*out, *in) + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(v1.Duration) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckSpec. +func (in *HealthCheckSpec) DeepCopy() *HealthCheckSpec { + if in == nil { + return nil + } + out := new(HealthCheckSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HealthCheckStatus) DeepCopyInto(out *HealthCheckStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]v1.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckStatus. +func (in *HealthCheckStatus) DeepCopy() *HealthCheckStatus { + if in == nil { + return nil + } + out := new(HealthCheckStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in Labels) DeepCopyInto(out *Labels) { + { + in := &in + *out = make(Labels, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Labels. +func (in Labels) DeepCopy() Labels { + if in == nil { + return nil + } + out := new(Labels) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadBalancingGeo) DeepCopyInto(out *LoadBalancingGeo) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancingGeo. +func (in *LoadBalancingGeo) DeepCopy() *LoadBalancingGeo { + if in == nil { + return nil + } + out := new(LoadBalancingGeo) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadBalancingSpec) DeepCopyInto(out *LoadBalancingSpec) { + *out = *in + if in.Weighted != nil { + in, out := &in.Weighted, &out.Weighted + *out = new(LoadBalancingWeighted) + (*in).DeepCopyInto(*out) + } + if in.Geo != nil { + in, out := &in.Geo, &out.Geo + *out = new(LoadBalancingGeo) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancingSpec. +func (in *LoadBalancingSpec) DeepCopy() *LoadBalancingSpec { + if in == nil { + return nil + } + out := new(LoadBalancingSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadBalancingWeighted) DeepCopyInto(out *LoadBalancingWeighted) { + *out = *in + if in.Custom != nil { + in, out := &in.Custom, &out.Custom + *out = make([]*CustomWeight, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(CustomWeight) + (*in).DeepCopyInto(*out) + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancingWeighted. +func (in *LoadBalancingWeighted) DeepCopy() *LoadBalancingWeighted { + if in == nil { + return nil + } + out := new(LoadBalancingWeighted) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedZone) DeepCopyInto(out *ManagedZone) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZone. +func (in *ManagedZone) DeepCopy() *ManagedZone { + if in == nil { + return nil + } + out := new(ManagedZone) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ManagedZone) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedZoneList) DeepCopyInto(out *ManagedZoneList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ManagedZone, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneList. +func (in *ManagedZoneList) DeepCopy() *ManagedZoneList { + if in == nil { + return nil + } + out := new(ManagedZoneList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ManagedZoneList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedZoneReference) DeepCopyInto(out *ManagedZoneReference) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneReference. +func (in *ManagedZoneReference) DeepCopy() *ManagedZoneReference { + if in == nil { + return nil + } + out := new(ManagedZoneReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedZoneSpec) DeepCopyInto(out *ManagedZoneSpec) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.ParentManagedZone != nil { + in, out := &in.ParentManagedZone, &out.ParentManagedZone + *out = new(ManagedZoneReference) + **out = **in + } + out.ProviderRef = in.ProviderRef +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneSpec. +func (in *ManagedZoneSpec) DeepCopy() *ManagedZoneSpec { + if in == nil { + return nil + } + out := new(ManagedZoneSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedZoneStatus) DeepCopyInto(out *ManagedZoneStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]v1.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.NameServers != nil { + in, out := &in.NameServers, &out.NameServers + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneStatus. +func (in *ManagedZoneStatus) DeepCopy() *ManagedZoneStatus { + if in == nil { + return nil + } + out := new(ManagedZoneStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProviderRef) DeepCopyInto(out *ProviderRef) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderRef. +func (in *ProviderRef) DeepCopy() *ProviderRef { + if in == nil { + return nil + } + out := new(ProviderRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ProviderSpecific) DeepCopyInto(out *ProviderSpecific) { + { + in := &in + *out = make(ProviderSpecific, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderSpecific. +func (in ProviderSpecific) DeepCopy() ProviderSpecific { + if in == nil { + return nil + } + out := new(ProviderSpecific) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProviderSpecificProperty) DeepCopyInto(out *ProviderSpecificProperty) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderSpecificProperty. +func (in *ProviderSpecificProperty) DeepCopy() *ProviderSpecificProperty { + if in == nil { + return nil + } + out := new(ProviderSpecificProperty) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Target) DeepCopyInto(out *Target) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Target. +func (in *Target) DeepCopy() *Target { + if in == nil { + return nil + } + out := new(Target) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in Targets) DeepCopyInto(out *Targets) { + { + in := &in + *out = make(Targets, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Targets. +func (in Targets) DeepCopy() Targets { + if in == nil { + return nil + } + out := new(Targets) + in.DeepCopyInto(out) + return *out +} diff --git a/pkg/controllers/dnshealthcheckprobe/dnshealthcheckprobe_controller.go b/pkg/controllers/dnshealthcheckprobe/dnshealthcheckprobe_controller.go index 4b08b971d..e535ef676 100644 --- a/pkg/controllers/dnshealthcheckprobe/dnshealthcheckprobe_controller.go +++ b/pkg/controllers/dnshealthcheckprobe/dnshealthcheckprobe_controller.go @@ -18,6 +18,7 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/slice" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/health" ) @@ -257,7 +258,7 @@ func (r *DNSHealthCheckProbeReconciler) newProbeNotifierFor(ctx context.Context, ), nil } -func getDNSRecord(ctx context.Context, apiClient client.Client, obj metav1.Object) (*v1alpha1.DNSRecord, bool, error) { +func getDNSRecord(ctx context.Context, apiClient client.Client, obj metav1.Object) (*v1alpha2.DNSRecord, bool, error) { if obj.GetAnnotations() == nil { return nil, false, nil } @@ -269,7 +270,7 @@ func getDNSRecord(ctx context.Context, apiClient client.Client, obj metav1.Objec return nil, false, nil } - dnsRecord := &v1alpha1.DNSRecord{} + dnsRecord := &v1alpha2.DNSRecord{} if err := apiClient.Get(ctx, client.ObjectKey{ Name: name, Namespace: ns, diff --git a/pkg/controllers/dnspolicy/dns_helper.go b/pkg/controllers/dnspolicy/dns_helper.go index a38a7e452..d84dd482e 100644 --- a/pkg/controllers/dnspolicy/dns_helper.go +++ b/pkg/controllers/dnspolicy/dns_helper.go @@ -14,7 +14,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log" gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" @@ -22,6 +21,7 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/slice" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -33,17 +33,15 @@ const ( var ( ErrUnknownRoutingStrategy = fmt.Errorf("unknown routing strategy") - ErrNoManagedZoneForHost = fmt.Errorf("no managed zone for host") - ErrAlreadyAssigned = fmt.Errorf("managed host already assigned") ) type dnsHelper struct { client.Client } -func findMatchingManagedZone(originalHost, host string, zones []v1alpha1.ManagedZone) (*v1alpha1.ManagedZone, string, error) { - if len(zones) == 0 { - return nil, "", fmt.Errorf("%w : %s", ErrNoManagedZoneForHost, host) +func findMatchingZone(originalHost, host string, zones dns.ZoneList) (*dns.Zone, string, error) { + if len(zones.Items) == 0 { + return nil, "", fmt.Errorf("no zones available") } host = strings.ToLower(host) //get the TLD from this host @@ -64,18 +62,18 @@ func findMatchingManagedZone(originalHost, host string, zones []v1alpha1.Managed // we should never be trying to find a managed zone that matches the `originalHost` exactly. Instead, we just continue // on to the next possible valid host to try i.e. the parent domain. if host == originalHost { - return findMatchingManagedZone(originalHost, parentDomain, zones) + return findMatchingZone(originalHost, parentDomain, zones) } - zone, ok := slice.Find(zones, func(zone v1alpha1.ManagedZone) bool { - return strings.ToLower(zone.Spec.DomainName) == host + zone, ok := slice.Find(zones.Items, func(zone *dns.Zone) bool { + return strings.ToLower(*zone.DNSName) == host }) if ok { - subdomain := strings.Replace(strings.ToLower(originalHost), "."+strings.ToLower(zone.Spec.DomainName), "", 1) - return &zone, subdomain, nil + subdomain := strings.Replace(strings.ToLower(originalHost), "."+strings.ToLower(*zone.DNSName), "", 1) + return zone, subdomain, nil } - return findMatchingManagedZone(originalHost, parentDomain, zones) + return findMatchingZone(originalHost, parentDomain, zones) } @@ -104,28 +102,29 @@ func gatewayDNSRecordLabels(gwKey client.ObjectKey) map[string]string { } } -func (dh *dnsHelper) buildDNSRecordForListener(gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha1.DNSPolicy, targetListener gatewayapiv1.Listener, managedZone *v1alpha1.ManagedZone) *v1alpha1.DNSRecord { +func (dh *dnsHelper) buildDNSRecordForListener(gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha2.DNSPolicy, targetListener gatewayapiv1.Listener, zone *dns.Zone) *v1alpha2.DNSRecord { - dnsRecord := &v1alpha1.DNSRecord{ + dnsRecord := &v1alpha2.DNSRecord{ ObjectMeta: metav1.ObjectMeta{ Name: dnsRecordName(gateway.Name, string(targetListener.Name)), - Namespace: managedZone.Namespace, + Namespace: dnsPolicy.Namespace, Labels: commonDNSRecordLabels(client.ObjectKeyFromObject(gateway), client.ObjectKeyFromObject(dnsPolicy)), }, - Spec: v1alpha1.DNSRecordSpec{ - ManagedZoneRef: &v1alpha1.ManagedZoneReference{ - Name: managedZone.Name, - }, + Spec: v1alpha2.DNSRecordSpec{ + ProviderRef: dnsPolicy.Spec.ProviderRef, }, } + if zone != nil { + dnsRecord.Spec.ZoneID = zone.ID + } dnsRecord.Labels[LabelListenerReference] = string(targetListener.Name) return dnsRecord } // getDNSRecordForListener returns a v1alpha1.DNSRecord, if one exists, for the given listener in the given v1alpha1.ManagedZone. -func (dh *dnsHelper) getDNSRecordForListener(ctx context.Context, listener gatewayapiv1.Listener, owner metav1.Object) (*v1alpha1.DNSRecord, error) { +func (dh *dnsHelper) getDNSRecordForListener(ctx context.Context, listener gatewayapiv1.Listener, owner metav1.Object) (*v1alpha2.DNSRecord, error) { recordName := dnsRecordName(owner.GetName(), string(listener.Name)) - dnsRecord := &v1alpha1.DNSRecord{} + dnsRecord := &v1alpha2.DNSRecord{} if err := dh.Get(ctx, client.ObjectKey{Name: recordName, Namespace: owner.GetNamespace()}, dnsRecord); err != nil { if k8serrors.IsNotFound(err) { log.Log.V(1).Info("no dnsrecord found for listener ", "listener", listener) @@ -146,21 +145,21 @@ func withGatewayListener[T metav1.Object](gateway common.GatewayWrapper, listene return obj } -func (dh *dnsHelper) setEndpoints(ctx context.Context, mcgTarget *dns.MultiClusterGatewayTarget, dnsRecord *v1alpha1.DNSRecord, listener gatewayapiv1.Listener, strategy v1alpha1.RoutingStrategy) error { +func (dh *dnsHelper) setEndpoints(ctx context.Context, mcgTarget *dns.MultiClusterGatewayTarget, dnsRecord *v1alpha2.DNSRecord, listener gatewayapiv1.Listener, strategy v1alpha2.RoutingStrategy) error { old := dnsRecord.DeepCopy() gwListenerHost := string(*listener.Hostname) - var endpoints []*v1alpha1.Endpoint + var endpoints []*v1alpha2.Endpoint //Health Checks currently modify endpoints so we have to keep existing ones in order to not lose health check ids - currentEndpoints := make(map[string]*v1alpha1.Endpoint, len(dnsRecord.Spec.Endpoints)) + currentEndpoints := make(map[string]*v1alpha2.Endpoint, len(dnsRecord.Spec.Endpoints)) for _, endpoint := range dnsRecord.Spec.Endpoints { currentEndpoints[endpoint.SetID()] = endpoint } switch strategy { - case v1alpha1.SimpleRoutingStrategy: + case v1alpha2.SimpleRoutingStrategy: endpoints = dh.getSimpleEndpoints(mcgTarget, gwListenerHost, currentEndpoints) - case v1alpha1.LoadBalancedRoutingStrategy: + case v1alpha2.LoadBalancedRoutingStrategy: endpoints = dh.getLoadBalancedEndpoints(mcgTarget, gwListenerHost, currentEndpoints) default: return fmt.Errorf("%w : %s", ErrUnknownRoutingStrategy, strategy) @@ -181,10 +180,10 @@ func (dh *dnsHelper) setEndpoints(ctx context.Context, mcgTarget *dns.MultiClust // getSimpleEndpoints returns the endpoints for the given MultiClusterGatewayTarget using the simple routing strategy -func (dh *dnsHelper) getSimpleEndpoints(mcgTarget *dns.MultiClusterGatewayTarget, hostname string, currentEndpoints map[string]*v1alpha1.Endpoint) []*v1alpha1.Endpoint { +func (dh *dnsHelper) getSimpleEndpoints(mcgTarget *dns.MultiClusterGatewayTarget, hostname string, currentEndpoints map[string]*v1alpha2.Endpoint) []*v1alpha2.Endpoint { var ( - endpoints []*v1alpha1.Endpoint + endpoints []*v1alpha2.Endpoint ipValues []string hostValues []string ) @@ -200,13 +199,13 @@ func (dh *dnsHelper) getSimpleEndpoints(mcgTarget *dns.MultiClusterGatewayTarget } if len(ipValues) > 0 { - endpoint := createOrUpdateEndpoint(hostname, ipValues, v1alpha1.ARecordType, "", dns.DefaultTTL, currentEndpoints) + endpoint := createOrUpdateEndpoint(hostname, ipValues, v1alpha2.ARecordType, "", dns.DefaultTTL, currentEndpoints) endpoints = append(endpoints, endpoint) } //ToDO This could possibly result in an invalid record since you can't have multiple CNAME target values https://github.com/Kuadrant/multicluster-gateway-controller/issues/663 if len(hostValues) > 0 { - endpoint := createOrUpdateEndpoint(hostname, hostValues, v1alpha1.CNAMERecordType, "", dns.DefaultTTL, currentEndpoints) + endpoint := createOrUpdateEndpoint(hostname, hostValues, v1alpha2.CNAMERecordType, "", dns.DefaultTTL, currentEndpoints) endpoints = append(endpoints, endpoint) } @@ -252,7 +251,7 @@ func (dh *dnsHelper) getSimpleEndpoints(mcgTarget *dns.MultiClusterGatewayTarget // ab2.lb-a1b2.shop.example.com A 192.22.2.3 // ab3.lb-a1b2.shop.example.com A 192.22.2.4 -func (dh *dnsHelper) getLoadBalancedEndpoints(mcgTarget *dns.MultiClusterGatewayTarget, hostname string, currentEndpoints map[string]*v1alpha1.Endpoint) []*v1alpha1.Endpoint { +func (dh *dnsHelper) getLoadBalancedEndpoints(mcgTarget *dns.MultiClusterGatewayTarget, hostname string, currentEndpoints map[string]*v1alpha2.Endpoint) []*v1alpha2.Endpoint { cnameHost := hostname if isWildCardHost(hostname) { @@ -260,15 +259,15 @@ func (dh *dnsHelper) getLoadBalancedEndpoints(mcgTarget *dns.MultiClusterGateway } var ( - endpoints []*v1alpha1.Endpoint - endpoint *v1alpha1.Endpoint - defaultEndpoint *v1alpha1.Endpoint + endpoints []*v1alpha2.Endpoint + endpoint *v1alpha2.Endpoint + defaultEndpoint *v1alpha2.Endpoint ) lbName := strings.ToLower(fmt.Sprintf("lb-%s.%s", mcgTarget.GetShortCode(), cnameHost)) for geoCode, cgwTargets := range mcgTarget.GroupTargetsByGeo() { geoLbName := strings.ToLower(fmt.Sprintf("%s.%s", geoCode, lbName)) - var clusterEndpoints []*v1alpha1.Endpoint + var clusterEndpoints []*v1alpha2.Endpoint for _, cgwTarget := range cgwTargets { var ipValues []string @@ -283,13 +282,13 @@ func (dh *dnsHelper) getLoadBalancedEndpoints(mcgTarget *dns.MultiClusterGateway if len(ipValues) > 0 { clusterLbName := strings.ToLower(fmt.Sprintf("%s.%s", cgwTarget.GetShortCode(), lbName)) - endpoint = createOrUpdateEndpoint(clusterLbName, ipValues, v1alpha1.ARecordType, "", dns.DefaultTTL, currentEndpoints) + endpoint = createOrUpdateEndpoint(clusterLbName, ipValues, v1alpha2.ARecordType, "", dns.DefaultTTL, currentEndpoints) clusterEndpoints = append(clusterEndpoints, endpoint) hostValues = append(hostValues, clusterLbName) } for _, hostValue := range hostValues { - endpoint = createOrUpdateEndpoint(geoLbName, []string{hostValue}, v1alpha1.CNAMERecordType, hostValue, dns.DefaultTTL, currentEndpoints) + endpoint = createOrUpdateEndpoint(geoLbName, []string{hostValue}, v1alpha2.CNAMERecordType, hostValue, dns.DefaultTTL, currentEndpoints) endpoint.SetProviderSpecific(dns.ProviderSpecificWeight, strconv.Itoa(cgwTarget.GetWeight())) clusterEndpoints = append(clusterEndpoints, endpoint) } @@ -300,7 +299,7 @@ func (dh *dnsHelper) getLoadBalancedEndpoints(mcgTarget *dns.MultiClusterGateway endpoints = append(endpoints, clusterEndpoints...) //Create lbName CNAME (lb-a1b2.shop.example.com -> default.lb-a1b2.shop.example.com) - endpoint = createOrUpdateEndpoint(lbName, []string{geoLbName}, v1alpha1.CNAMERecordType, string(geoCode), dns.DefaultCnameTTL, currentEndpoints) + endpoint = createOrUpdateEndpoint(lbName, []string{geoLbName}, v1alpha2.CNAMERecordType, string(geoCode), dns.DefaultCnameTTL, currentEndpoints) //Deal with the default geo endpoint first if geoCode.IsDefaultCode() { @@ -309,7 +308,7 @@ func (dh *dnsHelper) getLoadBalancedEndpoints(mcgTarget *dns.MultiClusterGateway continue } else if (geoCode == mcgTarget.GetDefaultGeo()) || defaultEndpoint == nil { // Ensure that a `defaultEndpoint` is always set, but the expected default takes precedence - defaultEndpoint = createOrUpdateEndpoint(lbName, []string{geoLbName}, v1alpha1.CNAMERecordType, "default", dns.DefaultCnameTTL, currentEndpoints) + defaultEndpoint = createOrUpdateEndpoint(lbName, []string{geoLbName}, v1alpha2.CNAMERecordType, "default", dns.DefaultCnameTTL, currentEndpoints) } endpoint.SetProviderSpecific(dns.ProviderSpecificGeoCode, string(geoCode)) @@ -322,19 +321,19 @@ func (dh *dnsHelper) getLoadBalancedEndpoints(mcgTarget *dns.MultiClusterGateway defaultEndpoint.SetProviderSpecific(dns.ProviderSpecificGeoCode, string(dns.WildcardGeo)) endpoints = append(endpoints, defaultEndpoint) //Create gwListenerHost CNAME (shop.example.com -> lb-a1b2.shop.example.com) - endpoint = createOrUpdateEndpoint(hostname, []string{lbName}, v1alpha1.CNAMERecordType, "", dns.DefaultCnameTTL, currentEndpoints) + endpoint = createOrUpdateEndpoint(hostname, []string{lbName}, v1alpha2.CNAMERecordType, "", dns.DefaultCnameTTL, currentEndpoints) endpoints = append(endpoints, endpoint) } return endpoints } -func createOrUpdateEndpoint(dnsName string, targets v1alpha1.Targets, recordType v1alpha1.DNSRecordType, setIdentifier string, - recordTTL v1alpha1.TTL, currentEndpoints map[string]*v1alpha1.Endpoint) (endpoint *v1alpha1.Endpoint) { +func createOrUpdateEndpoint(dnsName string, targets v1alpha2.Targets, recordType v1alpha2.DNSRecordType, setIdentifier string, + recordTTL v1alpha2.TTL, currentEndpoints map[string]*v1alpha2.Endpoint) (endpoint *v1alpha2.Endpoint) { ok := false endpointID := dnsName + setIdentifier if endpoint, ok = currentEndpoints[endpointID]; !ok { - endpoint = &v1alpha1.Endpoint{} + endpoint = &v1alpha2.Endpoint{} if setIdentifier != "" { endpoint.SetIdentifier = setIdentifier } @@ -348,7 +347,7 @@ func createOrUpdateEndpoint(dnsName string, targets v1alpha1.Targets, recordType // removeDNSForDeletedListeners remove any DNSRecords that are associated with listeners that no longer exist in this gateway func (dh *dnsHelper) removeDNSForDeletedListeners(ctx context.Context, upstreamGateway *gatewayapiv1.Gateway) error { - dnsList := &v1alpha1.DNSRecordList{} + dnsList := &v1alpha2.DNSRecordList{} //List all dns records that belong to this gateway labelSelector := &client.MatchingLabels{ LabelGatewayReference: upstreamGateway.Name, @@ -375,28 +374,14 @@ func (dh *dnsHelper) removeDNSForDeletedListeners(ctx context.Context, upstreamG } -func (dh *dnsHelper) getManagedZoneForListener(ctx context.Context, ns string, listener gatewayapiv1.Listener) (*v1alpha1.ManagedZone, error) { - var managedZones v1alpha1.ManagedZoneList - if err := dh.List(ctx, &managedZones, client.InNamespace(ns)); err != nil { - log.FromContext(ctx).Error(err, "unable to list managed zones for gateway ", "in ns", ns) - return nil, err - } - host := string(*listener.Hostname) - mz, _, err := findMatchingManagedZone(host, host, managedZones.Items) - return mz, err -} - func dnsRecordName(gatewayName, listenerName string) string { return fmt.Sprintf("%s-%s", gatewayName, listenerName) } -func (dh *dnsHelper) createDNSRecordForListener(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha1.DNSPolicy, mz *v1alpha1.ManagedZone, listener gatewayapiv1.Listener) (*v1alpha1.DNSRecord, error) { +func (dh *dnsHelper) createDNSRecordForListener(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha2.DNSPolicy, listener gatewayapiv1.Listener, zone *dns.Zone) (*v1alpha2.DNSRecord, error) { logger := log.FromContext(ctx) logger.Info("creating dns for gateway listener", "listener", listener.Name) - dnsRecord := dh.buildDNSRecordForListener(gateway, dnsPolicy, listener, mz) - if err := controllerutil.SetControllerReference(mz, dnsRecord, dh.Scheme()); err != nil { - return dnsRecord, err - } + dnsRecord := dh.buildDNSRecordForListener(gateway, dnsPolicy, listener, zone) err := dh.Create(ctx, dnsRecord, &client.CreateOptions{}) if err != nil && !k8serrors.IsAlreadyExists(err) { @@ -413,7 +398,7 @@ func (dh *dnsHelper) createDNSRecordForListener(ctx context.Context, gateway *ga func (dh *dnsHelper) deleteDNSRecordForListener(ctx context.Context, owner metav1.Object, listener gatewayapiv1.Listener) error { recordName := dnsRecordName(owner.GetName(), string(listener.Name)) - dnsRecord := v1alpha1.DNSRecord{ + dnsRecord := v1alpha2.DNSRecord{ ObjectMeta: metav1.ObjectMeta{ Name: recordName, Namespace: owner.GetNamespace(), @@ -426,7 +411,7 @@ func isWildCardHost(host string) bool { return strings.HasPrefix(host, "*") } -func (dh *dnsHelper) getDNSHealthCheckProbes(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha1.DNSPolicy) ([]*v1alpha1.DNSHealthCheckProbe, error) { +func (dh *dnsHelper) getDNSHealthCheckProbes(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha2.DNSPolicy) ([]*v1alpha1.DNSHealthCheckProbe, error) { list := &v1alpha1.DNSHealthCheckProbeList{} if err := dh.List(ctx, list, &client.ListOptions{ LabelSelector: labels.SelectorFromSet(commonDNSRecordLabels(client.ObjectKeyFromObject(gateway), client.ObjectKeyFromObject(dnsPolicy))), diff --git a/pkg/controllers/dnspolicy/dns_helper_test.go b/pkg/controllers/dnspolicy/dns_helper_test.go index 198a7dd35..e23a758fc 100644 --- a/pkg/controllers/dnspolicy/dns_helper_test.go +++ b/pkg/controllers/dnspolicy/dns_helper_test.go @@ -17,6 +17,7 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" @@ -27,6 +28,9 @@ func testScheme(t *testing.T) *runtime.Scheme { if err := v1alpha1.AddToScheme(scheme); err != nil { t.Fatalf("falied to add work scheme %s ", err) } + if err := v1alpha2.AddToScheme(scheme); err != nil { + t.Fatalf("falied to add work scheme %s ", err) + } if err := gatewayapiv1.AddToScheme(scheme); err != nil { t.Fatalf("falied to add work scheme %s ", err) } @@ -42,8 +46,8 @@ func getTestListener(hostName string) gatewayapiv1.Listener { } func TestSetProviderSpecific(t *testing.T) { - endpoint := &v1alpha1.Endpoint{ - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + endpoint := &v1alpha2.Endpoint{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ {Name: "weight", Value: "120"}, }, } @@ -63,16 +67,16 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { testListenerName = "test" ) type args struct { - gateway *gatewayapiv1.Gateway - dnsPolicy *v1alpha1.DNSPolicy - managedZone *v1alpha1.ManagedZone - listener gatewayapiv1.Listener + gateway *gatewayapiv1.Gateway + dnsPolicy *v1alpha2.DNSPolicy + zone *dns.Zone + listener gatewayapiv1.Listener } testCases := []struct { name string args args - recordList *v1alpha1.DNSRecordList - wantRecord *v1alpha1.DNSRecord + recordList *v1alpha2.DNSRecordList + wantRecord *v1alpha2.DNSRecord wantErr bool }{ { @@ -85,24 +89,19 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { }, }, listener: getTestListener("test.domain.com"), - dnsPolicy: &v1alpha1.DNSPolicy{ + dnsPolicy: &v1alpha2.DNSPolicy{ ObjectMeta: v1.ObjectMeta{ Name: "tstpolicy", Namespace: "test", }, }, - managedZone: &v1alpha1.ManagedZone{ - ObjectMeta: v1.ObjectMeta{ - Name: "mz", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "domain.com", - }, + zone: &dns.Zone{ + ID: testutil.Pointer("mz"), + DNSName: testutil.Pointer("domain.com"), }, }, - recordList: &v1alpha1.DNSRecordList{}, - wantRecord: &v1alpha1.DNSRecord{ + recordList: &v1alpha2.DNSRecordList{}, + wantRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: dnsRecordName(testGatewayName, testListenerName), Namespace: "test", @@ -113,21 +112,10 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { LabelGatewayReference: "tstgateway", LabelListenerReference: testListenerName, }, - OwnerReferences: []v1.OwnerReference{ - { - APIVersion: "kuadrant.io/v1alpha1", - Kind: "ManagedZone", - Name: "mz", - Controller: testutil.Pointer(true), - BlockOwnerDeletion: testutil.Pointer(true), - }, - }, ResourceVersion: "1", }, - Spec: v1alpha1.DNSRecordSpec{ - ManagedZoneRef: &v1alpha1.ManagedZoneReference{ - Name: "mz", - }, + Spec: v1alpha2.DNSRecordSpec{ + ZoneID: testutil.Pointer("mz"), }, }, }, @@ -141,24 +129,19 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { }, }, listener: getTestListener("test.domain.com"), - dnsPolicy: &v1alpha1.DNSPolicy{ + dnsPolicy: &v1alpha2.DNSPolicy{ ObjectMeta: v1.ObjectMeta{ Name: "tstpolicy", Namespace: "test", }, }, - managedZone: &v1alpha1.ManagedZone{ - ObjectMeta: v1.ObjectMeta{ - Name: "mz", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "domain.com", - }, + zone: &dns.Zone{ + ID: testutil.Pointer("mz"), + DNSName: testutil.Pointer("domain.com"), }, }, - recordList: &v1alpha1.DNSRecordList{ - Items: []v1alpha1.DNSRecord{ + recordList: &v1alpha2.DNSRecordList{ + Items: []v1alpha2.DNSRecord{ { ObjectMeta: v1.ObjectMeta{ Name: dnsRecordName(testGatewayName, testListenerName), @@ -167,7 +150,7 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { }, }, }, - wantRecord: &v1alpha1.DNSRecord{ + wantRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: dnsRecordName(testGatewayName, testListenerName), Namespace: "test", @@ -175,7 +158,7 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { }, TypeMeta: v1.TypeMeta{ Kind: "DNSRecord", - APIVersion: "kuadrant.io/v1alpha1", + APIVersion: "kuadrant.io/v1alpha2", }, }, }, @@ -189,26 +172,21 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { }, }, listener: getTestListener("*.domain.com"), - dnsPolicy: &v1alpha1.DNSPolicy{ + dnsPolicy: &v1alpha2.DNSPolicy{ ObjectMeta: v1.ObjectMeta{ Name: "tstpolicy", Namespace: "test", }, }, - managedZone: &v1alpha1.ManagedZone{ - ObjectMeta: v1.ObjectMeta{ - Name: "mz", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "domain.com", - }, + zone: &dns.Zone{ + ID: testutil.Pointer("mz"), + DNSName: testutil.Pointer("domain.com"), }, }, - recordList: &v1alpha1.DNSRecordList{ - Items: []v1alpha1.DNSRecord{}, + recordList: &v1alpha2.DNSRecordList{ + Items: []v1alpha2.DNSRecord{}, }, - wantRecord: &v1alpha1.DNSRecord{ + wantRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: dnsRecordName(testGatewayName, testListenerName), Namespace: "test", @@ -219,21 +197,10 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { LabelGatewayReference: "tstgateway", LabelListenerReference: testListenerName, }, - OwnerReferences: []v1.OwnerReference{ - { - APIVersion: "kuadrant.io/v1alpha1", - Kind: "ManagedZone", - Name: "mz", - Controller: testutil.Pointer(true), - BlockOwnerDeletion: testutil.Pointer(true), - }, - }, ResourceVersion: "1", }, - Spec: v1alpha1.DNSRecordSpec{ - ManagedZoneRef: &v1alpha1.ManagedZoneReference{ - Name: "mz", - }, + Spec: v1alpha2.DNSRecordSpec{ + ZoneID: testutil.Pointer("mz"), }, }, }, @@ -243,7 +210,7 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { f := fake.NewClientBuilder().WithScheme(testScheme(t)).WithLists(testCase.recordList).Build() s := dnsHelper{Client: f} - gotRecord, err := s.createDNSRecordForListener(context.TODO(), testCase.args.gateway, testCase.args.dnsPolicy, testCase.args.managedZone, testCase.args.listener) + gotRecord, err := s.createDNSRecordForListener(context.TODO(), testCase.args.gateway, testCase.args.dnsPolicy, testCase.args.listener, testCase.args.zone) if (err != nil) != testCase.wantErr { t.Errorf("CreateDNSRecord() error = %v, wantErr %v", err, testCase.wantErr) return @@ -255,24 +222,21 @@ func Test_dnsHelper_createDNSRecordForListener(t *testing.T) { } } -func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { +func Test_dnsHelper_findMatchingZone(t *testing.T) { testCases := []struct { name string Host string - Zones []v1alpha1.ManagedZone - Assert func(t *testing.T, zone *v1alpha1.ManagedZone, subdomain string, err error) + Zones dns.ZoneList + Assert func(t *testing.T, zone *dns.Zone, subdomain string, err error) }{ { name: "finds the matching managed zone", Host: "sub.domain.test.example.com", - Zones: []v1alpha1.ManagedZone{ - { - ObjectMeta: v1.ObjectMeta{ - Name: "example.com", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "example.com", + Zones: dns.ZoneList{ + Items: []*dns.Zone{ + { + ID: testutil.Pointer("example.com"), + DNSName: testutil.Pointer("example.com"), }, }, }, @@ -281,23 +245,15 @@ func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { { name: "finds the most exactly matching managed zone", Host: "sub.domain.test.example.com", - Zones: []v1alpha1.ManagedZone{ - { - ObjectMeta: v1.ObjectMeta{ - Name: "example.com", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "example.com", - }, - }, - { - ObjectMeta: v1.ObjectMeta{ - Name: "test.example.com", - Namespace: "test", + Zones: dns.ZoneList{ + Items: []*dns.Zone{ + { + ID: testutil.Pointer("example.com"), + DNSName: testutil.Pointer("example.com"), }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "test.example.com", + { + ID: testutil.Pointer("test.example.com"), + DNSName: testutil.Pointer("test.example.com"), }, }, }, @@ -306,14 +262,11 @@ func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { { name: "returns a single subdomain", Host: "sub.test.example.com", - Zones: []v1alpha1.ManagedZone{ - { - ObjectMeta: v1.ObjectMeta{ - Name: "test.example.com", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "test.example.com", + Zones: dns.ZoneList{ + Items: []*dns.Zone{ + { + ID: testutil.Pointer("test.example.com"), + DNSName: testutil.Pointer("test.example.com"), }, }, }, @@ -322,14 +275,11 @@ func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { { name: "returns an error when nothing matches", Host: "sub.test.example.com", - Zones: []v1alpha1.ManagedZone{ - { - ObjectMeta: v1.ObjectMeta{ - Name: "testing.example.com", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "testing.example.com", + Zones: dns.ZoneList{ + Items: []*dns.Zone{ + { + ID: testutil.Pointer("testing.example.com"), + DNSName: testutil.Pointer("testing.example.com"), }, }, }, @@ -338,14 +288,11 @@ func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { { name: "handles TLD with a dot", Host: "sub.domain.test.example.co.uk", - Zones: []v1alpha1.ManagedZone{ - { - ObjectMeta: v1.ObjectMeta{ - Name: "example.co.uk", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "example.co.uk", + Zones: dns.ZoneList{ + Items: []*dns.Zone{ + { + ID: testutil.Pointer("example.co.uk"), + DNSName: testutil.Pointer("example.co.uk"), }, }, }, @@ -354,24 +301,23 @@ func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { { name: "TLD with a . will not match against a managedzone of the TLD", Host: "sub.domain.test.example.co.uk", - Zones: []v1alpha1.ManagedZone{ - { - ObjectMeta: v1.ObjectMeta{ - Name: "co.uk", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "co.uk", + Zones: dns.ZoneList{ + Items: []*dns.Zone{ + { + ID: testutil.Pointer("co.uk"), + DNSName: testutil.Pointer("co.uk"), }, }, }, Assert: assertSub("", "", "no valid zone found"), }, { - name: "no managed zones for host give error", - Host: "sub.domain.test.example.co.uk", - Zones: []v1alpha1.ManagedZone{}, - Assert: func(t *testing.T, zone *v1alpha1.ManagedZone, subdomain string, err error) { + name: "no managed zones for host give error", + Host: "sub.domain.test.example.co.uk", + Zones: dns.ZoneList{ + Items: []*dns.Zone{}, + }, + Assert: func(t *testing.T, zone *dns.Zone, subdomain string, err error) { if err == nil { t.Fatalf("expected error, got %v", err) } @@ -380,14 +326,11 @@ func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { { name: "should not match when host and zone domain name are identical", Host: "test.example.com", - Zones: []v1alpha1.ManagedZone{ - { - ObjectMeta: v1.ObjectMeta{ - Name: "test.example.com", - Namespace: "test", - }, - Spec: v1alpha1.ManagedZoneSpec{ - DomainName: "test.example.com", + Zones: dns.ZoneList{ + Items: []*dns.Zone{ + { + ID: testutil.Pointer("test.example.com"), + DNSName: testutil.Pointer("test.example.com"), }, }, }, @@ -397,7 +340,7 @@ func Test_dnsHelper_findMatchingManagedZone(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { - mx, subDomain, err := findMatchingManagedZone(testCase.Host, testCase.Host, testCase.Zones) + mx, subDomain, err := findMatchingZone(testCase.Host, testCase.Host, testCase.Zones) testCase.Assert(t, mx, subDomain, err) }) } @@ -409,8 +352,8 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { name string mcgTarget *dns.MultiClusterGatewayTarget listener gatewayapiv1.Listener - dnsRecord *v1alpha1.DNSRecord - wantSpec *v1alpha1.DNSRecordSpec + dnsRecord *v1alpha2.DNSRecord + wantSpec *v1alpha2.DNSRecordSpec wantErr bool }{ { @@ -464,13 +407,13 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { }, }, }, - dnsRecord: &v1alpha1.DNSRecord{ + dnsRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "test.example.com", }, }, - wantSpec: &v1alpha1.DNSRecordSpec{ - Endpoints: []*v1alpha1.Endpoint{ + wantSpec: &v1alpha2.DNSRecordSpec{ + Endpoints: []*v1alpha2.Endpoint{ { DNSName: "20qri0.lb-ocnswx.example.com", Targets: []string{"1.1.1.1", "2.2.2.2"}, @@ -483,7 +426,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "20qri0.lb-ocnswx.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -496,7 +439,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "mylb.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -509,7 +452,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "default", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "*", @@ -575,19 +518,19 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { Weight: testutil.Pointer(120), }, }, - LoadBalancing: &v1alpha1.LoadBalancingSpec{ - Geo: &v1alpha1.LoadBalancingGeo{ + LoadBalancing: &v1alpha2.LoadBalancingSpec{ + Geo: &v1alpha2.LoadBalancingGeo{ DefaultGeo: "NA", }, }, }, - dnsRecord: &v1alpha1.DNSRecord{ + dnsRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "gw-test", }, }, - wantSpec: &v1alpha1.DNSRecordSpec{ - Endpoints: []*v1alpha1.Endpoint{ + wantSpec: &v1alpha2.DNSRecordSpec{ + Endpoints: []*v1alpha2.Endpoint{ { DNSName: "20qri0.lb-ocnswx.example.com", Targets: []string{"1.1.1.1", "2.2.2.2"}, @@ -600,7 +543,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "20qri0.lb-ocnswx.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -613,7 +556,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "mylb.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -626,7 +569,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "default", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "*", @@ -639,7 +582,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "NA", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "NA", @@ -652,7 +595,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "IE", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "IE", @@ -723,13 +666,13 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { }, }, }, - dnsRecord: &v1alpha1.DNSRecord{ + dnsRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "test.example.com", }, }, - wantSpec: &v1alpha1.DNSRecordSpec{ - Endpoints: []*v1alpha1.Endpoint{ + wantSpec: &v1alpha2.DNSRecordSpec{ + Endpoints: []*v1alpha2.Endpoint{ { DNSName: "20qri0.lb-0ecjaw.test.example.com", Targets: []string{"1.1.1.1", "2.2.2.2"}, @@ -742,7 +685,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "20qri0.lb-0ecjaw.test.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -755,7 +698,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "mylb.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -768,7 +711,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "default", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "*", @@ -835,19 +778,19 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { Weight: testutil.Pointer(120), }, }, - LoadBalancing: &v1alpha1.LoadBalancingSpec{ - Geo: &v1alpha1.LoadBalancingGeo{ + LoadBalancing: &v1alpha2.LoadBalancingSpec{ + Geo: &v1alpha2.LoadBalancingGeo{ DefaultGeo: "NA", }, }, }, - dnsRecord: &v1alpha1.DNSRecord{ + dnsRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "test.example.com", }, }, - wantSpec: &v1alpha1.DNSRecordSpec{ - Endpoints: []*v1alpha1.Endpoint{ + wantSpec: &v1alpha2.DNSRecordSpec{ + Endpoints: []*v1alpha2.Endpoint{ { DNSName: "20qri0.lb-ocnswx.test.example.com", Targets: []string{"1.1.1.1", "2.2.2.2"}, @@ -860,7 +803,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "20qri0.lb-ocnswx.test.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -873,7 +816,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "mylb.example.com", RecordTTL: dns.DefaultTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "weight", Value: "120", @@ -886,7 +829,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "default", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "*", @@ -899,7 +842,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "NA", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "NA", @@ -912,7 +855,7 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { RecordType: "CNAME", SetIdentifier: "IE", RecordTTL: dns.DefaultCnameTTL, - ProviderSpecific: []v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: []v1alpha2.ProviderSpecificProperty{ { Name: "geo-code", Value: "IE", @@ -965,19 +908,19 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { Weight: testutil.Pointer(120), }, }, - LoadBalancing: &v1alpha1.LoadBalancingSpec{ - Geo: &v1alpha1.LoadBalancingGeo{ + LoadBalancing: &v1alpha2.LoadBalancingSpec{ + Geo: &v1alpha2.LoadBalancingGeo{ DefaultGeo: "NA", }, }, }, - dnsRecord: &v1alpha1.DNSRecord{ + dnsRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "test.example.com", }, }, - wantSpec: &v1alpha1.DNSRecordSpec{ - Endpoints: []*v1alpha1.Endpoint{}, + wantSpec: &v1alpha2.DNSRecordSpec{ + Endpoints: []*v1alpha2.Endpoint{}, }, }, } @@ -985,11 +928,11 @@ func Test_dnsHelper_setEndpoints(t *testing.T) { t.Run(testCase.name, func(t *testing.T) { f := fake.NewClientBuilder().WithScheme(testScheme(t)).WithObjects(testCase.dnsRecord).Build() s := dnsHelper{Client: f} - if err := s.setEndpoints(context.TODO(), testCase.mcgTarget, testCase.dnsRecord, testCase.listener, v1alpha1.LoadBalancedRoutingStrategy); (err != nil) != testCase.wantErr { + if err := s.setEndpoints(context.TODO(), testCase.mcgTarget, testCase.dnsRecord, testCase.listener, v1alpha2.LoadBalancedRoutingStrategy); (err != nil) != testCase.wantErr { t.Errorf("SetEndpoints() error = %v, wantErr %v", err, testCase.wantErr) } - gotRecord := &v1alpha1.DNSRecord{} + gotRecord := &v1alpha2.DNSRecord{} if err := f.Get(context.TODO(), client.ObjectKeyFromObject(testCase.dnsRecord), gotRecord); err != nil { t.Errorf("error gettinging updated DNSrecord") } else { @@ -1020,14 +963,14 @@ func Test_dnsHelper_getDNSRecordForListener(t *testing.T) { name string Listener gatewayapiv1.Listener Assert func(t *testing.T, err error) - DNSRecord *v1alpha1.DNSRecord + DNSRecord *v1alpha2.DNSRecord Gateway *gatewayapiv1.Gateway - DNSPolicy *v1alpha1.DNSPolicy + DNSPolicy *v1alpha2.DNSPolicy }{ { name: "test get dns record returns record", Listener: getTestListener("a.b.c.com"), - DNSRecord: &v1alpha1.DNSRecord{ + DNSRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "gw-test", Namespace: "test", @@ -1051,7 +994,7 @@ func Test_dnsHelper_getDNSRecordForListener(t *testing.T) { }, { name: "test get dns error when not found", - DNSRecord: &v1alpha1.DNSRecord{ + DNSRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "gw-test", Namespace: "test", @@ -1062,7 +1005,7 @@ func Test_dnsHelper_getDNSRecordForListener(t *testing.T) { }, { name: "test get dns error when referencing different Gateway", - DNSRecord: &v1alpha1.DNSRecord{ + DNSRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "gw-test", Namespace: "test", @@ -1086,7 +1029,7 @@ func Test_dnsHelper_getDNSRecordForListener(t *testing.T) { { name: "test get dns error when not owned by Gateway", Listener: getTestListener("other.com"), - DNSRecord: &v1alpha1.DNSRecord{ + DNSRecord: &v1alpha2.DNSRecord{ ObjectMeta: v1.ObjectMeta{ Name: "other.com", Namespace: "test", @@ -1104,7 +1047,7 @@ func Test_dnsHelper_getDNSRecordForListener(t *testing.T) { Namespace: "test", }, }, - DNSPolicy: &v1alpha1.DNSPolicy{ + DNSPolicy: &v1alpha2.DNSPolicy{ ObjectMeta: v1.ObjectMeta{ Name: "tstpolicy", Namespace: "test", @@ -1125,8 +1068,8 @@ func Test_dnsHelper_getDNSRecordForListener(t *testing.T) { } -func assertSub(domain string, subdomain string, err string) func(t *testing.T, expectedzone *v1alpha1.ManagedZone, expectedsubdomain string, expectedErr error) { - return func(t *testing.T, expectedzone *v1alpha1.ManagedZone, expectedsubdomain string, expectedErr error) { +func assertSub(domain string, subdomain string, err string) func(t *testing.T, expectedzone *dns.Zone, expectedsubdomain string, expectedErr error) { + return func(t *testing.T, expectedzone *dns.Zone, expectedsubdomain string, expectedErr error) { if (err == "") != (expectedErr == nil) { t.Errorf("expected error '%s' but got '%s'", err, expectedErr) } @@ -1136,7 +1079,7 @@ func assertSub(domain string, subdomain string, err string) func(t *testing.T, e if subdomain != expectedsubdomain { t.Fatalf("expected subdomain '%v', got '%v'", subdomain, expectedsubdomain) } - if expectedzone != nil && domain != expectedzone.Spec.DomainName { + if expectedzone != nil && domain != *expectedzone.DNSName { t.Fatalf("expected zone with domain name '%v', got '%v'", domain, expectedzone) } if expectedzone == nil && domain != "" { diff --git a/pkg/controllers/dnspolicy/dnspolicy_controller.go b/pkg/controllers/dnspolicy/dnspolicy_controller.go index ebdf574ff..76cdcd3c4 100644 --- a/pkg/controllers/dnspolicy/dnspolicy_controller.go +++ b/pkg/controllers/dnspolicy/dnspolicy_controller.go @@ -37,6 +37,7 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/events" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -73,7 +74,7 @@ func (r *DNSPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( log.Info("Reconciling DNSPolicy") ctx = crlog.IntoContext(ctx, log) - previous := &v1alpha1.DNSPolicy{} + previous := &v1alpha2.DNSPolicy{} if err := r.Client().Get(ctx, req.NamespacedName, previous); err != nil { log.Info("error getting dns policy", "error", err) return ctrl.Result{}, client.IgnoreNotFound(err) @@ -134,7 +135,7 @@ func (r *DNSPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( return statusResult, statusErr } -func (r *DNSPolicyReconciler) reconcileResources(ctx context.Context, dnsPolicy *v1alpha1.DNSPolicy, targetNetworkObject client.Object) error { +func (r *DNSPolicyReconciler) reconcileResources(ctx context.Context, dnsPolicy *v1alpha2.DNSPolicy, targetNetworkObject client.Object) error { gatewayCondition := conditions.BuildPolicyAffectedCondition(DNSPolicyAffected, dnsPolicy, targetNetworkObject, conditions.PolicyReasonAccepted, nil) // validate @@ -186,7 +187,7 @@ func (r *DNSPolicyReconciler) reconcileResources(ctx context.Context, dnsPolicy return nil } -func (r *DNSPolicyReconciler) deleteResources(ctx context.Context, dnsPolicy *v1alpha1.DNSPolicy, targetNetworkObject client.Object) error { +func (r *DNSPolicyReconciler) deleteResources(ctx context.Context, dnsPolicy *v1alpha2.DNSPolicy, targetNetworkObject client.Object) error { // delete based on gateway diffs if err := r.deleteDNSRecords(ctx, dnsPolicy); err != nil { @@ -218,7 +219,7 @@ func (r *DNSPolicyReconciler) deleteResources(ctx context.Context, dnsPolicy *v1 return r.updateGatewayCondition(ctx, metav1.Condition{Type: string(DNSPolicyAffected)}, gatewayDiffObj) } -func (r *DNSPolicyReconciler) reconcileStatus(ctx context.Context, dnsPolicy *v1alpha1.DNSPolicy, specErr error) (ctrl.Result, error) { +func (r *DNSPolicyReconciler) reconcileStatus(ctx context.Context, dnsPolicy *v1alpha2.DNSPolicy, specErr error) (ctrl.Result, error) { newStatus := r.calculateStatus(dnsPolicy, specErr) if !equality.Semantic.DeepEqual(newStatus, dnsPolicy.Status) { @@ -240,7 +241,7 @@ func (r *DNSPolicyReconciler) reconcileStatus(ctx context.Context, dnsPolicy *v1 return ctrl.Result{}, nil } -func (r *DNSPolicyReconciler) calculateStatus(dnsPolicy *v1alpha1.DNSPolicy, specErr error) *v1alpha1.DNSPolicyStatus { +func (r *DNSPolicyReconciler) calculateStatus(dnsPolicy *v1alpha2.DNSPolicy, specErr error) *v1alpha2.DNSPolicyStatus { newStatus := dnsPolicy.Status.DeepCopy() if specErr != nil { newStatus.ObservedGeneration = dnsPolicy.Generation @@ -303,7 +304,7 @@ func (r *DNSPolicyReconciler) SetupWithManager(mgr ctrl.Manager) error { probeEventMapper := events.NewProbeEventMapper(r.Logger(), DNSPolicyBackRefAnnotation, "dnspolicy") r.dnsHelper = dnsHelper{Client: r.Client()} ctrlr := ctrl.NewControllerManagedBy(mgr). - For(&v1alpha1.DNSPolicy{}). + For(&v1alpha2.DNSPolicy{}). Watches( &gatewayapiv1.Gateway{}, handler.EnqueueRequestsFromMapFunc(gatewayEventMapper.MapToPolicy), diff --git a/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go b/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go index 1b058a5b2..ac4ffdf12 100644 --- a/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go +++ b/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go @@ -13,12 +13,12 @@ import ( "github.com/kuadrant/kuadrant-operator/pkg/reconcilers" "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/slice" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" ) -func (r *DNSPolicyReconciler) reconcileDNSRecords(ctx context.Context, dnsPolicy *v1alpha1.DNSPolicy, gwDiffObj *reconcilers.GatewayDiff) error { +func (r *DNSPolicyReconciler) reconcileDNSRecords(ctx context.Context, dnsPolicy *v1alpha2.DNSPolicy, gwDiffObj *reconcilers.GatewayDiff) error { log := crlog.FromContext(ctx) log.V(3).Info("reconciling dns records") @@ -39,34 +39,44 @@ func (r *DNSPolicyReconciler) reconcileDNSRecords(ctx context.Context, dnsPolicy return nil } -func (r *DNSPolicyReconciler) reconcileGatewayDNSRecords(ctx context.Context, gw *gatewayapiv1.Gateway, dnsPolicy *v1alpha1.DNSPolicy) error { +func (r *DNSPolicyReconciler) reconcileGatewayDNSRecords(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha2.DNSPolicy) error { log := crlog.FromContext(ctx) - gatewayWrapper := utils.NewGatewayWrapper(gw) - if err := gatewayWrapper.Validate(); err != nil { + gw := utils.NewGatewayWrapper(gateway) + if err := gw.Validate(); err != nil { return err } - if err := r.dnsHelper.removeDNSForDeletedListeners(ctx, gatewayWrapper.Gateway); err != nil { + if err := r.dnsHelper.removeDNSForDeletedListeners(ctx, gw.Gateway); err != nil { log.V(3).Info("error removing DNS for deleted listeners") return err } - clusterGateways := gatewayWrapper.GetClusterGateways() + clusterGateways := gw.GetClusterGateways() - log.V(3).Info("checking gateway for attached routes ", "gateway", gatewayWrapper.Name, "clusterGateways", clusterGateways) + zoneList, zoneAssignment, err := r.getProviderDNSZones(ctx, dnsPolicy) + if err != nil { + return err + } + log.V(1).Info("got zones", "zoneList", zoneList, "zoneAssignment", zoneAssignment) - for _, listener := range gatewayWrapper.Spec.Listeners { - var mz, err = r.dnsHelper.getManagedZoneForListener(ctx, gatewayWrapper.Namespace, listener) - if err != nil { - return err - } + for _, listener := range gw.Spec.Listeners { listenerHost := *listener.Hostname if listenerHost == "" { - log.Info("skipping listener no hostname assigned", listener.Name, "in ns ", gatewayWrapper.Namespace) + log.Info("skipping listener no hostname assigned", listener.Name, "in ns ", gw.Namespace) continue } + var zone *dns.Zone + if zoneAssignment { + zone, _, err = findMatchingZone(string(listenerHost), string(listenerHost), zoneList) + if err != nil { + log.V(1).Info("skipping listener no matching zone for host", "listenerHost", listenerHost) + continue + } + log.V(1).Info("found zone for listener host", "zone", zone, "listenerHost", listenerHost) + } + listenerGateways := slice.Filter(clusterGateways, func(cgw utils.ClusterGateway) bool { hasAttachedRoute := false for _, statusListener := range cgw.Status.Listeners { @@ -81,23 +91,23 @@ func (r *DNSPolicyReconciler) reconcileGatewayDNSRecords(ctx context.Context, gw if len(listenerGateways) == 0 { // delete record log.V(1).Info("no cluster gateways, deleting DNS record", " for listener ", listener.Name) - if err := r.dnsHelper.deleteDNSRecordForListener(ctx, gatewayWrapper, listener); client.IgnoreNotFound(err) != nil { + if err := r.dnsHelper.deleteDNSRecordForListener(ctx, gw, listener); client.IgnoreNotFound(err) != nil { return fmt.Errorf("failed to delete dns record for listener %s : %s", listener.Name, err) } return nil } - dnsRecord, err := r.dnsHelper.createDNSRecordForListener(ctx, gatewayWrapper.Gateway, dnsPolicy, mz, listener) + dnsRecord, err := r.dnsHelper.createDNSRecordForListener(ctx, gw.Gateway, dnsPolicy, listener, zone) if err := client.IgnoreAlreadyExists(err); err != nil { return fmt.Errorf("failed to create dns record for listener host %s : %s ", *listener.Hostname, err) } if k8serrors.IsAlreadyExists(err) { - dnsRecord, err = r.dnsHelper.getDNSRecordForListener(ctx, listener, gatewayWrapper) + dnsRecord, err = r.dnsHelper.getDNSRecordForListener(ctx, listener, gw) if err != nil { return fmt.Errorf("failed to get dns record for host %s : %s ", listener.Name, err) } } - mcgTarget, err := dns.NewMultiClusterGatewayTarget(gatewayWrapper.Gateway, listenerGateways, dnsPolicy.Spec.LoadBalancing) + mcgTarget, err := dns.NewMultiClusterGatewayTarget(gw.Gateway, listenerGateways, dnsPolicy.Spec.LoadBalancing) if err != nil { return fmt.Errorf("failed to create multi cluster gateway target for listener %s : %s ", listener.Name, err) } @@ -115,11 +125,11 @@ func (r *DNSPolicyReconciler) reconcileGatewayDNSRecords(ctx context.Context, gw return nil } -func (r *DNSPolicyReconciler) deleteGatewayDNSRecords(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha1.DNSPolicy) error { +func (r *DNSPolicyReconciler) deleteGatewayDNSRecords(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha2.DNSPolicy) error { return r.deleteDNSRecordsWithLabels(ctx, commonDNSRecordLabels(client.ObjectKeyFromObject(gateway), client.ObjectKeyFromObject(dnsPolicy)), dnsPolicy.Namespace) } -func (r *DNSPolicyReconciler) deleteDNSRecords(ctx context.Context, dnsPolicy *v1alpha1.DNSPolicy) error { +func (r *DNSPolicyReconciler) deleteDNSRecords(ctx context.Context, dnsPolicy *v1alpha2.DNSPolicy) error { return r.deleteDNSRecordsWithLabels(ctx, policyDNSRecordLabels(client.ObjectKeyFromObject(dnsPolicy)), dnsPolicy.Namespace) } @@ -127,7 +137,7 @@ func (r *DNSPolicyReconciler) deleteDNSRecordsWithLabels(ctx context.Context, lb log := crlog.FromContext(ctx) listOptions := &client.ListOptions{LabelSelector: labels.SelectorFromSet(lbls), Namespace: namespace} - recordsList := &v1alpha1.DNSRecordList{} + recordsList := &v1alpha2.DNSRecordList{} if err := r.Client().List(ctx, recordsList, listOptions); err != nil { return err } @@ -140,3 +150,39 @@ func (r *DNSPolicyReconciler) deleteDNSRecordsWithLabels(ctx context.Context, lb } return nil } + +// getProviderDNSZones returns a list of dns.Zones for the given provider +func (r *DNSPolicyReconciler) getProviderDNSZones(ctx context.Context, pa v1alpha2.ProviderAccessor) (dns.ZoneList, bool, error) { + logger := crlog.FromContext(ctx) + zoneList := dns.ZoneList{} + zoneAssignment := false + + switch pa.GetProviderRef().Kind { + case v1alpha2.ProviderKindSecret: + zoneAssignment = true + dnsProvider, err := r.DNSProvider(ctx, pa) + if err != nil { + return zoneList, zoneAssignment, err + } + zoneList, err = dnsProvider.ListZones() + if err != nil { + return zoneList, zoneAssignment, err + } + case v1alpha2.ProviderKindManagedZone: + zoneAssignment = true + var mz v1alpha2.ManagedZone + if err := r.Client().Get(ctx, client.ObjectKey{Name: pa.GetProviderRef().Name, Namespace: pa.GetNamespace()}, &mz); err != nil { + logger.Error(err, "unable to get managed zone for provider", "ProviderRef", pa.GetProviderRef()) + return zoneList, zoneAssignment, err + } + zoneList.Items = append(zoneList.Items, &dns.Zone{ + ID: &mz.Status.ID, + DNSName: &mz.Spec.DomainName, + }) + case v1alpha2.ProviderKindNone: + fallthrough + default: + zoneAssignment = false + } + return zoneList, zoneAssignment, nil +} diff --git a/pkg/controllers/dnspolicy/dnspolicy_healthchecks.go b/pkg/controllers/dnspolicy/dnspolicy_healthchecks.go index cec93ab47..13871128f 100644 --- a/pkg/controllers/dnspolicy/dnspolicy_healthchecks.go +++ b/pkg/controllers/dnspolicy/dnspolicy_healthchecks.go @@ -18,10 +18,11 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/slice" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" ) -func (r *DNSPolicyReconciler) reconcileHealthCheckProbes(ctx context.Context, dnsPolicy *v1alpha1.DNSPolicy, gwDiffObj *reconcilers.GatewayDiff) error { +func (r *DNSPolicyReconciler) reconcileHealthCheckProbes(ctx context.Context, dnsPolicy *v1alpha2.DNSPolicy, gwDiffObj *reconcilers.GatewayDiff) error { log := crlog.FromContext(ctx) log.V(3).Info("reconciling health checks") @@ -68,11 +69,11 @@ func (r *DNSPolicyReconciler) createOrUpdateHealthCheckProbes(ctx context.Contex return nil } -func (r *DNSPolicyReconciler) deleteGatewayHealthCheckProbes(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha1.DNSPolicy) error { +func (r *DNSPolicyReconciler) deleteGatewayHealthCheckProbes(ctx context.Context, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha2.DNSPolicy) error { return r.deleteHealthCheckProbesWithLabels(ctx, commonDNSRecordLabels(client.ObjectKeyFromObject(gateway), client.ObjectKeyFromObject(dnsPolicy)), dnsPolicy.Namespace) } -func (r *DNSPolicyReconciler) deleteHealthCheckProbes(ctx context.Context, dnsPolicy *v1alpha1.DNSPolicy) error { +func (r *DNSPolicyReconciler) deleteHealthCheckProbes(ctx context.Context, dnsPolicy *v1alpha2.DNSPolicy) error { return r.deleteHealthCheckProbesWithLabels(ctx, policyDNSRecordLabels(client.ObjectKeyFromObject(dnsPolicy)), dnsPolicy.Namespace) } @@ -90,7 +91,7 @@ func (r *DNSPolicyReconciler) deleteHealthCheckProbesWithLabels(ctx context.Cont return nil } -func (r *DNSPolicyReconciler) deleteUnexpectedGatewayHealthCheckProbes(ctx context.Context, expectedProbes []*v1alpha1.DNSHealthCheckProbe, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha1.DNSPolicy) error { +func (r *DNSPolicyReconciler) deleteUnexpectedGatewayHealthCheckProbes(ctx context.Context, expectedProbes []*v1alpha1.DNSHealthCheckProbe, gateway *gatewayapiv1.Gateway, dnsPolicy *v1alpha2.DNSPolicy) error { // remove any probes for this gateway and DNS Policy that are no longer expected existingProbes := &v1alpha1.DNSHealthCheckProbeList{} dnsLabels := commonDNSRecordLabels(client.ObjectKeyFromObject(gateway), client.ObjectKeyFromObject(dnsPolicy)) @@ -110,7 +111,7 @@ func (r *DNSPolicyReconciler) deleteUnexpectedGatewayHealthCheckProbes(ctx conte return nil } -func (r *DNSPolicyReconciler) expectedHealthCheckProbesForGateway(ctx context.Context, gw common.GatewayWrapper, dnsPolicy *v1alpha1.DNSPolicy) []*v1alpha1.DNSHealthCheckProbe { +func (r *DNSPolicyReconciler) expectedHealthCheckProbesForGateway(ctx context.Context, gw common.GatewayWrapper, dnsPolicy *v1alpha2.DNSPolicy) []*v1alpha1.DNSHealthCheckProbe { log := crlog.FromContext(ctx) var healthChecks []*v1alpha1.DNSHealthCheckProbe if dnsPolicy.Spec.HealthCheck == nil { diff --git a/pkg/controllers/dnspolicy/dnspolicy_healthchecks_test.go b/pkg/controllers/dnspolicy/dnspolicy_healthchecks_test.go index 26257bb8a..32865df79 100644 --- a/pkg/controllers/dnspolicy/dnspolicy_healthchecks_test.go +++ b/pkg/controllers/dnspolicy/dnspolicy_healthchecks_test.go @@ -15,6 +15,7 @@ import ( "github.com/kuadrant/kuadrant-operator/pkg/reconcilers" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/gateway" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" @@ -38,7 +39,7 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { type args struct { ctx context.Context gw common.GatewayWrapper - dnsPolicy *v1alpha1.DNSPolicy + dnsPolicy *v1alpha2.DNSPolicy } tests := []struct { name string @@ -80,13 +81,13 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { }, }, }, - dnsPolicy: &v1alpha1.DNSPolicy{ + dnsPolicy: &v1alpha2.DNSPolicy{ ObjectMeta: controllerruntime.ObjectMeta{ Name: "testdnspolicy", Namespace: "testnamespace", }, - Spec: v1alpha1.DNSPolicySpec{ - HealthCheck: &v1alpha1.HealthCheckSpec{ + Spec: v1alpha2.DNSPolicySpec{ + HealthCheck: &v1alpha2.HealthCheckSpec{ Endpoint: "/", Port: testutil.Pointer(8443), Protocol: testutil.Pointer(v1alpha1.HttpsProtocol), @@ -171,13 +172,13 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { }, }, }, - dnsPolicy: &v1alpha1.DNSPolicy{ + dnsPolicy: &v1alpha2.DNSPolicy{ ObjectMeta: controllerruntime.ObjectMeta{ Name: "testdnspolicy", Namespace: "testnamespace", }, - Spec: v1alpha1.DNSPolicySpec{ - HealthCheck: &v1alpha1.HealthCheckSpec{}, + Spec: v1alpha2.DNSPolicySpec{ + HealthCheck: &v1alpha2.HealthCheckSpec{}, }, }, }, @@ -236,9 +237,9 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { }, }, }, - dnsPolicy: &v1alpha1.DNSPolicy{ - Spec: v1alpha1.DNSPolicySpec{ - HealthCheck: &v1alpha1.HealthCheckSpec{}, + dnsPolicy: &v1alpha2.DNSPolicy{ + Spec: v1alpha2.DNSPolicySpec{ + HealthCheck: &v1alpha2.HealthCheckSpec{}, }, }, }, @@ -280,13 +281,13 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { }, }, }, - dnsPolicy: &v1alpha1.DNSPolicy{ + dnsPolicy: &v1alpha2.DNSPolicy{ ObjectMeta: controllerruntime.ObjectMeta{ Name: "testdnspolicy", Namespace: "testnamespace", }, - Spec: v1alpha1.DNSPolicySpec{ - HealthCheck: &v1alpha1.HealthCheckSpec{}, + Spec: v1alpha2.DNSPolicySpec{ + HealthCheck: &v1alpha2.HealthCheckSpec{}, }, }, }, @@ -338,9 +339,9 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { }, }, }, - dnsPolicy: &v1alpha1.DNSPolicy{ - Spec: v1alpha1.DNSPolicySpec{ - HealthCheck: &v1alpha1.HealthCheckSpec{}, + dnsPolicy: &v1alpha2.DNSPolicy{ + Spec: v1alpha2.DNSPolicySpec{ + HealthCheck: &v1alpha2.HealthCheckSpec{}, }, }, }, @@ -368,9 +369,9 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { }, }, }, - dnsPolicy: &v1alpha1.DNSPolicy{ - Spec: v1alpha1.DNSPolicySpec{ - HealthCheck: &v1alpha1.HealthCheckSpec{}, + dnsPolicy: &v1alpha2.DNSPolicy{ + Spec: v1alpha2.DNSPolicySpec{ + HealthCheck: &v1alpha2.HealthCheckSpec{}, }, }, }, @@ -391,9 +392,9 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { Status: gatewayapiv1.GatewayStatus{}, }, }, - dnsPolicy: &v1alpha1.DNSPolicy{ - Spec: v1alpha1.DNSPolicySpec{ - HealthCheck: &v1alpha1.HealthCheckSpec{}, + dnsPolicy: &v1alpha2.DNSPolicy{ + Spec: v1alpha2.DNSPolicySpec{ + HealthCheck: &v1alpha2.HealthCheckSpec{}, }, }, }, @@ -403,7 +404,7 @@ func TestDNSPolicyReconciler_expectedProbesForGateway(t *testing.T) { name: "no probes when no healthcheck spec defined", fields: fields{}, args: args{ - dnsPolicy: &v1alpha1.DNSPolicy{}, + dnsPolicy: &v1alpha2.DNSPolicy{}, }, want: nil, }, diff --git a/pkg/controllers/dnsrecord/dnsrecord_controller.go b/pkg/controllers/dnsrecord/dnsrecord_controller.go index b38812a8f..05a1b5cdb 100644 --- a/pkg/controllers/dnsrecord/dnsrecord_controller.go +++ b/pkg/controllers/dnsrecord/dnsrecord_controller.go @@ -31,9 +31,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -57,7 +58,7 @@ type DNSRecordReconciler struct { func (r *DNSRecordReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = log.FromContext(ctx) - previous := &v1alpha1.DNSRecord{} + previous := &v1alpha2.DNSRecord{} err := r.Client.Get(ctx, client.ObjectKey{Namespace: req.Namespace, Name: req.Name}, previous) if err != nil { if err := client.IgnoreNotFound(err); err == nil { @@ -127,91 +128,64 @@ func (r *DNSRecordReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( // SetupWithManager sets up the controller with the Manager. func (r *DNSRecordReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&v1alpha1.DNSRecord{}). + For(&v1alpha2.DNSRecord{}). + WithEventFilter(predicate.NewPredicateFuncs(func(object client.Object) bool { + dnsRecord, ok := object.(*v1alpha2.DNSRecord) + if ok { + return dnsRecord.GetProviderRef().Kind != v1alpha2.ProviderKindNone + } + return true + })). Complete(r) } // deleteRecord deletes record(s) in the DNSPRovider(i.e. route53) configured by the ManagedZone assigned to this // DNSRecord (dnsRecord.Status.ParentManagedZone). -func (r *DNSRecordReconciler) deleteRecord(ctx context.Context, dnsRecord *v1alpha1.DNSRecord) error { - managedZone := &v1alpha1.ManagedZone{ - ObjectMeta: metav1.ObjectMeta{ - Name: dnsRecord.Spec.ManagedZoneRef.Name, - Namespace: dnsRecord.Namespace, - }, - } - err := r.Get(ctx, client.ObjectKeyFromObject(managedZone), managedZone, &client.GetOptions{}) - if err != nil { - // If the Managed Zone isn't found, just continue - return client.IgnoreNotFound(err) - } - managedZoneReady := meta.IsStatusConditionTrue(managedZone.Status.Conditions, "Ready") - - if !managedZoneReady { - return fmt.Errorf("the managed zone is not in a ready state : %s", managedZone.Name) - } - - dnsProvider, err := r.DNSProvider(ctx, managedZone) +func (r *DNSRecordReconciler) deleteRecord(ctx context.Context, dnsRecord *v1alpha2.DNSRecord) error { + dnsProvider, err := r.DNSProvider(ctx, dnsRecord) if err != nil { return err } - err = dnsProvider.Delete(dnsRecord, managedZone) + err = dnsProvider.Delete(dnsRecord) if err != nil { if strings.Contains(err.Error(), "was not found") || strings.Contains(err.Error(), "notFound") { - log.Log.Info("Record not found in managed zone, continuing", "dnsRecord", dnsRecord.Name, "managedZone", managedZone.Name) + log.Log.Info("Record not found in zone, continuing", "dnsRecord", dnsRecord.Name, "zone", dnsRecord.Spec.ZoneID) return nil } else if strings.Contains(err.Error(), "no endpoints") { - log.Log.Info("DNS record had no endpoint, continuing", "dnsRecord", dnsRecord.Name, "managedZone", managedZone.Name) + log.Log.Info("DNS record had no endpoint, continuing", "dnsRecord", dnsRecord.Name, "zone", dnsRecord.Spec.ZoneID) return nil } return err } - log.Log.Info("Deleted DNSRecord in manage zone", "dnsRecord", dnsRecord.Name, "managedZone", managedZone.Name) + log.Log.Info("Deleted DNSRecord in zone", "dnsRecord", dnsRecord.Name, "zone", dnsRecord.Spec.ZoneID) return nil } // publishRecord publishes record(s) to the DNSPRovider(i.e. route53) configured by the ManagedZone assigned to this // DNSRecord (dnsRecord.Status.ParentManagedZone). -func (r *DNSRecordReconciler) publishRecord(ctx context.Context, dnsRecord *v1alpha1.DNSRecord) error { - - managedZone := &v1alpha1.ManagedZone{ - ObjectMeta: metav1.ObjectMeta{ - Name: dnsRecord.Spec.ManagedZoneRef.Name, - Namespace: dnsRecord.Namespace, - }, - } - err := r.Get(ctx, client.ObjectKeyFromObject(managedZone), managedZone, &client.GetOptions{}) - if err != nil { - return err - } - managedZoneReady := meta.IsStatusConditionTrue(managedZone.Status.Conditions, "Ready") - - if !managedZoneReady { - return fmt.Errorf("the managed zone is not in a ready state : %s", managedZone.Name) - } - +func (r *DNSRecordReconciler) publishRecord(ctx context.Context, dnsRecord *v1alpha2.DNSRecord) error { if dnsRecord.Generation == dnsRecord.Status.ObservedGeneration { - log.Log.V(3).Info("Skipping managed zone to which the DNS dnsRecord is already published", "dnsRecord", dnsRecord.Name, "managedZone", managedZone.Name) + log.Log.V(3).Info("Skipping zone to which the DNS dnsRecord is already published", "dnsRecord", dnsRecord.Name, "zone", dnsRecord.Spec.ZoneID) return nil } - dnsProvider, err := r.DNSProvider(ctx, managedZone) + dnsProvider, err := r.DNSProvider(ctx, dnsRecord) if err != nil { return err } - err = dnsProvider.Ensure(dnsRecord, managedZone) + err = dnsProvider.Ensure(dnsRecord) if err != nil { return err } - log.Log.Info("Published DNSRecord to manage zone", "dnsRecord", dnsRecord.Name, "managedZone", managedZone.Name) + log.Log.Info("Published DNSRecord to zone", "dnsRecord", dnsRecord.Name, "zone", dnsRecord.Spec.ZoneID) return nil } // setDNSRecordCondition adds or updates a given condition in the DNSRecord status.. -func setDNSRecordCondition(dnsRecord *v1alpha1.DNSRecord, conditionType string, status metav1.ConditionStatus, reason, message string) { +func setDNSRecordCondition(dnsRecord *v1alpha2.DNSRecord, conditionType string, status metav1.ConditionStatus, reason, message string) { cond := metav1.Condition{ Type: conditionType, Status: status, diff --git a/pkg/controllers/managedzone/managedzone_controller.go b/pkg/controllers/managedzone/managedzone_controller.go index bed66f846..b7093f78e 100644 --- a/pkg/controllers/managedzone/managedzone_controller.go +++ b/pkg/controllers/managedzone/managedzone_controller.go @@ -31,7 +31,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -52,7 +52,7 @@ type ManagedZoneReconciler struct { func (r *ManagedZoneReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { _ = log.FromContext(ctx) - previous := &v1alpha1.ManagedZone{} + previous := &v1alpha2.ManagedZone{} err := r.Client.Get(ctx, client.ObjectKey{Namespace: req.Namespace, Name: req.Name}, previous) if err != nil { if err := client.IgnoreNotFound(err); err == nil { @@ -155,13 +155,13 @@ func (r *ManagedZoneReconciler) Reconcile(ctx context.Context, req ctrl.Request) // SetupWithManager sets up the controller with the Manager. func (r *ManagedZoneReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). - For(&v1alpha1.ManagedZone{}). - Owns(&v1alpha1.DNSRecord{}). - Owns(&v1alpha1.ManagedZone{}). + For(&v1alpha2.ManagedZone{}). + Owns(&v1alpha2.DNSRecord{}). + Owns(&v1alpha2.ManagedZone{}). Complete(r) } -func (r *ManagedZoneReconciler) publishManagedZone(ctx context.Context, managedZone *v1alpha1.ManagedZone) error { +func (r *ManagedZoneReconciler) publishManagedZone(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { dnsProvider, err := r.DNSProvider(ctx, managedZone) if err != nil { @@ -179,8 +179,8 @@ func (r *ManagedZoneReconciler) publishManagedZone(ctx context.Context, managedZ return nil } -func (r *ManagedZoneReconciler) deleteManagedZone(ctx context.Context, managedZone *v1alpha1.ManagedZone) error { - if managedZone.Spec.ID != "" { +func (r *ManagedZoneReconciler) deleteManagedZone(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { + if managedZone.Spec.ID != nil { log.Log.Info("Skipping deletion of managed zone with provider ID specified in spec", "managedZone", managedZone.Name) return nil } @@ -208,11 +208,11 @@ func (r *ManagedZoneReconciler) deleteManagedZone(ctx context.Context, managedZo return nil } -func (r *ManagedZoneReconciler) getParentZone(ctx context.Context, managedZone *v1alpha1.ManagedZone) (*v1alpha1.ManagedZone, error) { +func (r *ManagedZoneReconciler) getParentZone(ctx context.Context, managedZone *v1alpha2.ManagedZone) (*v1alpha2.ManagedZone, error) { if managedZone.Spec.ParentManagedZone == nil { return nil, nil } - parentZone := &v1alpha1.ManagedZone{} + parentZone := &v1alpha2.ManagedZone{} err := r.Client.Get(ctx, client.ObjectKey{Namespace: managedZone.Namespace, Name: managedZone.Spec.ParentManagedZone.Name}, parentZone) if err != nil { return parentZone, err @@ -220,7 +220,7 @@ func (r *ManagedZoneReconciler) getParentZone(ctx context.Context, managedZone * return parentZone, nil } -func (r *ManagedZoneReconciler) setParentZoneOwner(ctx context.Context, managedZone *v1alpha1.ManagedZone) error { +func (r *ManagedZoneReconciler) setParentZoneOwner(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { parentZone, err := r.getParentZone(ctx, managedZone) if err != nil { return err @@ -237,7 +237,7 @@ func (r *ManagedZoneReconciler) setParentZoneOwner(ctx context.Context, managedZ return err } -func (r *ManagedZoneReconciler) createParentZoneNSRecord(ctx context.Context, managedZone *v1alpha1.ManagedZone) error { +func (r *ManagedZoneReconciler) createParentZoneNSRecord(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { parentZone, err := r.getParentZone(ctx, managedZone) if err != nil { return err @@ -252,19 +252,17 @@ func (r *ManagedZoneReconciler) createParentZoneNSRecord(ctx context.Context, ma for index := range managedZone.Status.NameServers { recordTargets[index] = *managedZone.Status.NameServers[index] } - recordType := string(v1alpha1.NSRecordType) + recordType := string(v1alpha2.NSRecordType) - nsRecord := &v1alpha1.DNSRecord{ + nsRecord := &v1alpha2.DNSRecord{ TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: recordName, Namespace: parentZone.Namespace, }, - Spec: v1alpha1.DNSRecordSpec{ - ManagedZoneRef: &v1alpha1.ManagedZoneReference{ - Name: parentZone.Name, - }, - Endpoints: []*v1alpha1.Endpoint{ + Spec: v1alpha2.DNSRecordSpec{ + ProviderRef: managedZone.Spec.ProviderRef, + Endpoints: []*v1alpha2.Endpoint{ { DNSName: recordName, Targets: recordTargets, @@ -286,7 +284,7 @@ func (r *ManagedZoneReconciler) createParentZoneNSRecord(ctx context.Context, ma return nil } -func (r *ManagedZoneReconciler) deleteParentZoneNSRecord(ctx context.Context, managedZone *v1alpha1.ManagedZone) error { +func (r *ManagedZoneReconciler) deleteParentZoneNSRecord(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { parentZone, err := r.getParentZone(ctx, managedZone) if err := client.IgnoreNotFound(err); err != nil { return err @@ -297,7 +295,7 @@ func (r *ManagedZoneReconciler) deleteParentZoneNSRecord(ctx context.Context, ma recordName := managedZone.Spec.DomainName - nsRecord := &v1alpha1.DNSRecord{} + nsRecord := &v1alpha2.DNSRecord{} err = r.Client.Get(ctx, client.ObjectKey{Namespace: parentZone.Namespace, Name: recordName}, nsRecord) if err != nil { if err := client.IgnoreNotFound(err); err == nil { @@ -315,7 +313,7 @@ func (r *ManagedZoneReconciler) deleteParentZoneNSRecord(ctx context.Context, ma return nil } -func (r *ManagedZoneReconciler) parentZoneNSRecordReady(ctx context.Context, managedZone *v1alpha1.ManagedZone) error { +func (r *ManagedZoneReconciler) parentZoneNSRecordReady(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { parentZone, err := r.getParentZone(ctx, managedZone) if err := client.IgnoreNotFound(err); err != nil { return err @@ -326,7 +324,7 @@ func (r *ManagedZoneReconciler) parentZoneNSRecordReady(ctx context.Context, man recordName := managedZone.Spec.DomainName - nsRecord := &v1alpha1.DNSRecord{} + nsRecord := &v1alpha2.DNSRecord{} err = r.Client.Get(ctx, client.ObjectKey{Namespace: parentZone.Namespace, Name: recordName}, nsRecord) if err != nil { if err := client.IgnoreNotFound(err); err == nil { @@ -344,7 +342,7 @@ func (r *ManagedZoneReconciler) parentZoneNSRecordReady(ctx context.Context, man } // setManagedZoneCondition adds or updates a given condition in the ManagedZone status. -func setManagedZoneCondition(managedZone *v1alpha1.ManagedZone, conditionType string, status metav1.ConditionStatus, reason, message string) { +func setManagedZoneCondition(managedZone *v1alpha2.ManagedZone, conditionType string, status metav1.ConditionStatus, reason, message string) { cond := metav1.Condition{ Type: conditionType, Status: status, diff --git a/pkg/dns/aws/dns.go b/pkg/dns/aws/dns.go index 97517163c..ef4d2e65a 100644 --- a/pkg/dns/aws/dns.go +++ b/pkg/dns/aws/dns.go @@ -18,7 +18,9 @@ package aws import ( "fmt" + "net" "strconv" + "strings" "time" "github.com/aws/aws-sdk-go/aws" @@ -31,7 +33,7 @@ import ( kerrors "k8s.io/apimachinery/pkg/util/errors" "sigs.k8s.io/controller-runtime/pkg/log" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -46,7 +48,10 @@ const ( type Route53DNSProvider struct { client *InstrumentedRoute53 logger logr.Logger - + // only consider hosted zones ending with this zone id + zoneIDFilter dns.ZoneIDFilter + // only consider hosted zones managing domains ending in this suffix + domainFilter dns.DomainFilter healthCheckReconciler dns.HealthCheckReconciler } @@ -54,13 +59,19 @@ var _ dns.Provider = &Route53DNSProvider{} func NewProviderFromSecret(s *v1.Secret) (*Route53DNSProvider, error) { + if string(s.Data["AWS_ACCESS_KEY_ID"]) == "" || string(s.Data["AWS_SECRET_ACCESS_KEY"]) == "" { + return nil, fmt.Errorf("AWS Provider credentials is empty") + } + + pConfig, err := dns.ConfigFromJSON(s.Data["CONFIG"]) + if err != nil { + return nil, err + } + config := aws.NewConfig() sessionOpts := session.Options{ Config: *config, } - if string(s.Data["AWS_ACCESS_KEY_ID"]) == "" || string(s.Data["AWS_SECRET_ACCESS_KEY"]) == "" { - return nil, fmt.Errorf("AWS Provider credentials is empty") - } sessionOpts.Config.Credentials = credentials.NewStaticCredentials(string(s.Data["AWS_ACCESS_KEY_ID"]), string(s.Data["AWS_SECRET_ACCESS_KEY"]), "") sessionOpts.SharedConfigState = session.SharedConfigDisable @@ -72,9 +83,14 @@ func NewProviderFromSecret(s *v1.Secret) (*Route53DNSProvider, error) { sess.Config.WithRegion(string(s.Data["REGION"])) } + zoneIDFilter := dns.NewZoneIDFilter(pConfig.ZoneIDFilter) + domainFilter := dns.NewDomainFilter(pConfig.DomainFilter) + p := &Route53DNSProvider{ - client: &InstrumentedRoute53{route53.New(sess, config)}, - logger: log.Log.WithName("aws-route53").WithValues("region", config.Region), + client: &InstrumentedRoute53{route53.New(sess, config)}, + logger: log.Log.WithName("aws-route53").WithValues("region", config.Region), + zoneIDFilter: zoneIDFilter, + domainFilter: domainFilter, } if err := validateServiceEndpoints(p); err != nil { @@ -91,18 +107,35 @@ const ( deleteAction action = "DELETE" ) -func (p *Route53DNSProvider) Ensure(record *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error { - return p.change(record, managedZone, upsertAction) +func (p *Route53DNSProvider) Ensure(record *v1alpha2.DNSRecord) error { + return p.change(record, upsertAction) } -func (p *Route53DNSProvider) Delete(record *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error { - return p.change(record, managedZone, deleteAction) +func (p *Route53DNSProvider) Delete(record *v1alpha2.DNSRecord) error { + return p.change(record, deleteAction) } -func (p *Route53DNSProvider) EnsureManagedZone(zone *v1alpha1.ManagedZone) (dns.ManagedZoneOutput, error) { +func (p *Route53DNSProvider) ListZones() (dns.ZoneList, error) { + var zoneList dns.ZoneList + zones, err := p.zones() + if err != nil { + return zoneList, err + } + for _, zone := range zones { + dnsName := removeTrailingDot(*zone.Name) + zoneID := removeHostedZoneIDPrefix(*zone.Id) + zoneList.Items = append(zoneList.Items, &dns.Zone{ + ID: &zoneID, + DNSName: &dnsName, + }) + } + return zoneList, nil +} + +func (p *Route53DNSProvider) EnsureManagedZone(zone *v1alpha2.ManagedZone) (dns.ManagedZoneOutput, error) { var zoneID string - if zone.Spec.ID != "" { - zoneID = zone.Spec.ID + if zone.Spec.ID != nil { + zoneID = *zone.Spec.ID } else { zoneID = zone.Status.ID } @@ -118,15 +151,18 @@ func (p *Route53DNSProvider) EnsureManagedZone(zone *v1alpha1.ManagedZone) (dns. return managedZoneOutput, err } - _, err = p.client.UpdateHostedZoneComment(&route53.UpdateHostedZoneCommentInput{ - Comment: &zone.Spec.Description, - Id: &zoneID, - }) - if err != nil { - log.Log.Error(err, "failed to update hosted zone comment") + //Only update if we created the managed zone and description is set + if zone.Spec.ID != nil && zone.Spec.Description != nil { + _, err = p.client.UpdateHostedZoneComment(&route53.UpdateHostedZoneCommentInput{ + Comment: zone.Spec.Description, + Id: &zoneID, + }) + if err != nil { + log.Log.Error(err, "failed to update hosted zone comment") + } } - managedZoneOutput.ID = *getResp.HostedZone.Id + managedZoneOutput.ID = removeHostedZoneIDPrefix(*getResp.HostedZone.Id) managedZoneOutput.RecordCount = *getResp.HostedZone.ResourceRecordSetCount managedZoneOutput.NameServers = getResp.DelegationSet.NameServers @@ -142,7 +178,7 @@ func (p *Route53DNSProvider) EnsureManagedZone(zone *v1alpha1.ManagedZone) (dns. CallerReference: &callerRef, Name: &zone.Spec.DomainName, HostedZoneConfig: &route53.HostedZoneConfig{ - Comment: &zone.Spec.Description, + Comment: zone.Spec.Description, PrivateZone: aws.Bool(false), }, }) @@ -156,7 +192,7 @@ func (p *Route53DNSProvider) EnsureManagedZone(zone *v1alpha1.ManagedZone) (dns. return managedZoneOutput, nil } -func (p *Route53DNSProvider) DeleteManagedZone(zone *v1alpha1.ManagedZone) error { +func (p *Route53DNSProvider) DeleteManagedZone(zone *v1alpha2.ManagedZone) error { _, err := p.client.DeleteHostedZone(&route53.DeleteHostedZoneInput{ Id: &zone.Status.ID, }) @@ -185,31 +221,57 @@ func (*Route53DNSProvider) ProviderSpecific() dns.ProviderSpecificLabels { } } -func (p *Route53DNSProvider) change(record *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone, action action) error { +// Zones returns the list of hosted zones. +func (p *Route53DNSProvider) zones() (map[string]*route53.HostedZone, error) { + zones := make(map[string]*route53.HostedZone) + + f := func(resp *route53.ListHostedZonesOutput, lastPage bool) (shouldContinue bool) { + for _, zone := range resp.HostedZones { + if !p.domainFilter.Match(aws.StringValue(zone.Name)) && !p.zoneIDFilter.Match(aws.StringValue(zone.Id)) { + continue + } + zones[aws.StringValue(zone.Id)] = zone + } + return true + } + + err := p.client.route53.ListHostedZonesPages(&route53.ListHostedZonesInput{}, f) + if err != nil { + return nil, fmt.Errorf("failed to list hosted zones: %w", err) + } + + for _, zone := range zones { + log.Log.V(1).Info("Considering zone", "zone.Id", aws.StringValue(zone.Id), "zone.Name", aws.StringValue(zone.Name)) + } + + return zones, nil +} + +func (p *Route53DNSProvider) change(record *v1alpha2.DNSRecord, action action) error { // Configure records. if len(record.Spec.Endpoints) == 0 { return nil } - err := p.updateRecord(record, managedZone.Status.ID, string(action)) + err := p.updateRecord(record, string(action)) if err != nil { - return fmt.Errorf("failed to update record in route53 hosted zone %s: %v", managedZone.Status.ID, err) + return fmt.Errorf("failed to update record in route53 hosted zone %s: %w", *record.Spec.ZoneID, err) } switch action { case upsertAction: - p.logger.Info("Upserted DNS record", "record", record.Spec, "hostedZoneID", managedZone.Status.ID) + p.logger.Info("Upserted DNS record", "record", record.Spec, "hostedZoneID", record.Spec.ZoneID) case deleteAction: - p.logger.Info("Deleted DNS record", "record", record.Spec, "hostedZoneID", managedZone.Status.ID) + p.logger.Info("Deleted DNS record", "record", record.Spec, "hostedZoneID", record.Spec.ZoneID) } return nil } -func (p *Route53DNSProvider) updateRecord(record *v1alpha1.DNSRecord, zoneID, action string) error { +func (p *Route53DNSProvider) updateRecord(record *v1alpha2.DNSRecord, action string) error { if len(record.Spec.Endpoints) == 0 { return fmt.Errorf("no endpoints") } - input := route53.ChangeResourceRecordSetsInput{HostedZoneId: aws.String(zoneID)} + input := route53.ChangeResourceRecordSetsInput{HostedZoneId: aws.String(*record.Spec.ZoneID)} expectedEndpointsMap := make(map[string]struct{}) var changes []*route53.Change @@ -244,14 +306,14 @@ func (p *Route53DNSProvider) updateRecord(record *v1alpha1.DNSRecord, zoneID, ac } resp, err := p.client.ChangeResourceRecordSets(&input) if err != nil { - return fmt.Errorf("couldn't update DNS record %s in zone %s: %v", record.Name, zoneID, err) + return fmt.Errorf("couldn't update DNS record %s in zone %s: %v", record.Name, *record.Spec.ZoneID, err) } - p.logger.Info("Updated DNS record", "record", record, "zone", zoneID, "response", resp) + p.logger.Info("Updated DNS record", "record", record, "zone", *record.Spec.ZoneID, "response", resp) return nil } -func (p *Route53DNSProvider) changeForEndpoint(endpoint *v1alpha1.Endpoint, action string) (*route53.Change, error) { - if endpoint.RecordType != string(v1alpha1.ARecordType) && endpoint.RecordType != string(v1alpha1.CNAMERecordType) && endpoint.RecordType != string(v1alpha1.NSRecordType) { +func (p *Route53DNSProvider) changeForEndpoint(endpoint *v1alpha2.Endpoint, action string) (*route53.Change, error) { + if endpoint.RecordType != string(v1alpha2.ARecordType) && endpoint.RecordType != string(v1alpha2.CNAMERecordType) && endpoint.RecordType != string(v1alpha2.NSRecordType) { return nil, fmt.Errorf("unsupported record type %s", endpoint.RecordType) } domain, targets := endpoint.DNSName, endpoint.Targets @@ -338,3 +400,16 @@ func validateServiceEndpoints(provider *Route53DNSProvider) error { } return kerrors.NewAggregate(errs) } + +// removeTrailingDot ensures that the hostname receives a trailing dot if it hasn't already. +func removeTrailingDot(hostname string) string { + if net.ParseIP(hostname) != nil { + return hostname + } + + return strings.TrimSuffix(hostname, ".") +} + +func removeHostedZoneIDPrefix(id string) string { + return strings.TrimPrefix(id, "/hostedzone/") +} diff --git a/pkg/dns/aws/health.go b/pkg/dns/aws/health.go index 1d726cf97..5289c59dc 100644 --- a/pkg/dns/aws/health.go +++ b/pkg/dns/aws/health.go @@ -11,7 +11,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -39,7 +39,7 @@ func NewRoute53HealthCheckReconciler(client route53iface.Route53API) *Route53Hea } } -func (r *Route53HealthCheckReconciler) Reconcile(ctx context.Context, spec dns.HealthCheckSpec, endpoint *v1alpha1.Endpoint) (dns.HealthCheckResult, error) { +func (r *Route53HealthCheckReconciler) Reconcile(ctx context.Context, spec dns.HealthCheckSpec, endpoint *v1alpha2.Endpoint) (dns.HealthCheckResult, error) { healthCheck, exists, err := r.findHealthCheck(ctx, endpoint) if err != nil { return dns.HealthCheckResult{}, err @@ -68,7 +68,7 @@ func (r *Route53HealthCheckReconciler) Reconcile(ctx context.Context, spec dns.H return dns.NewHealthCheckResult(dns.HealthCheckCreated, fmt.Sprintf("Created health check with ID %s", *healthCheck.Id)), nil } -func (r *Route53HealthCheckReconciler) Delete(ctx context.Context, endpoint *v1alpha1.Endpoint) (dns.HealthCheckResult, error) { +func (r *Route53HealthCheckReconciler) Delete(ctx context.Context, endpoint *v1alpha2.Endpoint) (dns.HealthCheckResult, error) { healthCheck, found, err := r.findHealthCheck(ctx, endpoint) if err != nil { return dns.HealthCheckResult{}, err @@ -89,7 +89,7 @@ func (r *Route53HealthCheckReconciler) Delete(ctx context.Context, endpoint *v1a return dns.NewHealthCheckResult(dns.HealthCheckDeleted, ""), nil } -func (c *Route53HealthCheckReconciler) findHealthCheck(ctx context.Context, endpoint *v1alpha1.Endpoint) (*route53.HealthCheck, bool, error) { +func (c *Route53HealthCheckReconciler) findHealthCheck(ctx context.Context, endpoint *v1alpha2.Endpoint) (*route53.HealthCheck, bool, error) { id, hasId := getHealthCheckId(endpoint) if !hasId { return nil, false, nil @@ -106,7 +106,7 @@ func (c *Route53HealthCheckReconciler) findHealthCheck(ctx context.Context, endp } -func (c *Route53HealthCheckReconciler) createHealthCheck(ctx context.Context, spec dns.HealthCheckSpec, endpoint *v1alpha1.Endpoint) (*route53.HealthCheck, error) { +func (c *Route53HealthCheckReconciler) createHealthCheck(ctx context.Context, spec dns.HealthCheckSpec, endpoint *v1alpha2.Endpoint) (*route53.HealthCheck, error) { address, _ := endpoint.GetAddress() host := endpoint.DNSName @@ -150,7 +150,7 @@ func (c *Route53HealthCheckReconciler) createHealthCheck(ctx context.Context, sp return output.HealthCheck, nil } -func (r *Route53HealthCheckReconciler) updateHealthCheck(ctx context.Context, spec dns.HealthCheckSpec, endpoint *v1alpha1.Endpoint, healthCheck *route53.HealthCheck) (dns.HealthCheckReconciliationResult, error) { +func (r *Route53HealthCheckReconciler) updateHealthCheck(ctx context.Context, spec dns.HealthCheckSpec, endpoint *v1alpha2.Endpoint, healthCheck *route53.HealthCheck) (dns.HealthCheckReconciliationResult, error) { diff := healthCheckDiff(healthCheck, spec, endpoint) if diff == nil { return dns.HealthCheckNoop, nil @@ -169,7 +169,7 @@ func (r *Route53HealthCheckReconciler) updateHealthCheck(ctx context.Context, sp // healthCheckDiff creates a `UpdateHealthCheckInput` object with the fields to // update on healthCheck based on the given spec. // If the health check matches the spec, returns `nil` -func healthCheckDiff(healthCheck *route53.HealthCheck, spec dns.HealthCheckSpec, endpoint *v1alpha1.Endpoint) *route53.UpdateHealthCheckInput { +func healthCheckDiff(healthCheck *route53.HealthCheck, spec dns.HealthCheckSpec, endpoint *v1alpha2.Endpoint) *route53.UpdateHealthCheckInput { var result *route53.UpdateHealthCheckInput // "Lazily" set the value for result only once and only when there is @@ -253,6 +253,6 @@ func valuesEqualWithDefault[T comparable](ptr1, ptr2 *T, defaultValue T) bool { return value1 == value2 } -func getHealthCheckId(endpoint *v1alpha1.Endpoint) (string, bool) { +func getHealthCheckId(endpoint *v1alpha2.Endpoint) (string, bool) { return endpoint.GetProviderSpecific(ProviderSpecificHealthCheckID) } diff --git a/pkg/dns/aws/health_test.go b/pkg/dns/aws/health_test.go index e5d4afa37..9c098bb74 100644 --- a/pkg/dns/aws/health_test.go +++ b/pkg/dns/aws/health_test.go @@ -12,7 +12,7 @@ import ( "github.com/aws/aws-sdk-go/service/route53/route53iface" "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/slice" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -21,10 +21,10 @@ func TestHealthCheckReconcile(t *testing.T) { name string spec dns.HealthCheckSpec - endpoint *v1alpha1.Endpoint + endpoint *v1alpha2.Endpoint existingHealthChecks []*mockHealthCheck - assertion func(dns.HealthCheckResult, error, *v1alpha1.Endpoint, *mockRoute53API) error + assertion func(dns.HealthCheckResult, error, *v1alpha2.Endpoint, *mockRoute53API) error }{ { name: "New health check created", @@ -32,7 +32,7 @@ func TestHealthCheckReconcile(t *testing.T) { spec: dns.HealthCheckSpec{ Name: "test-health-check", }, - endpoint: &v1alpha1.Endpoint{}, + endpoint: &v1alpha2.Endpoint{}, existingHealthChecks: []*mockHealthCheck{ { HealthCheck: &route53.HealthCheck{ @@ -41,7 +41,7 @@ func TestHealthCheckReconcile(t *testing.T) { }, }, - assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha1.Endpoint, mra *mockRoute53API) error { + assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha2.Endpoint, mra *mockRoute53API) error { if hcr.Result != dns.HealthCheckCreated { return fmt.Errorf("unexpected result. Expected Created, but got %s", hcr.Result) } @@ -71,8 +71,8 @@ func TestHealthCheckReconcile(t *testing.T) { Id: "test-0", Path: "/", }, - endpoint: &v1alpha1.Endpoint{ - ProviderSpecific: v1alpha1.ProviderSpecific{ + endpoint: &v1alpha2.Endpoint{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: ProviderSpecificHealthCheckID, Value: "test-0", @@ -94,7 +94,7 @@ func TestHealthCheckReconcile(t *testing.T) { }, }, }, - assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha1.Endpoint, mra *mockRoute53API) error { + assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha2.Endpoint, mra *mockRoute53API) error { if err != nil { return fmt.Errorf("unexpected errror %v", err) } @@ -117,11 +117,11 @@ func TestHealthCheckReconcile(t *testing.T) { Id: "test-0", Path: "/", }, - endpoint: &v1alpha1.Endpoint{ + endpoint: &v1alpha2.Endpoint{ DNSName: "test.example.com", - Targets: v1alpha1.Targets{"0.0.0.0"}, + Targets: v1alpha2.Targets{"0.0.0.0"}, SetIdentifier: "0.0.0.0", - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: ProviderSpecificHealthCheckID, Value: "test-0", @@ -146,7 +146,7 @@ func TestHealthCheckReconcile(t *testing.T) { }, }, }, - assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha1.Endpoint, mra *mockRoute53API) error { + assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha2.Endpoint, mra *mockRoute53API) error { if err != nil { return fmt.Errorf("unexpected errror %v", err) } @@ -182,16 +182,16 @@ func TestHealthCheckDelete(t *testing.T) { testCases := []struct { name string - endpoint *v1alpha1.Endpoint + endpoint *v1alpha2.Endpoint existingHealthChecks []*mockHealthCheck - assertion func(dns.HealthCheckResult, error, *v1alpha1.Endpoint, *mockRoute53API) error + assertion func(dns.HealthCheckResult, error, *v1alpha2.Endpoint, *mockRoute53API) error }{ { name: "Test case deleted", - endpoint: &v1alpha1.Endpoint{ - ProviderSpecific: v1alpha1.ProviderSpecific{ + endpoint: &v1alpha2.Endpoint{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: ProviderSpecificHealthCheckID, Value: "test-1", @@ -211,7 +211,7 @@ func TestHealthCheckDelete(t *testing.T) { }, }, - assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha1.Endpoint, mra *mockRoute53API) error { + assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha2.Endpoint, mra *mockRoute53API) error { if err != nil { return fmt.Errorf("unexpected error %v", err) } @@ -233,8 +233,8 @@ func TestHealthCheckDelete(t *testing.T) { { name: "Test case not found", - endpoint: &v1alpha1.Endpoint{ - ProviderSpecific: v1alpha1.ProviderSpecific{}, + endpoint: &v1alpha2.Endpoint{ + ProviderSpecific: v1alpha2.ProviderSpecific{}, }, existingHealthChecks: []*mockHealthCheck{ { @@ -244,7 +244,7 @@ func TestHealthCheckDelete(t *testing.T) { }, }, - assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha1.Endpoint, mra *mockRoute53API) error { + assertion: func(hcr dns.HealthCheckResult, err error, e *v1alpha2.Endpoint, mra *mockRoute53API) error { if err != nil { return fmt.Errorf("unexpected error %v", err) } diff --git a/pkg/dns/dns.go b/pkg/dns/dns.go index 7bc69f7c3..f5b94ed62 100644 --- a/pkg/dns/dns.go +++ b/pkg/dns/dns.go @@ -18,10 +18,11 @@ package dns import ( "context" + "encoding/json" "errors" "regexp" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" ) const ( @@ -31,22 +32,25 @@ const ( ProviderSpecificGeoCode = "geo-code" ) -type DNSProviderFactory func(ctx context.Context, managedZone *v1alpha1.ManagedZone) (Provider, error) +type DNSProviderFactory func(ctx context.Context, pa v1alpha2.ProviderAccessor) (Provider, error) // Provider knows how to manage DNS zones only as pertains to routing. type Provider interface { // Ensure will create or update record. - Ensure(record *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error + Ensure(record *v1alpha2.DNSRecord) error // Delete will delete record. - Delete(record *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error + Delete(record *v1alpha2.DNSRecord) error + + // List all zones + ListZones() (ZoneList, error) // Ensure will create or update a managed zone, returns an array of NameServers for that zone. - EnsureManagedZone(managedZone *v1alpha1.ManagedZone) (ManagedZoneOutput, error) + EnsureManagedZone(managedZone *v1alpha2.ManagedZone) (ManagedZoneOutput, error) // Delete will delete a managed zone. - DeleteManagedZone(managedZone *v1alpha1.ManagedZone) error + DeleteManagedZone(managedZone *v1alpha2.ManagedZone) error // Get an instance of HealthCheckReconciler for this provider HealthCheckReconciler() HealthCheckReconciler @@ -65,20 +69,56 @@ type ManagedZoneOutput struct { RecordCount int64 } +type Zone struct { + ID *string + DNSName *string +} + +type ZoneList struct { + Items []*Zone +} + +type ProviderConfig struct { + ZoneIDFilter []string + DomainFilter []string +} + +func ConfigFromJSON(jsonKey []byte) (*ProviderConfig, error) { + var pConfig struct { + ZoneIDFilter []string `json:"zoneIDFilter"` + DomainFilter []string `json:"domainFilter"` + } + if len(jsonKey) > 0 { + if err := json.Unmarshal(jsonKey, &pConfig); err != nil { + return nil, err + } + } + return &ProviderConfig{ + ZoneIDFilter: pConfig.ZoneIDFilter, + }, nil +} + var _ Provider = &FakeProvider{} type FakeProvider struct{} -func (*FakeProvider) Ensure(dnsRecord *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error { +func (*FakeProvider) Ensure(_ *v1alpha2.DNSRecord) error { return nil } -func (*FakeProvider) Delete(dnsRecord *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error { +func (*FakeProvider) Delete(_ *v1alpha2.DNSRecord) error { return nil } -func (*FakeProvider) EnsureManagedZone(managedZone *v1alpha1.ManagedZone) (ManagedZoneOutput, error) { - return ManagedZoneOutput{}, nil +func (*FakeProvider) ListZones() (ZoneList, error) { + return ZoneList{}, nil +} +func (*FakeProvider) EnsureManagedZone(mz *v1alpha2.ManagedZone) (ManagedZoneOutput, error) { + return ManagedZoneOutput{ + ID: *mz.Spec.ID, + NameServers: nil, + RecordCount: 0, + }, nil } -func (*FakeProvider) DeleteManagedZone(managedZone *v1alpha1.ManagedZone) error { return nil } +func (*FakeProvider) DeleteManagedZone(_ *v1alpha2.ManagedZone) error { return nil } func (*FakeProvider) HealthCheckReconciler() HealthCheckReconciler { return &FakeHealthCheckReconciler{} diff --git a/pkg/dns/dnsprovider/dnsProvider.go b/pkg/dns/dnsprovider/dnsProvider.go index c2cf87b08..75caa28ed 100644 --- a/pkg/dns/dnsprovider/dnsProvider.go +++ b/pkg/dns/dnsprovider/dnsProvider.go @@ -5,17 +5,19 @@ import ( "fmt" v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns/aws" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns/google" ) -var errUnsupportedProvider = fmt.Errorf("provider type given is not supported") +var ( + ErrUnsupportedProviderKind = fmt.Errorf("unsupported provider kind") + ErrUnsupportedProviderType = fmt.Errorf("unsupported provider type") +) type providerFactory struct { client.Client @@ -29,37 +31,60 @@ func NewProvider(c client.Client) *providerFactory { } // depending on the provider type specified in the form of a custom secret type https://kubernetes.io/docs/concepts/configuration/secret/#secret-types in the dnsprovider secret it returns a dnsprovider. -func (p *providerFactory) DNSProviderFactory(ctx context.Context, managedZone *v1alpha1.ManagedZone) (dns.Provider, error) { - providerSecret := &v1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: managedZone.Spec.SecretRef.Name, - Namespace: managedZone.Namespace, // must be in same namespace as ManagedZone - }} +func (p *providerFactory) DNSProviderFactory(ctx context.Context, pa v1alpha2.ProviderAccessor) (dns.Provider, error) { + return p.provider(ctx, pa) +} + +func (p *providerFactory) provider(ctx context.Context, pa v1alpha2.ProviderAccessor) (dns.Provider, error) { + switch pa.GetProviderRef().Kind { + case v1alpha2.ProviderKindSecret: + return p.providerFromSecret(ctx, pa.GetProviderRef().Name, pa.GetNamespace()) + case v1alpha2.ProviderKindManagedZone: + return p.providerFromManagedZone(ctx, pa.GetProviderRef().Name, pa.GetNamespace()) + case v1alpha2.ProviderKindNone: + fallthrough + default: + return nil, fmt.Errorf("%w : %s", ErrUnsupportedProviderKind, pa.GetProviderRef().Kind) + } +} - if err := p.Client.Get(ctx, client.ObjectKeyFromObject(providerSecret), providerSecret); err != nil { +func (p *providerFactory) providerFromSecret(ctx context.Context, name, namespace string) (dns.Provider, error) { + var providerSecret v1.Secret + if err := p.Client.Get(ctx, client.ObjectKey{Name: name, Namespace: namespace}, &providerSecret); err != nil { return nil, err } switch providerSecret.Type { case "kuadrant.io/aws": - dnsProvider, err := aws.NewProviderFromSecret(providerSecret) + dnsProvider, err := aws.NewProviderFromSecret(&providerSecret) if err != nil { return nil, fmt.Errorf("unable to create AWS dns provider from secret: %v", err) } - log.Log.V(1).Info("Route53 provider created", "managed zone:", managedZone.Name) + log.Log.V(1).Info("Route53 provider created from secret", "name", name, "namespace", namespace) return dnsProvider, nil case "kuadrant.io/gcp": - dnsProvider, err := google.NewProviderFromSecret(ctx, providerSecret) + dnsProvider, err := google.NewProviderFromSecret(ctx, &providerSecret) if err != nil { return nil, fmt.Errorf("unable to create GCP dns provider from secret: %v", err) } - log.Log.V(1).Info("Google provider created", "managed zone:", managedZone.Name) + log.Log.V(1).Info("Google provider created from secret", "name", name, "namespace", namespace) return dnsProvider, nil default: - return nil, errUnsupportedProvider + return nil, fmt.Errorf("%w : %s", ErrUnsupportedProviderType, providerSecret.Type) } +} +func (p *providerFactory) providerFromManagedZone(ctx context.Context, name, namespace string) (dns.Provider, error) { + var mz v1alpha2.ManagedZone + if err := p.Client.Get(ctx, client.ObjectKey{Name: name, Namespace: namespace}, &mz); err != nil { + return nil, err + } + //Avoid ending up in a loop, a managed zone should not reference another managed zone + if mz.GetProviderRef().Kind == v1alpha2.ProviderKindManagedZone { + return nil, fmt.Errorf("%w : managed zone cannot have a providerRef with kind %s", ErrUnsupportedProviderKind, v1alpha2.ProviderKindManagedZone) + } + return p.provider(ctx, &mz) } diff --git a/pkg/dns/filters.go b/pkg/dns/filters.go new file mode 100644 index 000000000..f9e3f3784 --- /dev/null +++ b/pkg/dns/filters.go @@ -0,0 +1,71 @@ +package dns + +import "strings" + +// ZoneIDFilter holds a list of zone ids to filter by +type ZoneIDFilter struct { + ZoneIDs []string +} + +// NewZoneIDFilter returns a new ZoneIDFilter given a list of zone ids +func NewZoneIDFilter(zoneIDs []string) ZoneIDFilter { + return ZoneIDFilter{zoneIDs} +} + +// Match checks whether a zone matches one of the provided zone ids +func (f ZoneIDFilter) Match(zoneID string) bool { + // An empty filter includes all zones. + if len(f.ZoneIDs) == 0 { + return true + } + + for _, id := range f.ZoneIDs { + if strings.HasSuffix(zoneID, id) { + return true + } + } + + return false +} + +// IsConfigured returns true if DomainFilter is configured, false otherwise +func (f ZoneIDFilter) IsConfigured() bool { + if len(f.ZoneIDs) == 1 { + return f.ZoneIDs[0] != "" + } + return len(f.ZoneIDs) > 0 +} + +// DomainFilter holds a list of domains to filter by +type DomainFilter struct { + DomainNames []string +} + +// NewDomainFilter returns a new DomainFilter given a list of domain names +func NewDomainFilter(domainNames []string) DomainFilter { + return DomainFilter{domainNames} +} + +// Match checks whether a zone matches one of the provided domains +func (f DomainFilter) Match(domainName string) bool { + // An empty filter includes all zones. + if len(f.DomainNames) == 0 { + return true + } + + for _, id := range f.DomainNames { + if strings.HasSuffix(domainName, id) { + return true + } + } + + return false +} + +// IsConfigured returns true if DomainFilter is configured, false otherwise +func (f DomainFilter) IsConfigured() bool { + if len(f.DomainNames) == 1 { + return f.DomainNames[0] != "" + } + return len(f.DomainNames) > 0 +} diff --git a/pkg/dns/google/google.go b/pkg/dns/google/google.go index a269d29c4..6f9f5d2a5 100644 --- a/pkg/dns/google/google.go +++ b/pkg/dns/google/google.go @@ -33,7 +33,7 @@ import ( v1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/log" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -135,6 +135,10 @@ type GoogleDNSProvider struct { batchChangeSize int // Interval between batch updates. batchChangeInterval time.Duration + // only consider hosted zones ending with this zone id + zoneIDFilter dns.ZoneIDFilter + // only consider hosted zones managing domains ending in this suffix + domainFilter dns.DomainFilter // A client for managing resource record sets resourceRecordSetsClient resourceRecordSetsClientInterface // A client for managing hosted zones @@ -153,6 +157,11 @@ func NewProviderFromSecret(ctx context.Context, s *v1.Secret) (*GoogleDNSProvide return nil, fmt.Errorf("GCP Provider credentials is empty") } + pConfig, err := dns.ConfigFromJSON(s.Data["CONFIG"]) + if err != nil { + return nil, err + } + dnsClient, err := dnsv1.NewService(ctx, option.WithCredentialsJSON(s.Data["GOOGLE"])) if err != nil { return nil, err @@ -160,12 +169,17 @@ func NewProviderFromSecret(ctx context.Context, s *v1.Secret) (*GoogleDNSProvide var project = string(s.Data["PROJECT_ID"]) + zoneIDFilter := dns.NewZoneIDFilter(pConfig.ZoneIDFilter) + domainFilter := dns.NewDomainFilter(pConfig.DomainFilter) + provider := &GoogleDNSProvider{ logger: log.Log.WithName("google-dns").WithValues("project", project), project: project, dryRun: DryRun, batchChangeSize: GoogleBatchChangeSize, batchChangeInterval: GoogleBatchChangeInterval, + zoneIDFilter: zoneIDFilter, + domainFilter: domainFilter, resourceRecordSetsClient: resourceRecordSetsService{dnsClient.ResourceRecordSets}, managedZonesClient: managedZonesService{dnsClient.ManagedZones}, changesClient: changesService{dnsClient.Changes}, @@ -177,15 +191,57 @@ func NewProviderFromSecret(ctx context.Context, s *v1.Secret) (*GoogleDNSProvide // ManagedZones -func (g *GoogleDNSProvider) DeleteManagedZone(managedZone *v1alpha1.ManagedZone) error { +func (p *GoogleDNSProvider) ListZones() (dns.ZoneList, error) { + var zoneList dns.ZoneList + zones, err := p.zones() + if err != nil { + return zoneList, err + } + for _, zone := range zones { + dnsName := removeTrailingDot(zone.DnsName) + zoneList.Items = append(zoneList.Items, &dns.Zone{ + ID: &zone.Name, + DNSName: &dnsName, + }) + } + return zoneList, nil +} + +// Zones returns the list of managed zones. +func (p *GoogleDNSProvider) zones() (map[string]*dnsv1.ManagedZone, error) { + zones := make(map[string]*dnsv1.ManagedZone) + + f := func(resp *dnsv1.ManagedZonesListResponse) error { + for _, zone := range resp.ManagedZones { + if !p.domainFilter.Match(zone.DnsName) && !(p.zoneIDFilter.Match(fmt.Sprintf("%v", zone.Id)) || p.zoneIDFilter.Match(fmt.Sprintf("%v", zone.Name))) { + continue + } + zones[zone.Name] = zone + } + return nil + } + + err := p.managedZonesClient.List(p.project).Pages(p.ctx, f) + if err != nil { + return nil, fmt.Errorf("failed to list managed zones: %w", err) + } + + for _, zone := range zones { + log.Log.V(1).Info("Considering zone", "zone.Name", zone.Name, "zone.DnsName", zone.DnsName) + } + + return zones, nil +} + +func (g *GoogleDNSProvider) DeleteManagedZone(managedZone *v1alpha2.ManagedZone) error { return g.managedZonesClient.Delete(g.project, managedZone.Status.ID).Do() } -func (g *GoogleDNSProvider) EnsureManagedZone(managedZone *v1alpha1.ManagedZone) (dns.ManagedZoneOutput, error) { +func (g *GoogleDNSProvider) EnsureManagedZone(managedZone *v1alpha2.ManagedZone) (dns.ManagedZoneOutput, error) { var zoneID string - if managedZone.Spec.ID != "" { - zoneID = managedZone.Spec.ID + if managedZone.Spec.ID != nil { + zoneID = *managedZone.Spec.ID } else { zoneID = managedZone.Status.ID } @@ -198,12 +254,12 @@ func (g *GoogleDNSProvider) EnsureManagedZone(managedZone *v1alpha1.ManagedZone) return g.createManagedZone(managedZone) } -func (g *GoogleDNSProvider) createManagedZone(managedZone *v1alpha1.ManagedZone) (dns.ManagedZoneOutput, error) { +func (g *GoogleDNSProvider) createManagedZone(managedZone *v1alpha2.ManagedZone) (dns.ManagedZoneOutput, error) { zoneID := strings.Replace(managedZone.Spec.DomainName, ".", "-", -1) zone := dnsv1.ManagedZone{ Name: zoneID, DnsName: ensureTrailingDot(managedZone.Spec.DomainName), - Description: managedZone.Spec.Description, + Description: *managedZone.Spec.Description, } mz, err := g.managedZonesClient.Create(g.project, &zone).Do() if err != nil { @@ -242,12 +298,12 @@ func (g *GoogleDNSProvider) toManagedZoneOutput(mz *dnsv1.ManagedZone) (dns.Mana //DNSRecords -func (g *GoogleDNSProvider) Ensure(record *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error { - return g.updateRecord(record, managedZone.Status.ID, upsertAction) +func (g *GoogleDNSProvider) Ensure(record *v1alpha2.DNSRecord) error { + return g.updateRecord(record, upsertAction) } -func (g *GoogleDNSProvider) Delete(record *v1alpha1.DNSRecord, managedZone *v1alpha1.ManagedZone) error { - return g.updateRecord(record, managedZone.Status.ID, deleteAction) +func (g *GoogleDNSProvider) Delete(record *v1alpha2.DNSRecord) error { + return g.updateRecord(record, deleteAction) } func (g *GoogleDNSProvider) HealthCheckReconciler() dns.HealthCheckReconciler { @@ -259,12 +315,15 @@ func (g *GoogleDNSProvider) ProviderSpecific() dns.ProviderSpecificLabels { return dns.ProviderSpecificLabels{} } -func (g *GoogleDNSProvider) updateRecord(dnsRecord *v1alpha1.DNSRecord, zoneID string, action action) error { +func (g *GoogleDNSProvider) updateRecord(dnsRecord *v1alpha2.DNSRecord, action action) error { // When updating records the Google DNS API expects you to delete any existing record and add the new one as part of // the same change request. The record to be deleted must match exactly what currently exists in the provider or the // change request will fail. To make sure we can always remove the records, we first get all records that exist in // the zone and build up the deleting list from `dnsRecord.Status` but use the most recent version of it retrieved // from the provider in the change request. + + zoneID := *dnsRecord.Spec.ZoneID + currentRecords, err := g.getResourceRecordSets(g.ctx, zoneID) if err != nil { return err @@ -417,12 +476,12 @@ func (g *GoogleDNSProvider) getResourceRecordSets(ctx context.Context, zoneID st } // toResourceRecordSets converts a list of endpoints into `ResourceRecordSet` resources. -func toResourceRecordSets(allEndpoints []*v1alpha1.Endpoint) []*dnsv1.ResourceRecordSet { +func toResourceRecordSets(allEndpoints []*v1alpha2.Endpoint) []*dnsv1.ResourceRecordSet { var records []*dnsv1.ResourceRecordSet // Google DNS requires a record to be created per `dnsName`, so the first thing we need to do is group all the // endpoints with the same dnsName together. - endpointMap := make(map[string][]*v1alpha1.Endpoint) + endpointMap := make(map[string][]*v1alpha2.Endpoint) for _, ep := range allEndpoints { endpointMap[ep.DNSName] = append(endpointMap[ep.DNSName], ep) } @@ -453,7 +512,7 @@ func toResourceRecordSets(allEndpoints []*v1alpha1.Endpoint) []*dnsv1.ResourceRe for _, ep := range endpoints { targets := make([]string, len(ep.Targets)) copy(targets, ep.Targets) - if ep.RecordType == string(v1alpha1.CNAMERecordType) { + if ep.RecordType == string(v1alpha2.CNAMERecordType) { targets[0] = ensureTrailingDot(targets[0]) } @@ -505,3 +564,12 @@ func ensureTrailingDot(hostname string) string { return strings.TrimSuffix(hostname, ".") + "." } + +// removeTrailingDot ensures that the hostname receives a trailing dot if it hasn't already. +func removeTrailingDot(hostname string) string { + if net.ParseIP(hostname) != nil { + return hostname + } + + return strings.TrimSuffix(hostname, ".") +} diff --git a/pkg/dns/google/google_test.go b/pkg/dns/google/google_test.go index fc9e1ed84..552a86ff9 100644 --- a/pkg/dns/google/google_test.go +++ b/pkg/dns/google/google_test.go @@ -12,7 +12,7 @@ import ( "github.com/aws/aws-sdk-go/aws" dnsv1 "google.golang.org/api/dns/v1" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) @@ -133,7 +133,7 @@ func TestGoogleDNSProvider_toManagedZoneOutput(t *testing.T) { func Test_toResourceRecordSets(t *testing.T) { type args struct { - allEndpoints []*v1alpha1.Endpoint + allEndpoints []*v1alpha2.Endpoint } tests := []struct { name string @@ -143,15 +143,15 @@ func Test_toResourceRecordSets(t *testing.T) { { name: "Successful test Geo & weight", args: args{ - allEndpoints: []*v1alpha1.Endpoint{ + allEndpoints: []*v1alpha2.Endpoint{ { DNSName: "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", RecordType: "A", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "0.0.0.0", }, - ProviderSpecific: v1alpha1.ProviderSpecific{}, + ProviderSpecific: v1alpha2.ProviderSpecific{}, SetIdentifier: "", }, { @@ -159,11 +159,11 @@ func Test_toResourceRecordSets(t *testing.T) { RecordType: "CNAME", SetIdentifier: "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", }, - ProviderSpecific: v1alpha1.ProviderSpecific{ - v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: v1alpha2.ProviderSpecific{ + v1alpha2.ProviderSpecificProperty{ Name: "weight", Value: "60", }, @@ -177,8 +177,8 @@ func Test_toResourceRecordSets(t *testing.T) { "europe-west1.lb-4ej5le.unittest.google.hcpapps.net", }, RecordTTL: 300, - ProviderSpecific: v1alpha1.ProviderSpecific{ - v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: v1alpha2.ProviderSpecific{ + v1alpha2.ProviderSpecificProperty{ Name: "geo-code", Value: "europe-west1", }, @@ -254,12 +254,12 @@ func Test_toResourceRecordSets(t *testing.T) { { name: "Successful test no Geo & weight", args: args{ - allEndpoints: []*v1alpha1.Endpoint{ + allEndpoints: []*v1alpha2.Endpoint{ { DNSName: "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", RecordType: "A", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "0.0.0.0", }, SetIdentifier: "", @@ -269,11 +269,11 @@ func Test_toResourceRecordSets(t *testing.T) { RecordType: "CNAME", SetIdentifier: "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", }, - ProviderSpecific: v1alpha1.ProviderSpecific{ - v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: v1alpha2.ProviderSpecific{ + v1alpha2.ProviderSpecificProperty{ Name: "weight", Value: "120", }, @@ -287,8 +287,8 @@ func Test_toResourceRecordSets(t *testing.T) { "default.lb-4ej5le.unittest.google.hcpapps.net", }, RecordTTL: 300, - ProviderSpecific: v1alpha1.ProviderSpecific{ - v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: v1alpha2.ProviderSpecific{ + v1alpha2.ProviderSpecificProperty{ Name: "geo-code", Value: "*", }, @@ -362,12 +362,12 @@ func Test_toResourceRecordSets(t *testing.T) { { name: "Successful test weight round robin with multiple targets", args: args{ - allEndpoints: []*v1alpha1.Endpoint{ + allEndpoints: []*v1alpha2.Endpoint{ { DNSName: "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", RecordType: "A", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "0.0.0.0", }, SetIdentifier: "", @@ -376,7 +376,7 @@ func Test_toResourceRecordSets(t *testing.T) { DNSName: "lrnse3.lb-4ej5le.unittest.google.hcpapps.net", RecordType: "A", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "0.0.0.1", }, SetIdentifier: "", @@ -386,11 +386,11 @@ func Test_toResourceRecordSets(t *testing.T) { RecordType: "CNAME", SetIdentifier: "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "2c71gf.lb-4ej5le.unittest.google.hcpapps.net", }, - ProviderSpecific: v1alpha1.ProviderSpecific{ - v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: v1alpha2.ProviderSpecific{ + v1alpha2.ProviderSpecificProperty{ Name: "weight", Value: "120", }, @@ -401,11 +401,11 @@ func Test_toResourceRecordSets(t *testing.T) { RecordType: "CNAME", SetIdentifier: "lrnse3.lb-4ej5le.unittest.google.hcpapps.net", RecordTTL: 60, - Targets: v1alpha1.Targets{ + Targets: v1alpha2.Targets{ "lrnse3.lb-4ej5le.unittest.google.hcpapps.net", }, - ProviderSpecific: v1alpha1.ProviderSpecific{ - v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: v1alpha2.ProviderSpecific{ + v1alpha2.ProviderSpecificProperty{ Name: "weight", Value: "120", }, @@ -419,8 +419,8 @@ func Test_toResourceRecordSets(t *testing.T) { "default.lb-4ej5le.unittest.google.hcpapps.net", }, RecordTTL: 300, - ProviderSpecific: v1alpha1.ProviderSpecific{ - v1alpha1.ProviderSpecificProperty{ + ProviderSpecific: v1alpha2.ProviderSpecific{ + v1alpha2.ProviderSpecificProperty{ Name: "geo-code", Value: "*", }, diff --git a/pkg/dns/health.go b/pkg/dns/health.go index 0f7d47349..b3faf2d03 100644 --- a/pkg/dns/health.go +++ b/pkg/dns/health.go @@ -5,13 +5,13 @@ import ( "reflect" "sync" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" ) type HealthCheckReconciler interface { - Reconcile(ctx context.Context, spec HealthCheckSpec, endpoint *v1alpha1.Endpoint) (HealthCheckResult, error) + Reconcile(ctx context.Context, spec HealthCheckSpec, endpoint *v1alpha2.Endpoint) (HealthCheckResult, error) - Delete(ctx context.Context, endpoint *v1alpha1.Endpoint) (HealthCheckResult, error) + Delete(ctx context.Context, endpoint *v1alpha2.Endpoint) (HealthCheckResult, error) } type HealthCheckSpec struct { @@ -53,11 +53,11 @@ const HealthCheckProtocolHTTPS HealthCheckProtocol = "HTTPS" type FakeHealthCheckReconciler struct{} -func (*FakeHealthCheckReconciler) Reconcile(ctx context.Context, _ HealthCheckSpec, _ *v1alpha1.Endpoint) (HealthCheckResult, error) { +func (*FakeHealthCheckReconciler) Reconcile(ctx context.Context, _ HealthCheckSpec, _ *v1alpha2.Endpoint) (HealthCheckResult, error) { return HealthCheckResult{HealthCheckCreated, ""}, nil } -func (*FakeHealthCheckReconciler) Delete(ctx context.Context, _ *v1alpha1.Endpoint) (HealthCheckResult, error) { +func (*FakeHealthCheckReconciler) Delete(ctx context.Context, _ *v1alpha2.Endpoint) (HealthCheckResult, error) { return HealthCheckResult{HealthCheckDeleted, ""}, nil } @@ -81,7 +81,7 @@ func NewCachedHealthCheckReconciler(provider Provider, reconciler HealthCheckRec } // Delete implements HealthCheckReconciler -func (r *CachedHealthCheckReconciler) Delete(ctx context.Context, endpoint *v1alpha1.Endpoint) (HealthCheckResult, error) { +func (r *CachedHealthCheckReconciler) Delete(ctx context.Context, endpoint *v1alpha2.Endpoint) (HealthCheckResult, error) { id, ok := r.getHealthCheckID(endpoint) if !ok { return NewHealthCheckResult(HealthCheckNoop, ""), nil @@ -92,7 +92,7 @@ func (r *CachedHealthCheckReconciler) Delete(ctx context.Context, endpoint *v1al } // Reconcile implements HealthCheckReconciler -func (r *CachedHealthCheckReconciler) Reconcile(ctx context.Context, spec HealthCheckSpec, endpoint *v1alpha1.Endpoint) (HealthCheckResult, error) { +func (r *CachedHealthCheckReconciler) Reconcile(ctx context.Context, spec HealthCheckSpec, endpoint *v1alpha2.Endpoint) (HealthCheckResult, error) { id, ok := r.getHealthCheckID(endpoint) if !ok { return r.reconciler.Reconcile(ctx, spec, endpoint) @@ -116,6 +116,6 @@ func (r *CachedHealthCheckReconciler) Reconcile(ctx context.Context, spec Health return r.reconciler.Reconcile(ctx, spec, endpoint) } -func (r *CachedHealthCheckReconciler) getHealthCheckID(endpoint *v1alpha1.Endpoint) (string, bool) { +func (r *CachedHealthCheckReconciler) getHealthCheckID(endpoint *v1alpha2.Endpoint) (string, bool) { return endpoint.GetProviderSpecific(r.provider.ProviderSpecific().HealthCheckID) } diff --git a/pkg/dns/target.go b/pkg/dns/target.go index f00e6dd80..9248dd090 100644 --- a/pkg/dns/target.go +++ b/pkg/dns/target.go @@ -12,11 +12,12 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" ) const ( - DefaultWeight = int(v1alpha1.DefaultWeight) + DefaultWeight = int(v1alpha2.DefaultWeight) DefaultGeo GeoCode = "default" WildcardGeo GeoCode = "*" LabelLBAttributeGeoCode = "kuadrant.io/lb-attribute-geo-code" @@ -26,10 +27,10 @@ const ( type MultiClusterGatewayTarget struct { Gateway *gatewayapiv1.Gateway ClusterGatewayTargets []ClusterGatewayTarget - LoadBalancing *v1alpha1.LoadBalancingSpec + LoadBalancing *v1alpha2.LoadBalancingSpec } -func NewMultiClusterGatewayTarget(gateway *gatewayapiv1.Gateway, clusterGateways []utils.ClusterGateway, loadBalancing *v1alpha1.LoadBalancingSpec) (*MultiClusterGatewayTarget, error) { +func NewMultiClusterGatewayTarget(gateway *gatewayapiv1.Gateway, clusterGateways []utils.ClusterGateway, loadBalancing *v1alpha2.LoadBalancingSpec) (*MultiClusterGatewayTarget, error) { mcg := &MultiClusterGatewayTarget{Gateway: gateway, LoadBalancing: loadBalancing} err := mcg.setClusterGatewayTargets(clusterGateways) return mcg, err @@ -69,7 +70,7 @@ func (t *MultiClusterGatewayTarget) GetDefaultWeight() int { func (t *MultiClusterGatewayTarget) setClusterGatewayTargets(clusterGateways []utils.ClusterGateway) error { var cgTargets []ClusterGatewayTarget for _, cg := range clusterGateways { - var customWeights []*v1alpha1.CustomWeight + var customWeights []*v1alpha2.CustomWeight if t.LoadBalancing != nil && t.LoadBalancing.Weighted != nil { customWeights = t.LoadBalancing.Weighted.Custom } @@ -100,7 +101,7 @@ type ClusterGatewayTarget struct { Weight *int } -func NewClusterGatewayTarget(cg utils.ClusterGateway, defaultGeoCode GeoCode, defaultWeight int, customWeights []*v1alpha1.CustomWeight) (ClusterGatewayTarget, error) { +func NewClusterGatewayTarget(cg utils.ClusterGateway, defaultGeoCode GeoCode, defaultWeight int, customWeights []*v1alpha2.CustomWeight) (ClusterGatewayTarget, error) { target := ClusterGatewayTarget{ ClusterGateway: &cg, } @@ -197,7 +198,7 @@ func dnsHealthCheckProbeName(address, gatewayName, listenerName string) string { return fmt.Sprintf("%s-%s-%s", address, gatewayName, listenerName) } -func (t *ClusterGatewayTarget) setWeight(defaultWeight int, customWeights []*v1alpha1.CustomWeight) error { +func (t *ClusterGatewayTarget) setWeight(defaultWeight int, customWeights []*v1alpha2.CustomWeight) error { weight := defaultWeight for k := range customWeights { cw := customWeights[k] diff --git a/pkg/dns/target_test.go b/pkg/dns/target_test.go index 1b97e2d5a..c29a7dbe3 100644 --- a/pkg/dns/target_test.go +++ b/pkg/dns/target_test.go @@ -12,6 +12,7 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" ) @@ -29,7 +30,7 @@ func TestNewClusterGatewayTarget(t *testing.T) { clusterGateway utils.ClusterGateway defaultGeoCode GeoCode defaultWeight int - customWeights []*v1alpha1.CustomWeight + customWeights []*v1alpha2.CustomWeight } testCases := []struct { name string @@ -51,7 +52,7 @@ func TestNewClusterGatewayTarget(t *testing.T) { }, defaultWeight: 100, defaultGeoCode: GeoCode("IE"), - customWeights: []*v1alpha1.CustomWeight{}, + customWeights: []*v1alpha2.CustomWeight{}, }, want: ClusterGatewayTarget{ ClusterGateway: &utils.ClusterGateway{ @@ -88,7 +89,7 @@ func TestNewClusterGatewayTarget(t *testing.T) { }, defaultWeight: 100, defaultGeoCode: GeoCode("IE"), - customWeights: []*v1alpha1.CustomWeight{ + customWeights: []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -142,7 +143,7 @@ func TestNewMultiClusterGatewayTarget(t *testing.T) { type args struct { gateway *gatewayapiv1.Gateway clusterGateways []utils.ClusterGateway - loadBalancing *v1alpha1.LoadBalancingSpec + loadBalancing *v1alpha2.LoadBalancingSpec } gateway := &gatewayapiv1.Gateway{ ObjectMeta: v1.ObjectMeta{ @@ -252,11 +253,11 @@ func TestNewMultiClusterGatewayTarget(t *testing.T) { ClusterName: clusterName2, }, }, - loadBalancing: &v1alpha1.LoadBalancingSpec{ - Weighted: &v1alpha1.LoadBalancingWeighted{ + loadBalancing: &v1alpha2.LoadBalancingSpec{ + Weighted: &v1alpha2.LoadBalancingWeighted{ DefaultWeight: 255, }, - Geo: &v1alpha1.LoadBalancingGeo{ + Geo: &v1alpha2.LoadBalancingGeo{ DefaultGeo: "IE", }, }, @@ -295,11 +296,11 @@ func TestNewMultiClusterGatewayTarget(t *testing.T) { Weight: testutil.Pointer(255), }, }, - LoadBalancing: &v1alpha1.LoadBalancingSpec{ - Weighted: &v1alpha1.LoadBalancingWeighted{ + LoadBalancing: &v1alpha2.LoadBalancingSpec{ + Weighted: &v1alpha2.LoadBalancingWeighted{ DefaultWeight: 255, }, - Geo: &v1alpha1.LoadBalancingGeo{ + Geo: &v1alpha2.LoadBalancingGeo{ DefaultGeo: "IE", }, }, @@ -336,10 +337,10 @@ func TestNewMultiClusterGatewayTarget(t *testing.T) { ClusterName: clusterName2, }, }, - loadBalancing: &v1alpha1.LoadBalancingSpec{ - Weighted: &v1alpha1.LoadBalancingWeighted{ + loadBalancing: &v1alpha2.LoadBalancingSpec{ + Weighted: &v1alpha2.LoadBalancingWeighted{ DefaultWeight: 255, - Custom: []*v1alpha1.CustomWeight{ + Custom: []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -350,7 +351,7 @@ func TestNewMultiClusterGatewayTarget(t *testing.T) { }, }, }, - Geo: &v1alpha1.LoadBalancingGeo{ + Geo: &v1alpha2.LoadBalancingGeo{ DefaultGeo: "IE", }, }, @@ -391,10 +392,10 @@ func TestNewMultiClusterGatewayTarget(t *testing.T) { Weight: testutil.Pointer(255), }, }, - LoadBalancing: &v1alpha1.LoadBalancingSpec{ - Weighted: &v1alpha1.LoadBalancingWeighted{ + LoadBalancing: &v1alpha2.LoadBalancingSpec{ + Weighted: &v1alpha2.LoadBalancingWeighted{ DefaultWeight: 255, - Custom: []*v1alpha1.CustomWeight{ + Custom: []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -405,7 +406,7 @@ func TestNewMultiClusterGatewayTarget(t *testing.T) { }, }, }, - Geo: &v1alpha1.LoadBalancingGeo{ + Geo: &v1alpha2.LoadBalancingGeo{ DefaultGeo: "IE", }, }, @@ -513,7 +514,7 @@ func TestClusterGatewayTarget_setWeight(t *testing.T) { testCases := []struct { name string defaultWeight int - customWeights []*v1alpha1.CustomWeight + customWeights []*v1alpha2.CustomWeight gatewayLabels map[string]string want int wantErr bool @@ -522,7 +523,7 @@ func TestClusterGatewayTarget_setWeight(t *testing.T) { name: "sets geo from default", defaultWeight: 255, gatewayLabels: nil, - customWeights: []*v1alpha1.CustomWeight{}, + customWeights: []*v1alpha2.CustomWeight{}, want: 255, wantErr: false, }, @@ -532,7 +533,7 @@ func TestClusterGatewayTarget_setWeight(t *testing.T) { gatewayLabels: map[string]string{ "tstlabel1": "TSTATTR", }, - customWeights: []*v1alpha1.CustomWeight{ + customWeights: []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -552,7 +553,7 @@ func TestClusterGatewayTarget_setWeight(t *testing.T) { "tstlabel1": "TSTATTR", "tstlabel2": "TSTATTR2", }, - customWeights: []*v1alpha1.CustomWeight{ + customWeights: []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -572,7 +573,7 @@ func TestClusterGatewayTarget_setWeight(t *testing.T) { gatewayLabels: map[string]string{ "tstlabel1": "TSTATTR", }, - customWeights: []*v1alpha1.CustomWeight{ + customWeights: []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -592,7 +593,7 @@ func TestClusterGatewayTarget_setWeight(t *testing.T) { gatewayLabels: map[string]string{ "/tstlabel1": "TSTATTR", }, - customWeights: []*v1alpha1.CustomWeight{ + customWeights: []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -649,7 +650,7 @@ func TestMultiClusterGatewayTarget_RemoveUnhealthyGatewayAddresses(t *testing.T) type fields struct { Gateway *gatewayapiv1.Gateway ClusterGatewayTargets []ClusterGatewayTarget - LoadBalancing *v1alpha1.LoadBalancingSpec + LoadBalancing *v1alpha2.LoadBalancingSpec } type args struct { probes []*v1alpha1.DNSHealthCheckProbe diff --git a/pkg/policysync/policy_test.go b/pkg/policysync/policy_test.go index 3258a8234..2574dc495 100644 --- a/pkg/policysync/policy_test.go +++ b/pkg/policysync/policy_test.go @@ -7,12 +7,12 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" gatewayapiv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" ) func TestReflectPolicy(t *testing.T) { - policy := &v1alpha1.DNSPolicy{ - Spec: v1alpha1.DNSPolicySpec{ + policy := &v1alpha2.DNSPolicy{ + Spec: v1alpha2.DNSPolicySpec{ TargetRef: gatewayapiv1alpha2.PolicyTargetReference{ Group: gatewayapiv1.Group("test.io"), Kind: gatewayapiv1.Kind("Test"), diff --git a/test/e2e/dnspolicy_providers_istio_gateway_test.go b/test/e2e/dnspolicy_providers_istio_gateway_test.go new file mode 100644 index 000000000..2ba8703f7 --- /dev/null +++ b/test/e2e/dnspolicy_providers_istio_gateway_test.go @@ -0,0 +1,394 @@ +//go:build e2e + +package e2e + +import ( + "context" + "encoding/json" + "fmt" + "strings" + "time" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + . "github.com/onsi/gomega/gstruct" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" + + "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" + . "github.com/Kuadrant/multicluster-gateway-controller/test/util" +) + +var _ = Describe("DNSPolicy Targeting an Istio Gateway", func() { + + // testID is a randomly generated identifier for the test + // it is used to name resources and/or namespaces so different + // tests can be run in parallel in the same cluster + var testID string + // testNamespace provided namespace in which to run tests (must contain provider secret) + var testNamespace string + // testZoneID provided zone id for the provider zone i.e. Route53 Hosted zone ID or GCP Managed zone Name + var testZoneID string + // testZoneDomainName provided domain name for the testZoneID e.g. e2e.hcpapps.net + var testZoneDomainName string + // testDomainName generated domain for this test e.g. t-e2e-12345.e2e.hcpapps.net + var testDomainName string + // testHostname generated hostname for this test e.g. t-dns-istio.t-e2e-12345.e2e.hcpapps.net + var testHostname gatewayapiv1.Hostname + + var k8sClient client.Client + + var gw *gatewayapiv1.Gateway + var httproute *gatewayapiv1.HTTPRoute + var dnsPolicy *v1alpha2.DNSPolicy + var mz *v1alpha2.ManagedZone + + BeforeEach(func(ctx SpecContext) { + testID = "t-dns-" + tconfig.GenerateName() + //ToDo Have this generate a new namespace instead of using the Hub Namespace and consider using a spoke client. + // This currently still relies on the provider credentials secret being created ahead of time in a target namespace + testNamespace = tconfig.HubNamespace() + testZoneID = tconfig.DNSZoneID() + testZoneDomainName = tconfig.DNSZoneDomainName() + testDomainName = strings.Join([]string{testSuiteID, testZoneDomainName}, ".") + testHostname = gatewayapiv1.Hostname(strings.Join([]string{testID, testDomainName}, ".")) + k8sClient = tconfig.HubClient() + + GinkgoWriter.Printf("[debug] testHostname: '%s'\n", testHostname) + + By("creating an Istio Gateway") + gw = NewGatewayBuilder(testID, IstioGatewayClassName, testNamespace). + WithListener(gatewayapiv1.Listener{ + Name: "http", + Hostname: &testHostname, + Port: 80, + Protocol: gatewayapiv1.HTTPProtocolType, + AllowedRoutes: &gatewayapiv1.AllowedRoutes{ + Namespaces: &gatewayapiv1.RouteNamespaces{ + From: Pointer(gatewayapiv1.NamespacesFromAll), + }, + }, + }).WithLabels(map[string]string{"gw": "t-e2e"}).Gateway + err := k8sClient.Create(ctx, gw) + Expect(err).ToNot(HaveOccurred()) + + By("creating an HTTPRoute") + httproute = &gatewayapiv1.HTTPRoute{ + ObjectMeta: metav1.ObjectMeta{ + Name: testID, + Namespace: testNamespace, + }, + Spec: gatewayapiv1.HTTPRouteSpec{ + CommonRouteSpec: gatewayapiv1.CommonRouteSpec{ + ParentRefs: []gatewayapiv1.ParentReference{{ + Namespace: Pointer(gatewayapiv1.Namespace(testNamespace)), + Name: gatewayapiv1.ObjectName(gw.GetName()), + Kind: Pointer(gatewayapiv1.Kind("Gateway")), + }}, + }, + Hostnames: []gatewayapiv1.Hostname{testHostname}, + Rules: []gatewayapiv1.HTTPRouteRule{{ + BackendRefs: []gatewayapiv1.HTTPBackendRef{{ + BackendRef: gatewayapiv1.BackendRef{ + BackendObjectReference: gatewayapiv1.BackendObjectReference{ + Kind: Pointer(gatewayapiv1.Kind("Service")), + Name: "test", + Port: Pointer(gatewayapiv1.PortNumber(8080)), + }, + }, + }}, + }}, + }, + } + err = k8sClient.Create(ctx, httproute) + Expect(err).ToNot(HaveOccurred()) + }) + + AfterEach(func(ctx SpecContext) { + if dnsPolicy != nil { + err := k8sClient.Delete(ctx, dnsPolicy, + client.PropagationPolicy(metav1.DeletePropagationForeground)) + Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) + Eventually(func(g Gomega) { // wait until it's gone to allow time for DNSRecords to be cleaned up + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) + g.Expect(err).To(HaveOccurred()) + g.Expect(err).To(MatchError(ContainSubstring("not found"))) + + recordList := &v1alpha2.DNSRecordList{} + err = k8sClient.List(ctx, recordList, &client.MatchingLabels{"kuadrant.io/gateway": gw.GetName()}, &client.ListOptions{Namespace: testNamespace}) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(recordList.Items).To(BeEmpty()) + }, TestTimeoutMedium, time.Second).Should(Succeed()) + } + if mz != nil { + err := k8sClient.Delete(ctx, mz, + client.PropagationPolicy(metav1.DeletePropagationForeground)) + Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) + } + if httproute != nil { + err := k8sClient.Delete(ctx, httproute, + client.PropagationPolicy(metav1.DeletePropagationForeground)) + Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) + } + if gw != nil { + err := k8sClient.Delete(ctx, gw, + client.PropagationPolicy(metav1.DeletePropagationForeground)) + Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) + } + }) + + Context("ManagedZone Provider", func() { + + BeforeEach(func(ctx SpecContext) { + By("creating a ManagedZone") + mz = NewManagedZoneBuilder(testID, testNamespace). + WithID(testZoneID). + WithDomainName(testDomainName). + WithProviderSecret(tconfig.DNSProviderSecretName()). + ManagedZone + err := k8sClient.Create(ctx, mz) + Expect(err).ToNot(HaveOccurred()) + }) + + It("makes the hostname resolvable when a dnspolicy and httproute are attached", func(ctx SpecContext) { + + By("creating a DNSPolicy with ManagedZone provider") + dnsPolicy = NewDNSPolicyBuilder(testID, testNamespace). + WithTargetGateway(gw.GetName()). + WithProviderManagedZone(mz.GetName()). + WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). + DNSPolicy + err := k8sClient.Create(ctx, dnsPolicy) + Expect(err).ToNot(HaveOccurred()) + + Eventually(func(g Gomega) { + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsPolicy.Status.Conditions).To( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + "Status": Equal(metav1.ConditionTrue), + "Reason": Equal("GatewayDNSEnabled"), + })), + ) + + policyBackRefValue := testNamespace + "/" + dnsPolicy.Name + refs, _ := json.Marshal([]client.ObjectKey{{Name: dnsPolicy.Name, Namespace: testNamespace}}) + policiesBackRefValue := string(refs) + err = k8sClient.Get(ctx, client.ObjectKeyFromObject(gw), gw) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPolicyBackRefAnnotation, policyBackRefValue)) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPoliciesBackRefAnnotation, policiesBackRefValue)) + }, TestTimeoutMedium, time.Second).Should(Succeed()) + + expectedRecordName := fmt.Sprintf("%s-%s", gw.GetName(), "http") + Eventually(func(g Gomega) { + dnsrecord := &v1alpha2.DNSRecord{ + ObjectMeta: metav1.ObjectMeta{ + Name: expectedRecordName, + Namespace: testNamespace, + }, + } + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsrecord), dnsrecord) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsrecord.Status.Conditions).To( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + "Status": Equal(metav1.ConditionTrue), + })), + ) + g.Expect(dnsrecord.Spec.ZoneID).Should(PointTo(Equal(testZoneID))) + g.Expect(dnsrecord.Spec.ProviderRef).Should(Equal(dnsPolicy.Spec.ProviderRef)) + g.Expect(dnsrecord.Spec.Endpoints).Should(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(string(testHostname)), + "Targets": Not(BeEmpty()), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + g.Expect(dnsrecord.Status.Endpoints).Should(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(string(testHostname)), + "Targets": Not(BeEmpty()), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + }, TestTimeoutLong, time.Second, ctx).Should(Succeed()) + + By("ensuring the authoritative nameserver resolves the hostname") + // speed up things by using the authoritative nameserver + authoritativeResolver := ResolverForDomainName(testZoneDomainName) + Eventually(func(ctx SpecContext) bool { + c, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + IPs, err := authoritativeResolver.LookupHost(c, string(testHostname)) + if err != nil { + GinkgoWriter.Printf("[debug] LookupHost error: '%s'\n", err) + } + return err == nil && len(IPs) > 0 + }).WithTimeout(300 * time.Second).WithPolling(10 * time.Second).WithContext(ctx).Should(BeTrue()) + + }) + }) + + Context("Secret Provider", func() { + + It("makes the hostname resolvable when a dnspolicy and httproute are attached", func(ctx SpecContext) { + + By("creating a DNSPolicy with Secret provider") + dnsPolicy = NewDNSPolicyBuilder(testID, testNamespace). + WithTargetGateway(gw.GetName()). + WithProviderSecret(tconfig.DNSProviderSecretName()). + WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). + DNSPolicy + err := k8sClient.Create(ctx, dnsPolicy) + Expect(err).ToNot(HaveOccurred()) + + Eventually(func(g Gomega) { + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsPolicy.Status.Conditions).To( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + "Status": Equal(metav1.ConditionTrue), + "Reason": Equal("GatewayDNSEnabled"), + })), + ) + + policyBackRefValue := testNamespace + "/" + dnsPolicy.Name + refs, _ := json.Marshal([]client.ObjectKey{{Name: dnsPolicy.Name, Namespace: testNamespace}}) + policiesBackRefValue := string(refs) + err = k8sClient.Get(ctx, client.ObjectKeyFromObject(gw), gw) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPolicyBackRefAnnotation, policyBackRefValue)) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPoliciesBackRefAnnotation, policiesBackRefValue)) + }, TestTimeoutLong, time.Second).Should(Succeed()) + + expectedRecordName := fmt.Sprintf("%s-%s", gw.GetName(), "http") + Eventually(func(g Gomega) { + dnsrecord := &v1alpha2.DNSRecord{ + ObjectMeta: metav1.ObjectMeta{ + Name: expectedRecordName, + Namespace: testNamespace, + }, + } + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsrecord), dnsrecord) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsrecord.Status.Conditions).To( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + "Status": Equal(metav1.ConditionTrue), + })), + ) + g.Expect(dnsrecord.Spec.ZoneID).Should(PointTo(Equal(testZoneID))) + g.Expect(dnsrecord.Spec.ProviderRef).Should(Equal(dnsPolicy.Spec.ProviderRef)) + g.Expect(dnsrecord.Spec.Endpoints).Should(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(string(testHostname)), + "Targets": Not(BeEmpty()), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + // We need to wait for the status to be updated otherwise google can leave things behind + g.Expect(dnsrecord.Status.Endpoints).Should(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(string(testHostname)), + "Targets": Not(BeEmpty()), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + }, TestTimeoutLong, time.Second, ctx).Should(Succeed()) + + By("ensuring the authoritative nameserver resolves the hostname") + // speed up things by using the authoritative nameserver + authoritativeResolver := ResolverForDomainName(testZoneDomainName) + Eventually(func(ctx SpecContext) bool { + c, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + IPs, err := authoritativeResolver.LookupHost(c, string(testHostname)) + if err != nil { + GinkgoWriter.Printf("[debug] LookupHost error: '%s'\n", err) + } + return err == nil && len(IPs) > 0 + }).WithTimeout(300 * time.Second).WithPolling(10 * time.Second).WithContext(ctx).Should(BeTrue()) + + }) + }) + + Context("None Provider", func() { + + It("should create dns record with no zone assigned and record should not become ready", func(ctx SpecContext) { + + By("creating a DNSPolicy with None provider") + dnsPolicy = NewDNSPolicyBuilder(testID, testNamespace). + WithTargetGateway(gw.GetName()). + WithProviderNone("external-dns"). + WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). + DNSPolicy + err := k8sClient.Create(ctx, dnsPolicy) + Expect(err).ToNot(HaveOccurred()) + + Eventually(func(g Gomega) { + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsPolicy.Status.Conditions).To( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + "Status": Equal(metav1.ConditionTrue), + "Reason": Equal("GatewayDNSEnabled"), + })), + ) + + policyBackRefValue := testNamespace + "/" + dnsPolicy.Name + refs, _ := json.Marshal([]client.ObjectKey{{Name: dnsPolicy.Name, Namespace: testNamespace}}) + policiesBackRefValue := string(refs) + err = k8sClient.Get(ctx, client.ObjectKeyFromObject(gw), gw) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPolicyBackRefAnnotation, policyBackRefValue)) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPoliciesBackRefAnnotation, policiesBackRefValue)) + }, TestTimeoutLong, time.Second).Should(Succeed()) + + expectedRecordName := fmt.Sprintf("%s-%s", gw.GetName(), "http") + Eventually(func(g Gomega) { + dnsrecord := &v1alpha2.DNSRecord{ + ObjectMeta: metav1.ObjectMeta{ + Name: expectedRecordName, + Namespace: testNamespace, + }, + } + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsrecord), dnsrecord) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsrecord.Status.Conditions).ToNot( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + })), + ) + g.Expect(dnsrecord.Spec.ZoneID).Should(BeNil()) + g.Expect(dnsrecord.Spec.ProviderRef).Should(Equal(dnsPolicy.Spec.ProviderRef)) + g.Expect(dnsrecord.Spec.Endpoints).Should(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(string(testHostname)), + "Targets": Not(BeEmpty()), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + g.Expect(dnsrecord.Status.Endpoints).Should(BeEmpty()) + }, TestTimeoutLong, time.Second, ctx).Should(Succeed()) + + }) + }) + +}) diff --git a/test/e2e/gateway_single_spoke_test.go b/test/e2e/gateway_single_spoke_test.go index fcccb9691..7aeca0234 100644 --- a/test/e2e/gateway_single_spoke_test.go +++ b/test/e2e/gateway_single_spoke_test.go @@ -28,6 +28,7 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" mgcv1alpha1 "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + mgcv1alpha2 "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" . "github.com/Kuadrant/multicluster-gateway-controller/test/util" ) @@ -250,25 +251,28 @@ var _ = Describe("Gateway single target cluster", func() { }) When("a DNSPolicy is attached to the Gateway", func() { - var dnsPolicy *mgcv1alpha1.DNSPolicy + var dnsPolicy *mgcv1alpha2.DNSPolicy BeforeEach(func(ctx SpecContext) { By("creating a DNSPolicy in the hub") - - dnsPolicy = &mgcv1alpha1.DNSPolicy{ + dnsPolicy = &mgcv1alpha2.DNSPolicy{ ObjectMeta: metav1.ObjectMeta{ Name: testID, Namespace: tconfig.HubNamespace(), }, - Spec: mgcv1alpha1.DNSPolicySpec{ + Spec: mgcv1alpha2.DNSPolicySpec{ TargetRef: gatewayapiv1alpha2.PolicyTargetReference{ Group: "gateway.networking.k8s.io", Kind: "Gateway", Name: gatewayapiv1.ObjectName(testID), Namespace: Pointer(gatewayapiv1.Namespace(tconfig.HubNamespace())), }, - RoutingStrategy: v1alpha1.LoadBalancedRoutingStrategy, + RoutingStrategy: mgcv1alpha2.LoadBalancedRoutingStrategy, + ProviderRef: mgcv1alpha2.ProviderRef{ + Name: tconfig.DNSProviderSecretName(), + Kind: mgcv1alpha2.ProviderKindSecret, + }, }, } err := tconfig.HubClient().Create(ctx, dnsPolicy) @@ -304,7 +308,7 @@ var _ = Describe("Gateway single target cluster", func() { By("waiting for the DNSRecord to be created and ready in the Hub") { Eventually(func(g Gomega, ctx context.Context) { - dnsrecord := &mgcv1alpha1.DNSRecord{ObjectMeta: metav1.ObjectMeta{ + dnsrecord := &mgcv1alpha2.DNSRecord{ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("%s-%s", gw.Name, "https"), Namespace: gw.Namespace, }} diff --git a/test/e2e/suite_test.go b/test/e2e/suite_test.go index d99ecf00e..9546a9052 100644 --- a/test/e2e/suite_test.go +++ b/test/e2e/suite_test.go @@ -24,6 +24,14 @@ var ( testSuiteID string ) +const ( + TestTimeoutMedium = time.Second * 10 + TestTimeoutLong = time.Second * 30 + + DNSPoliciesBackRefAnnotation = "kuadrant.io/dnspolicies" + DNSPolicyBackRefAnnotation = "kuadrant.io/dnspolicy" +) + func TestAPIs(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "E2E Tests Suite") diff --git a/test/gateway_integration/suite_test.go b/test/gateway_integration/suite_test.go index 7e2d30b21..6e684cd9c 100644 --- a/test/gateway_integration/suite_test.go +++ b/test/gateway_integration/suite_test.go @@ -38,8 +38,8 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/gateway" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/placement" //+kubebuilder:scaffold:imports ) @@ -48,15 +48,12 @@ import ( // http://onsi.github.io/ginkgo/ to learn more about Ginkgo. var ( - cfg *rest.Config - k8sClient client.Client - testEnv *envtest.Environment - ctx context.Context - cancel context.CancelFunc - logger logr.Logger - providerFactory = func(ctx context.Context, managedZone *v1alpha1.ManagedZone) (dns.Provider, error) { - return &dns.FakeProvider{}, nil - } + cfg *rest.Config + k8sClient client.Client + testEnv *envtest.Environment + ctx context.Context + cancel context.CancelFunc + logger logr.Logger ) func testClient() client.Client { return k8sClient } @@ -100,6 +97,9 @@ var _ = BeforeSuite(func() { err = v1alpha1.AddToScheme(scheme.Scheme) Expect(err).NotTo(HaveOccurred()) + err = v1alpha2.AddToScheme(scheme.Scheme) + Expect(err).NotTo(HaveOccurred()) + err = gatewayapiv1.AddToScheme(scheme.Scheme) Expect(err).NotTo(HaveOccurred()) diff --git a/test/policy_integration/dnspolicy_controller_health_checks_test.go b/test/policy_integration/dnspolicy_controller_health_checks_test.go index 322e6a23f..8de010a41 100644 --- a/test/policy_integration/dnspolicy_controller_health_checks_test.go +++ b/test/policy_integration/dnspolicy_controller_health_checks_test.go @@ -18,6 +18,7 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" @@ -26,11 +27,11 @@ import ( var _ = Describe("DNSPolicy Health Checks", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha1.ManagedZone + var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway - var dnsPolicy *v1alpha1.DNSPolicy + var dnsPolicy *v1alpha2.DNSPolicy var lbHash, recordName, wildcardRecordName string BeforeEach(func() { @@ -39,7 +40,13 @@ var _ = Describe("DNSPolicy Health Checks", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace, "example.com").ManagedZone + managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). + WithID("1234"). + WithDomainName("example.com"). + WithDescription("example.com"). + WithProviderSecret("secretname"). + ManagedZone + Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) gateway = testutil.NewGatewayBuilder(TestGatewayName, gatewayClass.Name, testNamespace). @@ -103,8 +110,9 @@ var _ = Describe("DNSPolicy Health Checks", func() { return k8sClient.Status().Update(ctx, gateway) }, TestTimeoutMedium, TestRetryIntervalMedium).ShouldNot(HaveOccurred()) - dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace) - dnsPolicyBuilder.WithTargetGateway(TestGatewayName) + dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). + WithProviderManagedZone(managedZone.Name). + WithTargetGateway(TestGatewayName) lbHash = dns.ToBase36hash(fmt.Sprintf("%s-%s", gateway.Name, gateway.Namespace)) recordName = fmt.Sprintf("%s-%s", TestGatewayName, TestListenerNameOne) @@ -136,7 +144,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { Context("loadbalanced routing strategy", func() { BeforeEach(func() { - dnsPolicyBuilder.WithRoutingStrategy(v1alpha1.LoadBalancedRoutingStrategy) + dnsPolicyBuilder.WithRoutingStrategy(v1alpha2.LoadBalancedRoutingStrategy) }) Context("with health checks", func() { @@ -155,7 +163,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { It("should create dns records", func() { Eventually(func(g Gomega, ctx context.Context) { - recordList := &v1alpha1.DNSRecordList{} + recordList := &v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) @@ -164,15 +172,17 @@ var _ = Describe("DNSPolicy Health Checks", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), - "Endpoints": HaveLen(6), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), + "Endpoints": HaveLen(6), }), }), MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), - "Endpoints": HaveLen(6), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), + "Endpoints": HaveLen(6), }), }), )) @@ -194,7 +204,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { Context("all unhealthy probes", func() { It("should publish all dns records endpoints", func() { - expectedEndpoints := []*v1alpha1.Endpoint{ + expectedEndpoints := []*v1alpha2.Endpoint{ { DNSName: "2w705o.lb-" + lbHash + ".test.example.com", Targets: []string{ @@ -221,7 +231,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { RecordType: "CNAME", SetIdentifier: "2w705o.lb-" + lbHash + ".test.example.com", RecordTTL: 60, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "weight", Value: "120", @@ -237,7 +247,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { SetIdentifier: "s07c46.lb-" + lbHash + ".test.example.com", RecordTTL: 60, Labels: nil, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "weight", Value: "120", @@ -252,7 +262,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { RecordType: "CNAME", SetIdentifier: "default", RecordTTL: 300, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "geo-code", Value: "*", @@ -301,7 +311,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { return nil }, TestTimeoutMedium, TestRetryIntervalMedium).Should(BeNil()) } - createdDNSRecord := &v1alpha1.DNSRecord{} + createdDNSRecord := &v1alpha2.DNSRecord{} Eventually(func() error { err := k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, createdDNSRecord) @@ -320,7 +330,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { Context("some unhealthy probes", func() { It("should publish expected endpoints", func() { - expectedEndpoints := []*v1alpha1.Endpoint{ + expectedEndpoints := []*v1alpha2.Endpoint{ { DNSName: "2w705o.lb-" + lbHash + ".test.example.com", Targets: []string{ @@ -347,7 +357,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { RecordType: "CNAME", SetIdentifier: "2w705o.lb-" + lbHash + ".test.example.com", RecordTTL: 60, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "weight", Value: "120", @@ -363,7 +373,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { SetIdentifier: "s07c46.lb-" + lbHash + ".test.example.com", RecordTTL: 60, Labels: nil, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "weight", Value: "120", @@ -378,7 +388,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { RecordType: "CNAME", SetIdentifier: "default", RecordTTL: 300, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "geo-code", Value: "*", @@ -425,7 +435,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { }, TestTimeoutLong, TestRetryIntervalMedium).Should(BeNil()) // after that verify that in time the endpoints are 5 in the dnsrecord - createdDNSRecord := &v1alpha1.DNSRecord{} + createdDNSRecord := &v1alpha2.DNSRecord{} Eventually(func() error { err := k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, createdDNSRecord) if err != nil && k8serrors.IsNotFound(err) { @@ -440,7 +450,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { Context("some unhealthy endpoints for other listener", func() { It("should publish expected endpoints", func() { - expectedEndpoints := []*v1alpha1.Endpoint{ + expectedEndpoints := []*v1alpha2.Endpoint{ { DNSName: "2w705o.lb-" + lbHash + ".test.example.com", Targets: []string{ @@ -467,7 +477,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { RecordType: "CNAME", SetIdentifier: "2w705o.lb-" + lbHash + ".test.example.com", RecordTTL: 60, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "weight", Value: "120", @@ -483,7 +493,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { SetIdentifier: "s07c46.lb-" + lbHash + ".test.example.com", RecordTTL: 60, Labels: nil, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "weight", Value: "120", @@ -498,7 +508,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { RecordType: "CNAME", SetIdentifier: "default", RecordTTL: 300, - ProviderSpecific: v1alpha1.ProviderSpecific{ + ProviderSpecific: v1alpha2.ProviderSpecific{ { Name: "geo-code", Value: "*", @@ -562,7 +572,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { }, TestTimeoutLong, TestRetryIntervalMedium).Should(BeNil()) // after that verify that in time the endpoints are 5 in the dnsrecord - createdDNSRecord := &v1alpha1.DNSRecord{} + createdDNSRecord := &v1alpha2.DNSRecord{} Eventually(func() error { err := k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, createdDNSRecord) if err != nil && k8serrors.IsNotFound(err) { diff --git a/test/policy_integration/dnspolicy_controller_multi_cluster_test.go b/test/policy_integration/dnspolicy_controller_multi_cluster_test.go index 2dd61d3d5..7fb2f2ce4 100644 --- a/test/policy_integration/dnspolicy_controller_multi_cluster_test.go +++ b/test/policy_integration/dnspolicy_controller_multi_cluster_test.go @@ -16,7 +16,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" @@ -25,11 +25,11 @@ import ( var _ = Describe("DNSPolicy Multi Cluster", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha1.ManagedZone + var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway - var dnsPolicy *v1alpha1.DNSPolicy + var dnsPolicy *v1alpha2.DNSPolicy var lbHash, recordName, wildcardRecordName string BeforeEach(func() { @@ -38,7 +38,12 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace, "example.com").ManagedZone + managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). + WithID("1234"). + WithDomainName("example.com"). + WithDescription("example.com"). + WithProviderSecret("secretname"). + ManagedZone Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) gateway = testutil.NewGatewayBuilder(TestGatewayName, gatewayClass.Name, testNamespace). @@ -102,8 +107,9 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { return k8sClient.Status().Update(ctx, gateway) }, TestTimeoutMedium, TestRetryIntervalMedium).ShouldNot(HaveOccurred()) - dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace) - dnsPolicyBuilder.WithTargetGateway(TestGatewayName) + dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). + WithProviderManagedZone(managedZone.Name). + WithTargetGateway(TestGatewayName) lbHash = dns.ToBase36hash(fmt.Sprintf("%s-%s", gateway.Name, gateway.Namespace)) recordName = fmt.Sprintf("%s-%s", TestGatewayName, TestListenerNameOne) @@ -133,14 +139,14 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { Context("simple routing strategy", func() { BeforeEach(func() { - dnsPolicyBuilder.WithRoutingStrategy(v1alpha1.SimpleRoutingStrategy) + dnsPolicyBuilder.WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy) dnsPolicy = dnsPolicyBuilder.DNSPolicy Expect(k8sClient.Create(ctx, dnsPolicy)).To(Succeed()) }) It("should create dns records", func() { Eventually(func(g Gomega, ctx context.Context) { - recordList := &v1alpha1.DNSRecordList{} + recordList := &v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) @@ -149,14 +155,15 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostOne), "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), ), }), @@ -164,14 +171,15 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostWildcard), "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), ), }), @@ -185,7 +193,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { Context("loadbalanced routing strategy", func() { BeforeEach(func() { - dnsPolicyBuilder.WithRoutingStrategy(v1alpha1.LoadBalancedRoutingStrategy) + dnsPolicyBuilder.WithRoutingStrategy(v1alpha2.LoadBalancedRoutingStrategy) }) Context("weighted", func() { @@ -198,7 +206,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { It("should create dns records", func() { Eventually(func(g Gomega, ctx context.Context) { - recordList := &v1alpha1.DNSRecordList{} + recordList := &v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) @@ -207,52 +215,53 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("2w705o.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf(TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("default.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("2w705o.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("2w705o.lb-" + lbHash + ".test.example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("default.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("s07c46.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("s07c46.lb-" + lbHash + ".test.example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("s07c46.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf(TestIPAddressOne), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("default.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostOne), "Targets": ConsistOf("lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), @@ -260,52 +269,53 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("2w705o.lb-" + lbHash + ".example.com"), "Targets": ConsistOf(TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("default.lb-" + lbHash + ".example.com"), "Targets": ConsistOf("2w705o.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("2w705o.lb-" + lbHash + ".example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("default.lb-" + lbHash + ".example.com"), "Targets": ConsistOf("s07c46.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("s07c46.lb-" + lbHash + ".example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("s07c46.lb-" + lbHash + ".example.com"), "Targets": ConsistOf(TestIPAddressOne), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".example.com"), "Targets": ConsistOf("default.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostWildcard), "Targets": ConsistOf("lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), @@ -328,7 +338,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { It("should create dns records", func() { Eventually(func(g Gomega, ctx context.Context) { - recordList := &v1alpha1.DNSRecordList{} + recordList := &v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) @@ -337,60 +347,61 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("2w705o.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf(TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("ie.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("2w705o.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("2w705o.lb-" + lbHash + ".test.example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("ie.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("s07c46.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("s07c46.lb-" + lbHash + ".test.example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("s07c46.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf(TestIPAddressOne), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("IE"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostOne), "Targets": ConsistOf("lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), @@ -398,60 +409,61 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("2w705o.lb-" + lbHash + ".example.com"), "Targets": ConsistOf(TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("ie.lb-" + lbHash + ".example.com"), "Targets": ConsistOf("2w705o.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("2w705o.lb-" + lbHash + ".example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("ie.lb-" + lbHash + ".example.com"), "Targets": ConsistOf("s07c46.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("s07c46.lb-" + lbHash + ".example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("s07c46.lb-" + lbHash + ".example.com"), "Targets": ConsistOf(TestIPAddressOne), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("IE"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostWildcard), "Targets": ConsistOf("lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), diff --git a/test/policy_integration/dnspolicy_controller_single_cluster_test.go b/test/policy_integration/dnspolicy_controller_single_cluster_test.go index be0a00c17..c137269d3 100644 --- a/test/policy_integration/dnspolicy_controller_single_cluster_test.go +++ b/test/policy_integration/dnspolicy_controller_single_cluster_test.go @@ -14,7 +14,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" ) @@ -22,11 +22,11 @@ import ( var _ = Describe("DNSPolicy Single Cluster", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha1.ManagedZone + var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway - var dnsPolicy *v1alpha1.DNSPolicy + var dnsPolicy *v1alpha2.DNSPolicy var lbHash, recordName, wildcardRecordName string BeforeEach(func() { @@ -35,7 +35,12 @@ var _ = Describe("DNSPolicy Single Cluster", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace, "example.com").ManagedZone + managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). + WithID("1234"). + WithDomainName("example.com"). + WithDescription("example.com"). + WithProviderSecret("secretname"). + ManagedZone Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) gateway = testutil.NewGatewayBuilder(TestGatewayName, gatewayClass.Name, testNamespace). @@ -73,8 +78,9 @@ var _ = Describe("DNSPolicy Single Cluster", func() { return k8sClient.Status().Update(ctx, gateway) }, TestTimeoutMedium, TestRetryIntervalMedium).Should(Succeed()) - dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace) - dnsPolicyBuilder.WithTargetGateway(TestGatewayName) + dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). + WithProviderManagedZone(managedZone.Name). + WithTargetGateway(TestGatewayName) lbHash = dns.ToBase36hash(fmt.Sprintf("%s-%s", gateway.Name, gateway.Namespace)) recordName = fmt.Sprintf("%s-%s", TestGatewayName, TestListenerNameOne) @@ -104,14 +110,14 @@ var _ = Describe("DNSPolicy Single Cluster", func() { Context("simple routing strategy", func() { BeforeEach(func() { - dnsPolicyBuilder.WithRoutingStrategy(v1alpha1.SimpleRoutingStrategy) + dnsPolicyBuilder.WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy) dnsPolicy = dnsPolicyBuilder.DNSPolicy Expect(k8sClient.Create(ctx, dnsPolicy)).To(Succeed()) }) It("should create dns records", func() { Eventually(func(g Gomega, ctx context.Context) { - recordList := &v1alpha1.DNSRecordList{} + recordList := &v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) @@ -120,14 +126,15 @@ var _ = Describe("DNSPolicy Single Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostOne), "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), ), }), @@ -135,14 +142,15 @@ var _ = Describe("DNSPolicy Single Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostWildcard), "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), ), }), @@ -156,14 +164,14 @@ var _ = Describe("DNSPolicy Single Cluster", func() { Context("loadbalanced routing strategy", func() { BeforeEach(func() { - dnsPolicyBuilder.WithRoutingStrategy(v1alpha1.LoadBalancedRoutingStrategy) + dnsPolicyBuilder.WithRoutingStrategy(v1alpha2.LoadBalancedRoutingStrategy) dnsPolicy = dnsPolicyBuilder.DNSPolicy Expect(k8sClient.Create(ctx, dnsPolicy)).To(Succeed()) }) It("should create dns records", func() { Eventually(func(g Gomega, ctx context.Context) { - recordList := &v1alpha1.DNSRecordList{} + recordList := &v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) @@ -172,37 +180,38 @@ var _ = Describe("DNSPolicy Single Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("19sc9b.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf(TestIPAddressOne, TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("default.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("19sc9b.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("19sc9b.lb-" + lbHash + ".test.example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("default.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostOne), "Targets": ConsistOf("lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), @@ -210,37 +219,38 @@ var _ = Describe("DNSPolicy Single Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": Equal(managedZone.Spec.ID), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ContainElements( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("19sc9b.lb-" + lbHash + ".example.com"), "Targets": ConsistOf(TestIPAddressOne, TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("default.lb-" + lbHash + ".example.com"), "Targets": ConsistOf("19sc9b.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("19sc9b.lb-" + lbHash + ".example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "120"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "120"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".example.com"), "Targets": ConsistOf("default.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostWildcard), "Targets": ConsistOf("lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), diff --git a/test/policy_integration/dnspolicy_controller_test.go b/test/policy_integration/dnspolicy_controller_test.go index 8755a41cd..f5c31d6a4 100644 --- a/test/policy_integration/dnspolicy_controller_test.go +++ b/test/policy_integration/dnspolicy_controller_test.go @@ -19,6 +19,7 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnspolicy" "github.com/Kuadrant/multicluster-gateway-controller/pkg/utils" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" @@ -27,11 +28,11 @@ import ( var _ = Describe("DNSPolicy", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha1.ManagedZone + var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway - var dnsPolicy *v1alpha1.DNSPolicy + var dnsPolicy *v1alpha2.DNSPolicy var recordName, wildcardRecordName string BeforeEach(func() { @@ -40,10 +41,16 @@ var _ = Describe("DNSPolicy", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace, "example.com").ManagedZone + managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). + WithID("1234"). + WithDomainName("example.com"). + WithDescription("example.com"). + WithProviderSecret("secretname"). + ManagedZone Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) - dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace) + dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). + WithProviderManagedZone(managedZone.Name) }) AfterEach(func() { @@ -71,7 +78,7 @@ var _ = Describe("DNSPolicy", func() { BeforeEach(func() { dnsPolicy = dnsPolicyBuilder. WithTargetGateway("test-gateway"). - WithRoutingStrategy(v1alpha1.SimpleRoutingStrategy). + WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). DNSPolicy Expect(k8sClient.Create(ctx, dnsPolicy)).To(Succeed()) }) @@ -173,8 +180,8 @@ var _ = Describe("DNSPolicy", func() { }, TestTimeoutMedium, TestRetryIntervalMedium).Should(Succeed()) // expect no dns records - Consistently(func() []v1alpha1.DNSRecord { - dnsRecords := v1alpha1.DNSRecordList{} + Consistently(func() []v1alpha2.DNSRecord { + dnsRecords := v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, &dnsRecords, client.InNamespace(dnsPolicy.GetNamespace())) Expect(err).ToNot(HaveOccurred()) return dnsRecords.Items @@ -204,7 +211,7 @@ var _ = Describe("DNSPolicy", func() { Gateway dnsPolicy = dnsPolicyBuilder. WithTargetGateway(testGatewayName). - WithRoutingStrategy(v1alpha1.SimpleRoutingStrategy). + WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). DNSPolicy Expect(k8sClient.Create(ctx, gateway)).To(Succeed()) @@ -212,8 +219,8 @@ var _ = Describe("DNSPolicy", func() { }) It("should not create a dns record", func() { - Consistently(func() []v1alpha1.DNSRecord { // DNS record exists - dnsRecords := v1alpha1.DNSRecordList{} + Consistently(func() []v1alpha2.DNSRecord { // DNS record exists + dnsRecords := v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, &dnsRecords, client.InNamespace(dnsPolicy.GetNamespace())) Expect(err).ToNot(HaveOccurred()) return dnsRecords.Items @@ -257,7 +264,7 @@ var _ = Describe("DNSPolicy", func() { WithHTTPListener(TestListenerNameWildcard, TestHostWildcard). Gateway dnsPolicy = dnsPolicyBuilder.WithTargetGateway(TestGatewayName). - WithRoutingStrategy(v1alpha1.SimpleRoutingStrategy). + WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). DNSPolicy Expect(k8sClient.Create(ctx, gateway)).To(Succeed()) @@ -380,7 +387,7 @@ var _ = Describe("DNSPolicy", func() { patch := client.MergeFrom(existingGateway.DeepCopy()) existingGateway.Spec.Listeners = newListeners - rec := &v1alpha1.DNSRecord{} + rec := &v1alpha2.DNSRecord{} if err := k8sClient.Patch(ctx, existingGateway, patch); err != nil { return err } @@ -435,7 +442,7 @@ var _ = Describe("DNSPolicy", func() { It("should remove dns record reference on policy deletion even if gateway is removed", func() { Eventually(func() error { // DNS record exists - return k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, &v1alpha1.DNSRecord{}) + return k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, &v1alpha2.DNSRecord{}) }, TestTimeoutMedium, TestRetryIntervalMedium).Should(Succeed()) err := k8sClient.Delete(ctx, gateway) @@ -445,7 +452,7 @@ var _ = Describe("DNSPolicy", func() { Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) Eventually(func() error { // DNS record removed - return k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, &v1alpha1.DNSRecord{}) + return k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, &v1alpha2.DNSRecord{}) }, TestTimeoutMedium, TestRetryIntervalMedium).Should(MatchError(ContainSubstring("not found"))) }) diff --git a/test/policy_integration/managedzone_controller_test.go b/test/policy_integration/managedzone_controller_test.go index e8f346e4f..343a3651b 100644 --- a/test/policy_integration/managedzone_controller_test.go +++ b/test/policy_integration/managedzone_controller_test.go @@ -23,26 +23,27 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" //+kubebuilder:scaffold:imports ) var _ = Describe("ManagedZoneReconciler", func() { Context("testing ManagedZone controller", func() { - var managedZone *v1alpha1.ManagedZone + var managedZone *v1alpha2.ManagedZone BeforeEach(func() { - managedZone = &v1alpha1.ManagedZone{ + managedZone = &v1alpha2.ManagedZone{ ObjectMeta: metav1.ObjectMeta{ Name: testutil.Domain, Namespace: defaultNS, }, - Spec: v1alpha1.ManagedZoneSpec{ - ID: testutil.Domain, + Spec: v1alpha2.ManagedZoneSpec{ + ID: testutil.Pointer(testutil.Domain), DomainName: testutil.Domain, - SecretRef: &v1alpha1.SecretRef{ + ProviderRef: v1alpha2.ProviderRef{ Name: providerCredential, + Kind: v1alpha2.ProviderKindSecret, }, }, } @@ -50,7 +51,7 @@ var _ = Describe("ManagedZoneReconciler", func() { AfterEach(func() { // Clean up managedZones - mzList := &v1alpha1.ManagedZoneList{} + mzList := &v1alpha2.ManagedZoneList{} err := k8sClient.List(ctx, mzList, client.InNamespace(defaultNS)) Expect(err).NotTo(HaveOccurred()) for _, mz := range mzList.Items { @@ -62,7 +63,7 @@ var _ = Describe("ManagedZoneReconciler", func() { It("should accept a managed zone for this controller and allow deletion", func() { Expect(k8sClient.Create(ctx, managedZone)).To(BeNil()) - createdMZ := &v1alpha1.ManagedZone{} + createdMZ := &v1alpha2.ManagedZone{} Eventually(func() error { return k8sClient.Get(ctx, client.ObjectKey{Namespace: managedZone.Namespace, Name: managedZone.Name}, createdMZ) @@ -80,13 +81,13 @@ var _ = Describe("ManagedZoneReconciler", func() { }) It("should reject a managed zone with an invalid domain name", func() { - invalidDomainNameManagedZone := &v1alpha1.ManagedZone{ + invalidDomainNameManagedZone := &v1alpha2.ManagedZone{ ObjectMeta: metav1.ObjectMeta{ Name: "invalid_domain", Namespace: defaultNS, }, - Spec: v1alpha1.ManagedZoneSpec{ - ID: "invalid_domain", + Spec: v1alpha2.ManagedZoneSpec{ + ID: testutil.Pointer("invalid_domain"), DomainName: "invalid_domain", }, } diff --git a/test/policy_integration/suite_test.go b/test/policy_integration/suite_test.go index 0b48c4685..a362afae7 100644 --- a/test/policy_integration/suite_test.go +++ b/test/policy_integration/suite_test.go @@ -42,6 +42,7 @@ import ( "github.com/kuadrant/kuadrant-operator/pkg/reconcilers" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnshealthcheckprobe" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnspolicy" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/managedzone" @@ -61,7 +62,7 @@ var ( ctx context.Context cancel context.CancelFunc logger logr.Logger - providerFactory = func(ctx context.Context, managedZone *v1alpha1.ManagedZone) (dns.Provider, error) { + providerFactory = func(ctx context.Context, providerAccessor v1alpha2.ProviderAccessor) (dns.Provider, error) { return &dns.FakeProvider{}, nil } ) @@ -108,6 +109,9 @@ var _ = BeforeSuite(func() { err = v1alpha1.AddToScheme(scheme.Scheme) Expect(err).NotTo(HaveOccurred()) + err = v1alpha2.AddToScheme(scheme.Scheme) + Expect(err).NotTo(HaveOccurred()) + err = gatewayapiv1.AddToScheme(scheme.Scheme) Expect(err).NotTo(HaveOccurred()) diff --git a/test/util/helper.go b/test/util/helper.go index cf95380bc..7e4b8af1b 100644 --- a/test/util/helper.go +++ b/test/util/helper.go @@ -18,6 +18,7 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" ) const ( @@ -124,6 +125,7 @@ func GetValidTestScheme() *runtime.Scheme { _ = gatewayapiv1.AddToScheme(scheme) _ = corev1.AddToScheme(scheme) _ = v1alpha1.AddToScheme(scheme) + _ = v1alpha2.AddToScheme(scheme) _ = certman.AddToScheme(scheme) return scheme } diff --git a/test/util/suite_config.go b/test/util/suite_config.go index 371bf1607..4caf0b479 100644 --- a/test/util/suite_config.go +++ b/test/util/suite_config.go @@ -25,6 +25,7 @@ import ( gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" mgcv1alpha1 "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + mgcv1alpha2 "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" ) const ( @@ -122,6 +123,10 @@ func (cfg *SuiteConfig) Build() error { if err != nil { return err } + err = mgcv1alpha2.AddToScheme(scheme.Scheme) + if err != nil { + return err + } err = certmanv1.AddToScheme(scheme.Scheme) if err != nil { return err diff --git a/test/util/test_dnspolicy_types.go b/test/util/test_dnspolicy_types.go index 958def82f..03da37ec0 100644 --- a/test/util/test_dnspolicy_types.go +++ b/test/util/test_dnspolicy_types.go @@ -8,21 +8,22 @@ import ( gatewayapiv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" ) // DNSPolicyBuilder wrapper for DNSPolicy builder helper type DNSPolicyBuilder struct { - *v1alpha1.DNSPolicy + *v1alpha2.DNSPolicy } func NewDNSPolicyBuilder(name, ns string) *DNSPolicyBuilder { return &DNSPolicyBuilder{ - &v1alpha1.DNSPolicy{ + &v1alpha2.DNSPolicy{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: ns, }, - Spec: v1alpha1.DNSPolicySpec{}, + Spec: v1alpha2.DNSPolicySpec{}, }, } } @@ -32,17 +33,22 @@ func (t *DNSPolicyBuilder) WithTargetRef(targetRef gatewayapiv1alpha2.PolicyTarg return t } -func (t *DNSPolicyBuilder) WithHealthCheck(healthCheck v1alpha1.HealthCheckSpec) *DNSPolicyBuilder { +func (t *DNSPolicyBuilder) WithProviderRef(providerRef v1alpha2.ProviderRef) *DNSPolicyBuilder { + t.Spec.ProviderRef = providerRef + return t +} + +func (t *DNSPolicyBuilder) WithHealthCheck(healthCheck v1alpha2.HealthCheckSpec) *DNSPolicyBuilder { t.Spec.HealthCheck = &healthCheck return t } -func (t *DNSPolicyBuilder) WithLoadBalancing(loadBalancing v1alpha1.LoadBalancingSpec) *DNSPolicyBuilder { +func (t *DNSPolicyBuilder) WithLoadBalancing(loadBalancing v1alpha2.LoadBalancingSpec) *DNSPolicyBuilder { t.Spec.LoadBalancing = &loadBalancing return t } -func (t *DNSPolicyBuilder) WithRoutingStrategy(strategy v1alpha1.RoutingStrategy) *DNSPolicyBuilder { +func (t *DNSPolicyBuilder) WithRoutingStrategy(strategy v1alpha2.RoutingStrategy) *DNSPolicyBuilder { t.Spec.RoutingStrategy = strategy return t } @@ -59,10 +65,33 @@ func (t *DNSPolicyBuilder) WithTargetGateway(gwName string) *DNSPolicyBuilder { }) } +//ProviderRef + +func (t *DNSPolicyBuilder) WithProviderManagedZone(mzName string) *DNSPolicyBuilder { + return t.WithProviderRef(v1alpha2.ProviderRef{ + Name: mzName, + Kind: v1alpha2.ProviderKindManagedZone, + }) +} + +func (t *DNSPolicyBuilder) WithProviderSecret(secretName string) *DNSPolicyBuilder { + return t.WithProviderRef(v1alpha2.ProviderRef{ + Name: secretName, + Kind: v1alpha2.ProviderKindSecret, + }) +} + +func (t *DNSPolicyBuilder) WithProviderNone(name string) *DNSPolicyBuilder { + return t.WithProviderRef(v1alpha2.ProviderRef{ + Name: name, + Kind: v1alpha2.ProviderKindNone, + }) +} + //HealthCheck func (t *DNSPolicyBuilder) WithHealthCheckFor(endpoint string, port *int, protocol v1alpha1.HealthProtocol, failureThreshold *int) *DNSPolicyBuilder { - return t.WithHealthCheck(v1alpha1.HealthCheckSpec{ + return t.WithHealthCheck(v1alpha2.HealthCheckSpec{ Endpoint: endpoint, Port: port, Protocol: &protocol, @@ -76,55 +105,89 @@ func (t *DNSPolicyBuilder) WithHealthCheckFor(endpoint string, port *int, protoc //LoadBalancing -func (t *DNSPolicyBuilder) WithLoadBalancingWeighted(lbWeighted v1alpha1.LoadBalancingWeighted) *DNSPolicyBuilder { +func (t *DNSPolicyBuilder) WithLoadBalancingWeighted(lbWeighted v1alpha2.LoadBalancingWeighted) *DNSPolicyBuilder { if t.Spec.LoadBalancing == nil { - t.Spec.LoadBalancing = &v1alpha1.LoadBalancingSpec{} + t.Spec.LoadBalancing = &v1alpha2.LoadBalancingSpec{} } t.Spec.LoadBalancing.Weighted = &lbWeighted return t } -func (t *DNSPolicyBuilder) WithLoadBalancingGeo(lbGeo v1alpha1.LoadBalancingGeo) *DNSPolicyBuilder { +func (t *DNSPolicyBuilder) WithLoadBalancingGeo(lbGeo v1alpha2.LoadBalancingGeo) *DNSPolicyBuilder { if t.Spec.LoadBalancing == nil { - t.Spec.LoadBalancing = &v1alpha1.LoadBalancingSpec{} + t.Spec.LoadBalancing = &v1alpha2.LoadBalancingSpec{} } t.Spec.LoadBalancing.Geo = &lbGeo return t } -func (t *DNSPolicyBuilder) WithLoadBalancingWeightedFor(defaultWeight v1alpha1.Weight, custom []*v1alpha1.CustomWeight) *DNSPolicyBuilder { - return t.WithLoadBalancingWeighted(v1alpha1.LoadBalancingWeighted{ +func (t *DNSPolicyBuilder) WithLoadBalancingWeightedFor(defaultWeight v1alpha2.Weight, custom []*v1alpha2.CustomWeight) *DNSPolicyBuilder { + return t.WithLoadBalancingWeighted(v1alpha2.LoadBalancingWeighted{ DefaultWeight: defaultWeight, Custom: custom, }) } func (t *DNSPolicyBuilder) WithLoadBalancingGeoFor(defaultGeo string) *DNSPolicyBuilder { - return t.WithLoadBalancingGeo(v1alpha1.LoadBalancingGeo{ + return t.WithLoadBalancingGeo(v1alpha2.LoadBalancingGeo{ DefaultGeo: defaultGeo, }) } // ManagedZoneBuilder wrapper for ManagedZone builder helper type ManagedZoneBuilder struct { - *v1alpha1.ManagedZone + *v1alpha2.ManagedZone } -func NewManagedZoneBuilder(name, ns, domainName string) *ManagedZoneBuilder { +func NewManagedZoneBuilder(name, ns string) *ManagedZoneBuilder { return &ManagedZoneBuilder{ - &v1alpha1.ManagedZone{ + &v1alpha2.ManagedZone{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: ns, }, - Spec: v1alpha1.ManagedZoneSpec{ - ID: "1234", - DomainName: domainName, - Description: domainName, - SecretRef: &v1alpha1.SecretRef{ - Name: "secretname", - }, - }, + Spec: v1alpha2.ManagedZoneSpec{}, }, } } + +func (t *ManagedZoneBuilder) WithID(id string) *ManagedZoneBuilder { + t.Spec.ID = &id + return t +} + +func (t *ManagedZoneBuilder) WithDomainName(domainName string) *ManagedZoneBuilder { + t.Spec.DomainName = domainName + return t +} + +func (t *ManagedZoneBuilder) WithDescription(description string) *ManagedZoneBuilder { + t.Spec.Description = &description + return t +} + +func (t *ManagedZoneBuilder) WithProviderRef(providerRef v1alpha2.ProviderRef) *ManagedZoneBuilder { + t.Spec.ProviderRef = providerRef + return t +} + +func (t *ManagedZoneBuilder) WithProviderManagedZone(mzName string) *ManagedZoneBuilder { + return t.WithProviderRef(v1alpha2.ProviderRef{ + Name: mzName, + Kind: v1alpha2.ProviderKindManagedZone, + }) +} + +func (t *ManagedZoneBuilder) WithProviderSecret(secretName string) *ManagedZoneBuilder { + return t.WithProviderRef(v1alpha2.ProviderRef{ + Name: secretName, + Kind: v1alpha2.ProviderKindSecret, + }) +} + +func (t *ManagedZoneBuilder) WithProviderNone(secretName string) *ManagedZoneBuilder { + return t.WithProviderRef(v1alpha2.ProviderRef{ + Name: secretName, + Kind: v1alpha2.ProviderKindNone, + }) +} From 389cd073148cbb8032fcf18294f5e3e1aa611b00 Mon Sep 17 00:00:00 2001 From: Michael Nairn Date: Thu, 25 Jan 2024 21:44:53 +0000 Subject: [PATCH 2/4] Remove ManagedZone API --- Makefile | 2 +- PROJECT | 8 - bundle/manifests/kuadrant.io_dnspolicies.yaml | 7 - bundle/manifests/kuadrant.io_dnsrecords.yaml | 7 - .../manifests/kuadrant.io_managedzones.yaml | 202 --------- ...eway-controller.clusterserviceversion.yaml | 31 +- cmd/policy_controller/main.go | 10 - .../controller/aws/kustomization.yaml | 32 -- .../controller/aws/managed_zone.yaml | 10 - .../controller/gcp/kustomization.yaml | 34 -- .../controller/gcp/managed_zone.yaml | 10 - ...eway-controller.clusterserviceversion.yaml | 8 +- .../crd/bases/kuadrant.io_dnspolicies.yaml | 7 - .../crd/bases/kuadrant.io_dnsrecords.yaml | 7 - .../crd/bases/kuadrant.io_managedzones.yaml | 197 --------- .../policy-controller/crd/kustomization.yaml | 1 - .../rbac/managedzone_editor_role.yaml | 24 -- .../rbac/managedzone_viewer_role.yaml | 20 - config/policy-controller/rbac/role.yaml | 26 -- .../kuadrant.io_v1alpha1_managedzone.yaml | 10 - .../kuadrant.io_v1alpha2_dnsrecord-geo.yaml | 3 +- .../kuadrant.io_v1alpha2_dnsrecord-ns.yaml | 3 +- .../kuadrant.io_v1alpha2_dnsrecord.yaml | 3 +- config/samples/kustomization.yaml | 1 - pkg/apis/v1alpha2/managedzone_types.go | 104 ----- pkg/apis/v1alpha2/shared_types.go | 11 - pkg/apis/v1alpha2/zz_generated.deepcopy.go | 138 ------ pkg/controllers/dnspolicy/dns_helper.go | 2 +- .../dnspolicy/dnspolicy_dnsrecords.go | 56 +-- .../dnsrecord/dnsrecord_controller.go | 14 +- .../managedzone/managedzone_controller.go | 354 ---------------- pkg/dns/aws/dns.go | 72 ---- pkg/dns/dns.go | 28 +- pkg/dns/dnsprovider/dnsProvider.go | 24 +- pkg/dns/google/google.go | 63 --- pkg/dns/google/google_test.go | 119 ------ test/e2e/dnspolicy_istio_gateway_test.go | 222 ++++++++++ .../dnspolicy_providers_istio_gateway_test.go | 394 ------------------ test/e2e/gateway_single_spoke_test.go | 1 - ...dnspolicy_controller_health_checks_test.go | 20 +- ...dnspolicy_controller_multi_cluster_test.go | 89 ++-- ...nspolicy_controller_single_cluster_test.go | 84 ++-- .../dnspolicy_controller_test.go | 15 +- test/policy_integration/helper_test.go | 5 +- .../managedzone_controller_test.go | 99 ----- test/policy_integration/suite_test.go | 18 +- test/util/test_dnspolicy_types.go | 73 ---- 47 files changed, 337 insertions(+), 2331 deletions(-) delete mode 100644 bundle/manifests/kuadrant.io_managedzones.yaml delete mode 100644 config/local-setup/controller/aws/managed_zone.yaml delete mode 100644 config/local-setup/controller/gcp/managed_zone.yaml delete mode 100644 config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml delete mode 100644 config/policy-controller/rbac/managedzone_editor_role.yaml delete mode 100644 config/policy-controller/rbac/managedzone_viewer_role.yaml delete mode 100644 config/samples/kuadrant.io_v1alpha1_managedzone.yaml delete mode 100644 pkg/apis/v1alpha2/managedzone_types.go delete mode 100644 pkg/controllers/managedzone/managedzone_controller.go create mode 100644 test/e2e/dnspolicy_istio_gateway_test.go delete mode 100644 test/e2e/dnspolicy_providers_istio_gateway_test.go delete mode 100644 test/policy_integration/managedzone_controller_test.go diff --git a/Makefile b/Makefile index 3d42975e1..589efd779 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ gateway-manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole .PHONY: policy-manifests policy-manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects. - $(CONTROLLER_GEN) rbac:roleName=policy-role paths="./pkg/controllers/dnshealthcheckprobe" paths="./pkg/controllers/dnspolicy" paths="./pkg/controllers/dnsrecord" paths="./pkg/controllers/managedzone" paths="./pkg/controllers/tlspolicy" output:rbac:dir=config/policy-controller/rbac + $(CONTROLLER_GEN) rbac:roleName=policy-role paths="./pkg/controllers/dnshealthcheckprobe" paths="./pkg/controllers/dnspolicy" paths="./pkg/controllers/dnsrecord" paths="./pkg/controllers/tlspolicy" output:rbac:dir=config/policy-controller/rbac $(CONTROLLER_GEN) crd paths="./..." output:crd:artifacts:config=config/policy-controller/crd/bases .PHONY: manifests diff --git a/PROJECT b/PROJECT index 390316b1f..43fd9d61f 100644 --- a/PROJECT +++ b/PROJECT @@ -11,14 +11,6 @@ resources: kind: DNSRecord path: github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha1 version: v1 -- api: - crdVersion: v1 - namespaced: true - controller: true - group: kuadrant.io - kind: ManagedZone - path: github.com/Kuadrant/multicluster-gateway-controller/api/v1alpha1 - version: v1alpha1 - controller: true domain: kuadrant.io group: gateway.networking.k8s.io diff --git a/bundle/manifests/kuadrant.io_dnspolicies.yaml b/bundle/manifests/kuadrant.io_dnspolicies.yaml index 71b80e2f3..fe9d8ab5a 100644 --- a/bundle/manifests/kuadrant.io_dnspolicies.yaml +++ b/bundle/manifests/kuadrant.io_dnspolicies.yaml @@ -158,16 +158,9 @@ spec: type: object providerRef: properties: - kind: - enum: - - None - - Secret - - ManagedZone - type: string name: type: string required: - - kind - name type: object routingStrategy: diff --git a/bundle/manifests/kuadrant.io_dnsrecords.yaml b/bundle/manifests/kuadrant.io_dnsrecords.yaml index cb036a085..8bd5bc4ab 100644 --- a/bundle/manifests/kuadrant.io_dnsrecords.yaml +++ b/bundle/manifests/kuadrant.io_dnsrecords.yaml @@ -87,16 +87,9 @@ spec: type: array providerRef: properties: - kind: - enum: - - None - - Secret - - ManagedZone - type: string name: type: string required: - - kind - name type: object zoneID: diff --git a/bundle/manifests/kuadrant.io_managedzones.yaml b/bundle/manifests/kuadrant.io_managedzones.yaml deleted file mode 100644 index 74e102b95..000000000 --- a/bundle/manifests/kuadrant.io_managedzones.yaml +++ /dev/null @@ -1,202 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.10.0 - creationTimestamp: null - name: managedzones.kuadrant.io -spec: - group: kuadrant.io - names: - kind: ManagedZone - listKind: ManagedZoneList - plural: managedzones - singular: managedzone - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Domain of this Managed Zone - jsonPath: .spec.domainName - name: Domain Name - type: string - - description: The ID assigned by this provider for this zone . - jsonPath: .status.id - name: ID - type: string - - description: Number of records in the provider zone. - jsonPath: .status.recordCount - name: Record Count - type: string - - description: The NameServers assigned by the provider for this zone. - jsonPath: .status.nameServers - name: NameServers - type: string - - description: Managed Zone ready. - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ManagedZone is the Schema for the managedzones API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ManagedZoneSpec defines the desired state of ManagedZone - properties: - description: - description: Description for this ManagedZone - type: string - domainName: - description: Domain name of this ManagedZone - pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ - type: string - id: - description: ID is the provider assigned id of this zone (i.e. route53.HostedZone.ID). - type: string - parentManagedZone: - description: Reference to another managed zone that this managed zone - belongs to. - properties: - name: - description: '`name` is the name of the managed zone. Required' - type: string - required: - - name - type: object - providerRef: - properties: - kind: - enum: - - None - - Secret - - ManagedZone - type: string - name: - type: string - required: - - kind - - name - type: object - required: - - domainName - - providerRef - type: object - status: - description: ManagedZoneStatus defines the observed state of a Zone - properties: - conditions: - description: List of status conditions to indicate the status of a - ManagedZone. Known condition types are `Ready`. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - id: - description: The ID assigned by this provider for this zone (i.e. - route53.HostedZone.ID) - type: string - nameServers: - description: The NameServers assigned by the provider for this zone - (i.e. route53.DelegationSet.NameServers) - items: - type: string - type: array - observedGeneration: - description: observedGeneration is the most recently observed generation - of the ManagedZone. - format: int64 - type: integer - recordCount: - description: The number of records in the provider zone - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null diff --git a/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml b/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml index 63efb780b..f88fcf09b 100644 --- a/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml +++ b/bundle/manifests/multicluster-gateway-controller.clusterserviceversion.yaml @@ -4,7 +4,7 @@ metadata: annotations: alm-examples: '[]' capabilities: Basic Install - createdAt: "2023-12-04T11:02:57Z" + createdAt: "2024-01-25T21:05:01Z" operators.operatorframework.io/builder: operator-sdk-v1.28.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 name: multicluster-gateway-controller.v0.0.0 @@ -22,9 +22,6 @@ spec: - kind: DNSRecord name: dnsrecords.kuadrant.io version: v1alpha2 - - kind: ManagedZone - name: managedzones.kuadrant.io - version: v1alpha2 - kind: TLSPolicy name: tlspolicies.kuadrant.io version: v1alpha1 @@ -450,32 +447,6 @@ spec: - get - patch - update - - apiGroups: - - kuadrant.io - resources: - - managedzones - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - kuadrant.io - resources: - - managedzones/finalizers - verbs: - - update - - apiGroups: - - kuadrant.io - resources: - - managedzones/status - verbs: - - get - - patch - - update - apiGroups: - kuadrant.io resources: diff --git a/cmd/policy_controller/main.go b/cmd/policy_controller/main.go index 7f99d06ed..5549a4eb8 100644 --- a/cmd/policy_controller/main.go +++ b/cmd/policy_controller/main.go @@ -42,7 +42,6 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnshealthcheckprobe" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnspolicy" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnsrecord" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/managedzone" "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/tlspolicy" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns/dnsprovider" "github.com/Kuadrant/multicluster-gateway-controller/pkg/health" @@ -158,15 +157,6 @@ func main() { } //+kubebuilder:scaffold:builder - if err = (&managedzone.ManagedZoneReconciler{ - Client: mgr.GetClient(), - Scheme: mgr.GetScheme(), - DNSProvider: provider.DNSProviderFactory, - }).SetupWithManager(mgr); err != nil { - setupLog.Error(err, "unable to create controller", "controller", "ManagedZone") - os.Exit(1) - } - if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { setupLog.Error(err, "unable to set up health check") os.Exit(1) diff --git a/config/local-setup/controller/aws/kustomization.yaml b/config/local-setup/controller/aws/kustomization.yaml index 361bc1c2d..6aa3b854a 100644 --- a/config/local-setup/controller/aws/kustomization.yaml +++ b/config/local-setup/controller/aws/kustomization.yaml @@ -2,43 +2,11 @@ namespace: multi-cluster-gateways namePrefix: mgc- -resources: - - managed_zone.yaml - generatorOptions: disableNameSuffixHash: true -configMapGenerator: - - name: controller-config - envs: - - ../../../../controller-config.env - secretGenerator: - name: aws-credentials envs: - ../../../../aws-credentials.env type: "kuadrant.io/aws" - -replacements: - - source: - kind: ConfigMap - name: controller-config - version: v1 - fieldPath: data.AWS_DNS_PUBLIC_ZONE_ID - targets: - - select: - kind: ManagedZone - name: mgc-dev-mz-aws - fieldPaths: - - spec.id - - source: - kind: ConfigMap - name: controller-config - version: v1 - fieldPath: data.ZONE_ROOT_DOMAIN - targets: - - select: - kind: ManagedZone - name: mgc-dev-mz-aws - fieldPaths: - - spec.domainName diff --git a/config/local-setup/controller/aws/managed_zone.yaml b/config/local-setup/controller/aws/managed_zone.yaml deleted file mode 100644 index 4e8608ac3..000000000 --- a/config/local-setup/controller/aws/managed_zone.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: kuadrant.io/v1alpha2 -kind: ManagedZone -metadata: - name: dev-mz-aws -spec: - id: DUMMY_ID - domainName: DUMMY_DOMAIN_NAME - description: "Dev Managed Zone" - providerRef: - name: mgc-aws-credentials diff --git a/config/local-setup/controller/gcp/kustomization.yaml b/config/local-setup/controller/gcp/kustomization.yaml index c29c25efc..a6afd14ad 100644 --- a/config/local-setup/controller/gcp/kustomization.yaml +++ b/config/local-setup/controller/gcp/kustomization.yaml @@ -2,45 +2,11 @@ namespace: multi-cluster-gateways namePrefix: mgc- -resources: - - managed_zone.yaml - generatorOptions: disableNameSuffixHash: true -configMapGenerator: -- name: controller-config - envs: - - ../../../../controller-config.env - secretGenerator: - name: gcp-credentials envs: - ../../../../gcp-credentials.env type: "kuadrant.io/gcp" - -replacements: - - source: - kind: ConfigMap - name: controller-config - version: v1 - fieldPath: data.ZONE_NAME - targets: - - select: - kind: ManagedZone - name: mgc-dev-mz-gcp - fieldPaths: - - spec.id - - source: - kind: ConfigMap - name: controller-config - version: v1 - fieldPath: data.ZONE_DNS_NAME - targets: - - select: - kind: ManagedZone - name: mgc-dev-mz-gcp - fieldPaths: - - spec.domainName - - diff --git a/config/local-setup/controller/gcp/managed_zone.yaml b/config/local-setup/controller/gcp/managed_zone.yaml deleted file mode 100644 index 6ddee876b..000000000 --- a/config/local-setup/controller/gcp/managed_zone.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: kuadrant.io/v1alpha2 -kind: ManagedZone -metadata: - name: dev-mz-gcp -spec: - id: DUMMY_ID - domainName: DUMMY_DOMAIN_NAME - description: "Dev Managed Zone" - providerRef: - name: mgc-gcp-credentials diff --git a/config/manifests/bases/multicluster-gateway-controller.clusterserviceversion.yaml b/config/manifests/bases/multicluster-gateway-controller.clusterserviceversion.yaml index 3faa7a029..19aedd37a 100644 --- a/config/manifests/bases/multicluster-gateway-controller.clusterserviceversion.yaml +++ b/config/manifests/bases/multicluster-gateway-controller.clusterserviceversion.yaml @@ -8,13 +8,7 @@ metadata: namespace: placeholder spec: apiservicedefinitions: {} - customresourcedefinitions: - owned: - - description: ManagedZone is the Schema for the managedzones API - displayName: Managed Zone - kind: ManagedZone - name: managedzones.kuadrant.io - version: v1alpha1 + customresourcedefinitions: {} description: multi-cluster gateway controller, manages multi-cluster gateways based on gateway api and policy attachment displayName: Multicluster-gateway-controller diff --git a/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml b/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml index b865b4664..ea89bef3e 100644 --- a/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml +++ b/config/policy-controller/crd/bases/kuadrant.io_dnspolicies.yaml @@ -157,16 +157,9 @@ spec: type: object providerRef: properties: - kind: - enum: - - None - - Secret - - ManagedZone - type: string name: type: string required: - - kind - name type: object routingStrategy: diff --git a/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml b/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml index e49cdeaef..748599f47 100644 --- a/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml +++ b/config/policy-controller/crd/bases/kuadrant.io_dnsrecords.yaml @@ -88,16 +88,9 @@ spec: type: array providerRef: properties: - kind: - enum: - - None - - Secret - - ManagedZone - type: string name: type: string required: - - kind - name type: object zoneID: diff --git a/config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml b/config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml deleted file mode 100644 index e69a37179..000000000 --- a/config/policy-controller/crd/bases/kuadrant.io_managedzones.yaml +++ /dev/null @@ -1,197 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.10.0 - creationTimestamp: null - name: managedzones.kuadrant.io -spec: - group: kuadrant.io - names: - kind: ManagedZone - listKind: ManagedZoneList - plural: managedzones - singular: managedzone - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Domain of this Managed Zone - jsonPath: .spec.domainName - name: Domain Name - type: string - - description: The ID assigned by this provider for this zone . - jsonPath: .status.id - name: ID - type: string - - description: Number of records in the provider zone. - jsonPath: .status.recordCount - name: Record Count - type: string - - description: The NameServers assigned by the provider for this zone. - jsonPath: .status.nameServers - name: NameServers - type: string - - description: Managed Zone ready. - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ManagedZone is the Schema for the managedzones API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ManagedZoneSpec defines the desired state of ManagedZone - properties: - description: - description: Description for this ManagedZone - type: string - domainName: - description: Domain name of this ManagedZone - pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ - type: string - id: - description: ID is the provider assigned id of this zone (i.e. route53.HostedZone.ID). - type: string - parentManagedZone: - description: Reference to another managed zone that this managed zone - belongs to. - properties: - name: - description: '`name` is the name of the managed zone. Required' - type: string - required: - - name - type: object - providerRef: - properties: - kind: - enum: - - None - - Secret - - ManagedZone - type: string - name: - type: string - required: - - kind - - name - type: object - required: - - domainName - - providerRef - type: object - status: - description: ManagedZoneStatus defines the observed state of a Zone - properties: - conditions: - description: List of status conditions to indicate the status of a - ManagedZone. Known condition types are `Ready`. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - id: - description: The ID assigned by this provider for this zone (i.e. - route53.HostedZone.ID) - type: string - nameServers: - description: The NameServers assigned by the provider for this zone - (i.e. route53.DelegationSet.NameServers) - items: - type: string - type: array - observedGeneration: - description: observedGeneration is the most recently observed generation - of the ManagedZone. - format: int64 - type: integer - recordCount: - description: The number of records in the provider zone - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} diff --git a/config/policy-controller/crd/kustomization.yaml b/config/policy-controller/crd/kustomization.yaml index 65130a5bc..b4a684005 100644 --- a/config/policy-controller/crd/kustomization.yaml +++ b/config/policy-controller/crd/kustomization.yaml @@ -4,7 +4,6 @@ resources: - bases/kuadrant.io_dnsrecords.yaml - bases/kuadrant.io_dnspolicies.yaml -- bases/kuadrant.io_managedzones.yaml - bases/kuadrant.io_dnshealthcheckprobes.yaml - bases/kuadrant.io_tlspolicies.yaml #+kubebuilder:scaffold:crdkustomizeresource diff --git a/config/policy-controller/rbac/managedzone_editor_role.yaml b/config/policy-controller/rbac/managedzone_editor_role.yaml deleted file mode 100644 index a48a436d4..000000000 --- a/config/policy-controller/rbac/managedzone_editor_role.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# permissions for end users to edit managedzones. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: managedzone-editor-role -rules: -- apiGroups: - - kuadrant.io - resources: - - managedzones - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - kuadrant.io - resources: - - managedzones/status - verbs: - - get diff --git a/config/policy-controller/rbac/managedzone_viewer_role.yaml b/config/policy-controller/rbac/managedzone_viewer_role.yaml deleted file mode 100644 index 6da4a06fd..000000000 --- a/config/policy-controller/rbac/managedzone_viewer_role.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# permissions for end users to view managedzones. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: managedzone-viewer-role -rules: -- apiGroups: - - kuadrant.io - resources: - - managedzones - verbs: - - get - - list - - watch -- apiGroups: - - kuadrant.io - resources: - - managedzones/status - verbs: - - get diff --git a/config/policy-controller/rbac/role.yaml b/config/policy-controller/rbac/role.yaml index 6c0ad91fa..b3f50ec52 100644 --- a/config/policy-controller/rbac/role.yaml +++ b/config/policy-controller/rbac/role.yaml @@ -144,32 +144,6 @@ rules: - get - patch - update -- apiGroups: - - kuadrant.io - resources: - - managedzones - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - kuadrant.io - resources: - - managedzones/finalizers - verbs: - - update -- apiGroups: - - kuadrant.io - resources: - - managedzones/status - verbs: - - get - - patch - - update - apiGroups: - kuadrant.io resources: diff --git a/config/samples/kuadrant.io_v1alpha1_managedzone.yaml b/config/samples/kuadrant.io_v1alpha1_managedzone.yaml deleted file mode 100644 index 5a41b4f97..000000000 --- a/config/samples/kuadrant.io_v1alpha1_managedzone.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: kuadrant.io/v1alpha2 -kind: ManagedZone -metadata: - name: managedzone-sample -spec: - domainName: testmz.hcapps.net - description: "My managed domain" - providerRef: - name: my-provider-credentials - kind: Secret \ No newline at end of file diff --git a/config/samples/kuadrant.io_v1alpha2_dnsrecord-geo.yaml b/config/samples/kuadrant.io_v1alpha2_dnsrecord-geo.yaml index f0a60693b..5dd5c9ede 100644 --- a/config/samples/kuadrant.io_v1alpha2_dnsrecord-geo.yaml +++ b/config/samples/kuadrant.io_v1alpha2_dnsrecord-geo.yaml @@ -4,8 +4,7 @@ metadata: name: dnsrecord-geo spec: providerRef: - name: managedzone-sample - kind: ManagedZone + name: my-provider-creds endpoints: - dnsName: dnsrecord-geo.mn.hcpapps.net recordTTL: 60 diff --git a/config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml b/config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml index bc55e6d12..6ef841ce6 100644 --- a/config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml +++ b/config/samples/kuadrant.io_v1alpha2_dnsrecord-ns.yaml @@ -4,8 +4,7 @@ metadata: name: dnsrecord-ns spec: providerRef: - name: managedzone-sample - kind: ManagedZone + name: my-provider-creds endpoints: - dnsName: testns.hcpapps.net recordTTL: 172800 diff --git a/config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml b/config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml index d010e4af7..2e6eac5da 100644 --- a/config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml +++ b/config/samples/kuadrant.io_v1alpha2_dnsrecord.yaml @@ -4,8 +4,7 @@ metadata: name: dnsrecord-sample spec: providerRef: - name: managedzone-sample - kind: ManagedZone + name: my-provider-creds endpoints: - dnsName: dnsrecord-simple.mn.hcpapps.net recordTTL: 60 diff --git a/config/samples/kustomization.yaml b/config/samples/kustomization.yaml index a15ff039a..ffbb281f6 100644 --- a/config/samples/kustomization.yaml +++ b/config/samples/kustomization.yaml @@ -2,5 +2,4 @@ resources: # Used as examples in kuadrant-operator bundle - kuadrant.io_v1alpha1_tlspolicy.yaml -- kuadrant.io_v1alpha1_managedzone.yaml - dnspolicy.yaml diff --git a/pkg/apis/v1alpha2/managedzone_types.go b/pkg/apis/v1alpha2/managedzone_types.go deleted file mode 100644 index ffcafde84..000000000 --- a/pkg/apis/v1alpha2/managedzone_types.go +++ /dev/null @@ -1,104 +0,0 @@ -/* -Copyright 2022 The MultiCluster Traffic Controller Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha2 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// ManagedZoneReference holds a reference to a ManagedZone -type ManagedZoneReference struct { - // `name` is the name of the managed zone. - // Required - Name string `json:"name"` -} - -// ManagedZoneSpec defines the desired state of ManagedZone -type ManagedZoneSpec struct { - // ID is the provider assigned id of this zone (i.e. route53.HostedZone.ID). - // +optional - ID *string `json:"id,omitempty"` - //Domain name of this ManagedZone - // +required - // +kubebuilder:validation:Pattern=`^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$` - DomainName string `json:"domainName"` - //Description for this ManagedZone - // +optional - Description *string `json:"description"` - // Reference to another managed zone that this managed zone belongs to. - // +optional - ParentManagedZone *ManagedZoneReference `json:"parentManagedZone,omitempty"` - // +required - ProviderRef ProviderRef `json:"providerRef"` -} - -// ManagedZoneStatus defines the observed state of a Zone -type ManagedZoneStatus struct { - // List of status conditions to indicate the status of a ManagedZone. - // Known condition types are `Ready`. - // +listType=map - // +listMapKey=type - // +optional - Conditions []metav1.Condition `json:"conditions,omitempty"` - - // observedGeneration is the most recently observed generation of the - // ManagedZone. - ObservedGeneration int64 `json:"observedGeneration,omitempty"` - - // The ID assigned by this provider for this zone (i.e. route53.HostedZone.ID) - ID string `json:"id,omitempty"` - - // The number of records in the provider zone - RecordCount int64 `json:"recordCount,omitempty"` - - // The NameServers assigned by the provider for this zone (i.e. route53.DelegationSet.NameServers) - NameServers []*string `json:"nameServers,omitempty"` -} - -//+kubebuilder:object:root=true -//+kubebuilder:subresource:status -//+kubebuilder:printcolumn:name="Domain Name",type="string",JSONPath=".spec.domainName",description="Domain of this Managed Zone" -//+kubebuilder:printcolumn:name="ID",type="string",JSONPath=".status.id",description="The ID assigned by this provider for this zone ." -//+kubebuilder:printcolumn:name="Record Count",type="string",JSONPath=".status.recordCount",description="Number of records in the provider zone." -//+kubebuilder:printcolumn:name="NameServers",type="string",JSONPath=".status.nameServers",description="The NameServers assigned by the provider for this zone." -//+kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type==\"Ready\")].status",description="Managed Zone ready." - -// ManagedZone is the Schema for the managedzones API -type ManagedZone struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec ManagedZoneSpec `json:"spec,omitempty"` - Status ManagedZoneStatus `json:"status,omitempty"` -} - -func (p *ManagedZone) GetProviderRef() ProviderRef { - return p.Spec.ProviderRef -} - -//+kubebuilder:object:root=true - -// ManagedZoneList contains a list of ManagedZone -type ManagedZoneList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []ManagedZone `json:"items"` -} - -func init() { - SchemeBuilder.Register(&ManagedZone{}, &ManagedZoneList{}) -} diff --git a/pkg/apis/v1alpha2/shared_types.go b/pkg/apis/v1alpha2/shared_types.go index 8dbb03415..70d8f7008 100644 --- a/pkg/apis/v1alpha2/shared_types.go +++ b/pkg/apis/v1alpha2/shared_types.go @@ -16,22 +16,11 @@ limitations under the License. package v1alpha2 -// +kubebuilder:validation:Enum=None;Secret;ManagedZone -type ProviderKind string - type ProviderRef struct { //+required Name string `json:"name"` - //+required - Kind ProviderKind `json:"kind"` } -const ( - ProviderKindNone = "None" - ProviderKindSecret = "Secret" - ProviderKindManagedZone = "ManagedZone" -) - // +kubebuilder:object:generate=false type ProviderAccessor interface { GetNamespace() string diff --git a/pkg/apis/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/v1alpha2/zz_generated.deepcopy.go index a76f880c6..502752755 100644 --- a/pkg/apis/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/v1alpha2/zz_generated.deepcopy.go @@ -486,144 +486,6 @@ func (in *LoadBalancingWeighted) DeepCopy() *LoadBalancingWeighted { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZone) DeepCopyInto(out *ManagedZone) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZone. -func (in *ManagedZone) DeepCopy() *ManagedZone { - if in == nil { - return nil - } - out := new(ManagedZone) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *ManagedZone) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneList) DeepCopyInto(out *ManagedZoneList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]ManagedZone, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneList. -func (in *ManagedZoneList) DeepCopy() *ManagedZoneList { - if in == nil { - return nil - } - out := new(ManagedZoneList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *ManagedZoneList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneReference) DeepCopyInto(out *ManagedZoneReference) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneReference. -func (in *ManagedZoneReference) DeepCopy() *ManagedZoneReference { - if in == nil { - return nil - } - out := new(ManagedZoneReference) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneSpec) DeepCopyInto(out *ManagedZoneSpec) { - *out = *in - if in.ID != nil { - in, out := &in.ID, &out.ID - *out = new(string) - **out = **in - } - if in.Description != nil { - in, out := &in.Description, &out.Description - *out = new(string) - **out = **in - } - if in.ParentManagedZone != nil { - in, out := &in.ParentManagedZone, &out.ParentManagedZone - *out = new(ManagedZoneReference) - **out = **in - } - out.ProviderRef = in.ProviderRef -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneSpec. -func (in *ManagedZoneSpec) DeepCopy() *ManagedZoneSpec { - if in == nil { - return nil - } - out := new(ManagedZoneSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ManagedZoneStatus) DeepCopyInto(out *ManagedZoneStatus) { - *out = *in - if in.Conditions != nil { - in, out := &in.Conditions, &out.Conditions - *out = make([]v1.Condition, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.NameServers != nil { - in, out := &in.NameServers, &out.NameServers - *out = make([]*string, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(string) - **out = **in - } - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedZoneStatus. -func (in *ManagedZoneStatus) DeepCopy() *ManagedZoneStatus { - if in == nil { - return nil - } - out := new(ManagedZoneStatus) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProviderRef) DeepCopyInto(out *ProviderRef) { *out = *in diff --git a/pkg/controllers/dnspolicy/dns_helper.go b/pkg/controllers/dnspolicy/dns_helper.go index d84dd482e..48d7d636e 100644 --- a/pkg/controllers/dnspolicy/dns_helper.go +++ b/pkg/controllers/dnspolicy/dns_helper.go @@ -47,7 +47,7 @@ func findMatchingZone(originalHost, host string, zones dns.ZoneList) (*dns.Zone, //get the TLD from this host tld, _ := publicsuffix.PublicSuffix(host) - //The host is a TLD, so we now know `originalHost` can't possibly have a valid `ManagedZone` available. + //The host is a TLD, so we now know `originalHost` can't possibly have a valid `Zone` available. if host == tld { return nil, "", fmt.Errorf("no valid zone found for host: %v", originalHost) } diff --git a/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go b/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go index ac4ffdf12..999f4da33 100644 --- a/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go +++ b/pkg/controllers/dnspolicy/dnspolicy_dnsrecords.go @@ -54,11 +54,15 @@ func (r *DNSPolicyReconciler) reconcileGatewayDNSRecords(ctx context.Context, ga clusterGateways := gw.GetClusterGateways() - zoneList, zoneAssignment, err := r.getProviderDNSZones(ctx, dnsPolicy) + dnsProvider, err := r.DNSProvider(ctx, dnsPolicy) if err != nil { return err } - log.V(1).Info("got zones", "zoneList", zoneList, "zoneAssignment", zoneAssignment) + zoneList, err := dnsProvider.ListZones() + if err != nil { + return err + } + log.V(1).Info("got zones", "zoneList", zoneList) for _, listener := range gw.Spec.Listeners { listenerHost := *listener.Hostname @@ -68,14 +72,12 @@ func (r *DNSPolicyReconciler) reconcileGatewayDNSRecords(ctx context.Context, ga } var zone *dns.Zone - if zoneAssignment { - zone, _, err = findMatchingZone(string(listenerHost), string(listenerHost), zoneList) - if err != nil { - log.V(1).Info("skipping listener no matching zone for host", "listenerHost", listenerHost) - continue - } - log.V(1).Info("found zone for listener host", "zone", zone, "listenerHost", listenerHost) + zone, _, err = findMatchingZone(string(listenerHost), string(listenerHost), zoneList) + if err != nil { + log.V(1).Info("skipping listener no matching zone for host", "listenerHost", listenerHost) + continue } + log.V(1).Info("found zone for listener host", "zone", zone, "listenerHost", listenerHost) listenerGateways := slice.Filter(clusterGateways, func(cgw utils.ClusterGateway) bool { hasAttachedRoute := false @@ -150,39 +152,3 @@ func (r *DNSPolicyReconciler) deleteDNSRecordsWithLabels(ctx context.Context, lb } return nil } - -// getProviderDNSZones returns a list of dns.Zones for the given provider -func (r *DNSPolicyReconciler) getProviderDNSZones(ctx context.Context, pa v1alpha2.ProviderAccessor) (dns.ZoneList, bool, error) { - logger := crlog.FromContext(ctx) - zoneList := dns.ZoneList{} - zoneAssignment := false - - switch pa.GetProviderRef().Kind { - case v1alpha2.ProviderKindSecret: - zoneAssignment = true - dnsProvider, err := r.DNSProvider(ctx, pa) - if err != nil { - return zoneList, zoneAssignment, err - } - zoneList, err = dnsProvider.ListZones() - if err != nil { - return zoneList, zoneAssignment, err - } - case v1alpha2.ProviderKindManagedZone: - zoneAssignment = true - var mz v1alpha2.ManagedZone - if err := r.Client().Get(ctx, client.ObjectKey{Name: pa.GetProviderRef().Name, Namespace: pa.GetNamespace()}, &mz); err != nil { - logger.Error(err, "unable to get managed zone for provider", "ProviderRef", pa.GetProviderRef()) - return zoneList, zoneAssignment, err - } - zoneList.Items = append(zoneList.Items, &dns.Zone{ - ID: &mz.Status.ID, - DNSName: &mz.Spec.DomainName, - }) - case v1alpha2.ProviderKindNone: - fallthrough - default: - zoneAssignment = false - } - return zoneList, zoneAssignment, nil -} diff --git a/pkg/controllers/dnsrecord/dnsrecord_controller.go b/pkg/controllers/dnsrecord/dnsrecord_controller.go index 05a1b5cdb..fc40e4fc1 100644 --- a/pkg/controllers/dnsrecord/dnsrecord_controller.go +++ b/pkg/controllers/dnsrecord/dnsrecord_controller.go @@ -31,7 +31,6 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log" - "sigs.k8s.io/controller-runtime/pkg/predicate" "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" @@ -129,18 +128,10 @@ func (r *DNSRecordReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( func (r *DNSRecordReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&v1alpha2.DNSRecord{}). - WithEventFilter(predicate.NewPredicateFuncs(func(object client.Object) bool { - dnsRecord, ok := object.(*v1alpha2.DNSRecord) - if ok { - return dnsRecord.GetProviderRef().Kind != v1alpha2.ProviderKindNone - } - return true - })). Complete(r) } -// deleteRecord deletes record(s) in the DNSPRovider(i.e. route53) configured by the ManagedZone assigned to this -// DNSRecord (dnsRecord.Status.ParentManagedZone). +// deleteRecord deletes record(s) in the DNSProvider(i.e. route53). func (r *DNSRecordReconciler) deleteRecord(ctx context.Context, dnsRecord *v1alpha2.DNSRecord) error { dnsProvider, err := r.DNSProvider(ctx, dnsRecord) if err != nil { @@ -163,8 +154,7 @@ func (r *DNSRecordReconciler) deleteRecord(ctx context.Context, dnsRecord *v1alp return nil } -// publishRecord publishes record(s) to the DNSPRovider(i.e. route53) configured by the ManagedZone assigned to this -// DNSRecord (dnsRecord.Status.ParentManagedZone). +// publishRecord publishes record(s) to the DNSProvider(i.e. route53). func (r *DNSRecordReconciler) publishRecord(ctx context.Context, dnsRecord *v1alpha2.DNSRecord) error { if dnsRecord.Generation == dnsRecord.Status.ObservedGeneration { log.Log.V(3).Info("Skipping zone to which the DNS dnsRecord is already published", "dnsRecord", dnsRecord.Name, "zone", dnsRecord.Spec.ZoneID) diff --git a/pkg/controllers/managedzone/managedzone_controller.go b/pkg/controllers/managedzone/managedzone_controller.go deleted file mode 100644 index b7093f78e..000000000 --- a/pkg/controllers/managedzone/managedzone_controller.go +++ /dev/null @@ -1,354 +0,0 @@ -/* -Copyright 2022 The MultiCluster Traffic Controller Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package managedzone - -import ( - "context" - "fmt" - "strings" - - k8serrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - "sigs.k8s.io/controller-runtime/pkg/log" - - "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" -) - -const ( - ManagedZoneFinalizer = "kuadrant.io/managed-zone" -) - -// ManagedZoneReconciler reconciles a ManagedZone object -type ManagedZoneReconciler struct { - client.Client - Scheme *runtime.Scheme - DNSProvider dns.DNSProviderFactory -} - -//+kubebuilder:rbac:groups=kuadrant.io,resources=managedzones,verbs=get;list;watch;create;update;patch;delete -//+kubebuilder:rbac:groups=kuadrant.io,resources=managedzones/status,verbs=get;update;patch -//+kubebuilder:rbac:groups=kuadrant.io,resources=managedzones/finalizers,verbs=update - -func (r *ManagedZoneReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - _ = log.FromContext(ctx) - previous := &v1alpha2.ManagedZone{} - err := r.Client.Get(ctx, client.ObjectKey{Namespace: req.Namespace, Name: req.Name}, previous) - if err != nil { - if err := client.IgnoreNotFound(err); err == nil { - return ctrl.Result{}, nil - } else { - return ctrl.Result{}, err - } - } - managedZone := previous.DeepCopy() - - log.Log.V(3).Info("ManagedZoneReconciler Reconcile", "managedZone", managedZone) - - if managedZone.DeletionTimestamp != nil && !managedZone.DeletionTimestamp.IsZero() { - if err := r.deleteParentZoneNSRecord(ctx, managedZone); err != nil { - log.Log.Error(err, "Failed to delete parent Zone NS Record", "managedZone", managedZone) - return ctrl.Result{}, err - } - if err := r.deleteManagedZone(ctx, managedZone); err != nil { - log.Log.Error(err, "Failed to delete ManagedZone", "managedZone", managedZone) - return ctrl.Result{}, err - } - controllerutil.RemoveFinalizer(managedZone, ManagedZoneFinalizer) - - err = r.Update(ctx, managedZone) - if err != nil { - return ctrl.Result{}, err - } - return ctrl.Result{}, nil - } - - if !controllerutil.ContainsFinalizer(managedZone, ManagedZoneFinalizer) { - - controllerutil.AddFinalizer(managedZone, ManagedZoneFinalizer) - - err = r.setParentZoneOwner(ctx, managedZone) - if err != nil { - return ctrl.Result{}, err - } - - err = r.Update(ctx, managedZone) - if err != nil { - return ctrl.Result{}, err - } - } - - var reason, message string - status := metav1.ConditionTrue - reason = "ProviderSuccess" - message = "Provider ensured the managed zone" - - // Publish the managed zone - err = r.publishManagedZone(ctx, managedZone) - if err != nil { - status = metav1.ConditionFalse - reason = "ProviderError" - message = fmt.Sprintf("The DNS provider failed to ensure the managed zone: %v", err) - - err = r.Status().Update(ctx, managedZone) - if err != nil { - return ctrl.Result{}, err - } - } - - // Create the parent zone NS record - err = r.createParentZoneNSRecord(ctx, managedZone) - if err != nil { - status = metav1.ConditionFalse - reason = "ParentZoneNSRecordError" - message = fmt.Sprintf("Failed to create the NS record in the parent managed zone: %v", err) - - err = r.Status().Update(ctx, managedZone) - if err != nil { - return ctrl.Result{}, err - } - } - - // Check the parent zone NS record status - err = r.parentZoneNSRecordReady(ctx, managedZone) - if err != nil { - status = metav1.ConditionFalse - reason = "ParentZoneNSRecordNotReady" - message = fmt.Sprintf("NS Record ready status check failed: %v", err) - - err = r.Status().Update(ctx, managedZone) - if err != nil { - return ctrl.Result{}, err - } - } - - managedZone.Status.ObservedGeneration = managedZone.Generation - setManagedZoneCondition(managedZone, string(conditions.ConditionTypeReady), status, reason, message) - err = r.Status().Update(ctx, managedZone) - if err != nil { - return ctrl.Result{}, err - } - log.Log.Info("Reconciled ManagedZone", "managedZone", managedZone.Name) - return ctrl.Result{}, nil -} - -// SetupWithManager sets up the controller with the Manager. -func (r *ManagedZoneReconciler) SetupWithManager(mgr ctrl.Manager) error { - return ctrl.NewControllerManagedBy(mgr). - For(&v1alpha2.ManagedZone{}). - Owns(&v1alpha2.DNSRecord{}). - Owns(&v1alpha2.ManagedZone{}). - Complete(r) -} - -func (r *ManagedZoneReconciler) publishManagedZone(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { - - dnsProvider, err := r.DNSProvider(ctx, managedZone) - if err != nil { - return err - } - mzResp, err := dnsProvider.EnsureManagedZone(managedZone) - if err != nil { - return err - } - - managedZone.Status.ID = mzResp.ID - managedZone.Status.RecordCount = mzResp.RecordCount - managedZone.Status.NameServers = mzResp.NameServers - - return nil -} - -func (r *ManagedZoneReconciler) deleteManagedZone(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { - if managedZone.Spec.ID != nil { - log.Log.Info("Skipping deletion of managed zone with provider ID specified in spec", "managedZone", managedZone.Name) - return nil - } - - dnsProvider, err := r.DNSProvider(ctx, managedZone) - if err != nil { - var reason, message string - status := metav1.ConditionFalse - reason = "ProviderError" - message = fmt.Sprintf("The DNS provider creation failed: %v", err) - managedZone.Status.ObservedGeneration = managedZone.Generation - setManagedZoneCondition(managedZone, string(conditions.ConditionTypeReady), status, reason, message) - return err - } - err = dnsProvider.DeleteManagedZone(managedZone) - if err != nil { - if strings.Contains(err.Error(), "was not found") || strings.Contains(err.Error(), "notFound") { - log.Log.Info("ManagedZone was not found, continuing", "managedZone", managedZone.Name) - return nil - } - return err - } - log.Log.Info("Deleted ManagedZone", "managedZone", managedZone.Name) - - return nil -} - -func (r *ManagedZoneReconciler) getParentZone(ctx context.Context, managedZone *v1alpha2.ManagedZone) (*v1alpha2.ManagedZone, error) { - if managedZone.Spec.ParentManagedZone == nil { - return nil, nil - } - parentZone := &v1alpha2.ManagedZone{} - err := r.Client.Get(ctx, client.ObjectKey{Namespace: managedZone.Namespace, Name: managedZone.Spec.ParentManagedZone.Name}, parentZone) - if err != nil { - return parentZone, err - } - return parentZone, nil -} - -func (r *ManagedZoneReconciler) setParentZoneOwner(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { - parentZone, err := r.getParentZone(ctx, managedZone) - if err != nil { - return err - } - if parentZone == nil { - return nil - } - - err = controllerutil.SetControllerReference(parentZone, managedZone, r.Scheme) - if err != nil { - return err - } - - return err -} - -func (r *ManagedZoneReconciler) createParentZoneNSRecord(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { - parentZone, err := r.getParentZone(ctx, managedZone) - if err != nil { - return err - } - if parentZone == nil { - return nil - } - - recordName := managedZone.Spec.DomainName - //Ensure NS record is created in parent managed zone if one is set - recordTargets := make([]string, len(managedZone.Status.NameServers)) - for index := range managedZone.Status.NameServers { - recordTargets[index] = *managedZone.Status.NameServers[index] - } - recordType := string(v1alpha2.NSRecordType) - - nsRecord := &v1alpha2.DNSRecord{ - TypeMeta: metav1.TypeMeta{}, - ObjectMeta: metav1.ObjectMeta{ - Name: recordName, - Namespace: parentZone.Namespace, - }, - Spec: v1alpha2.DNSRecordSpec{ - ProviderRef: managedZone.Spec.ProviderRef, - Endpoints: []*v1alpha2.Endpoint{ - { - DNSName: recordName, - Targets: recordTargets, - RecordType: recordType, - RecordTTL: 172800, - }, - }, - }, - } - err = controllerutil.SetControllerReference(parentZone, nsRecord, r.Scheme) - if err != nil { - return err - } - err = r.Client.Create(ctx, nsRecord, &client.CreateOptions{}) - if err != nil && !k8serrors.IsAlreadyExists(err) { - return err - } - - return nil -} - -func (r *ManagedZoneReconciler) deleteParentZoneNSRecord(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { - parentZone, err := r.getParentZone(ctx, managedZone) - if err := client.IgnoreNotFound(err); err != nil { - return err - } - if parentZone == nil { - return nil - } - - recordName := managedZone.Spec.DomainName - - nsRecord := &v1alpha2.DNSRecord{} - err = r.Client.Get(ctx, client.ObjectKey{Namespace: parentZone.Namespace, Name: recordName}, nsRecord) - if err != nil { - if err := client.IgnoreNotFound(err); err == nil { - return nil - } else { - return err - } - } - - err = r.Client.Delete(ctx, nsRecord, &client.DeleteOptions{}) - if err != nil { - return err - } - - return nil -} - -func (r *ManagedZoneReconciler) parentZoneNSRecordReady(ctx context.Context, managedZone *v1alpha2.ManagedZone) error { - parentZone, err := r.getParentZone(ctx, managedZone) - if err := client.IgnoreNotFound(err); err != nil { - return err - } - if parentZone == nil { - return nil - } - - recordName := managedZone.Spec.DomainName - - nsRecord := &v1alpha2.DNSRecord{} - err = r.Client.Get(ctx, client.ObjectKey{Namespace: parentZone.Namespace, Name: recordName}, nsRecord) - if err != nil { - if err := client.IgnoreNotFound(err); err == nil { - return nil - } else { - return err - } - } - - nsRecordReady := meta.IsStatusConditionTrue(nsRecord.Status.Conditions, string(conditions.ConditionTypeReady)) - if !nsRecordReady { - return fmt.Errorf("the ns record is not in a ready state : %s", nsRecord.Name) - } - return nil -} - -// setManagedZoneCondition adds or updates a given condition in the ManagedZone status. -func setManagedZoneCondition(managedZone *v1alpha2.ManagedZone, conditionType string, status metav1.ConditionStatus, reason, message string) { - cond := metav1.Condition{ - Type: conditionType, - Status: status, - Reason: reason, - Message: message, - ObservedGeneration: managedZone.Generation, - } - meta.SetStatusCondition(&managedZone.Status.Conditions, cond) -} diff --git a/pkg/dns/aws/dns.go b/pkg/dns/aws/dns.go index ef4d2e65a..92e199bc9 100644 --- a/pkg/dns/aws/dns.go +++ b/pkg/dns/aws/dns.go @@ -21,7 +21,6 @@ import ( "net" "strconv" "strings" - "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials" @@ -132,77 +131,6 @@ func (p *Route53DNSProvider) ListZones() (dns.ZoneList, error) { return zoneList, nil } -func (p *Route53DNSProvider) EnsureManagedZone(zone *v1alpha2.ManagedZone) (dns.ManagedZoneOutput, error) { - var zoneID string - if zone.Spec.ID != nil { - zoneID = *zone.Spec.ID - } else { - zoneID = zone.Status.ID - } - - var managedZoneOutput dns.ManagedZoneOutput - - if zoneID != "" { - getResp, err := p.client.GetHostedZone(&route53.GetHostedZoneInput{ - Id: &zoneID, - }) - if err != nil { - log.Log.Error(err, "failed to get hosted zone") - return managedZoneOutput, err - } - - //Only update if we created the managed zone and description is set - if zone.Spec.ID != nil && zone.Spec.Description != nil { - _, err = p.client.UpdateHostedZoneComment(&route53.UpdateHostedZoneCommentInput{ - Comment: zone.Spec.Description, - Id: &zoneID, - }) - if err != nil { - log.Log.Error(err, "failed to update hosted zone comment") - } - } - - managedZoneOutput.ID = removeHostedZoneIDPrefix(*getResp.HostedZone.Id) - managedZoneOutput.RecordCount = *getResp.HostedZone.ResourceRecordSetCount - managedZoneOutput.NameServers = getResp.DelegationSet.NameServers - - return managedZoneOutput, nil - } - - //ToDo callerRef must be unique, but this can cause duplicates if the status can't be written back during a - //reconciliation that successfully created a new hosted zone i.e. the object has been modified; please apply your - //changes to the latest version and try again - callerRef := time.Now().Format("20060102150405") - // Create the hosted zone - createResp, err := p.client.CreateHostedZone(&route53.CreateHostedZoneInput{ - CallerReference: &callerRef, - Name: &zone.Spec.DomainName, - HostedZoneConfig: &route53.HostedZoneConfig{ - Comment: zone.Spec.Description, - PrivateZone: aws.Bool(false), - }, - }) - if err != nil { - log.Log.Error(err, "failed to create hosted zone") - return managedZoneOutput, err - } - managedZoneOutput.ID = *createResp.HostedZone.Id - managedZoneOutput.RecordCount = *createResp.HostedZone.ResourceRecordSetCount - managedZoneOutput.NameServers = createResp.DelegationSet.NameServers - return managedZoneOutput, nil -} - -func (p *Route53DNSProvider) DeleteManagedZone(zone *v1alpha2.ManagedZone) error { - _, err := p.client.DeleteHostedZone(&route53.DeleteHostedZoneInput{ - Id: &zone.Status.ID, - }) - if err != nil { - log.Log.Error(err, "failed to delete hosted zone") - return err - } - return nil -} - func (p *Route53DNSProvider) HealthCheckReconciler() dns.HealthCheckReconciler { if p.healthCheckReconciler == nil { p.healthCheckReconciler = dns.NewCachedHealthCheckReconciler( diff --git a/pkg/dns/dns.go b/pkg/dns/dns.go index f5b94ed62..0085e8c58 100644 --- a/pkg/dns/dns.go +++ b/pkg/dns/dns.go @@ -46,12 +46,6 @@ type Provider interface { // List all zones ListZones() (ZoneList, error) - // Ensure will create or update a managed zone, returns an array of NameServers for that zone. - EnsureManagedZone(managedZone *v1alpha2.ManagedZone) (ManagedZoneOutput, error) - - // Delete will delete a managed zone. - DeleteManagedZone(managedZone *v1alpha2.ManagedZone) error - // Get an instance of HealthCheckReconciler for this provider HealthCheckReconciler() HealthCheckReconciler @@ -63,12 +57,6 @@ type ProviderSpecificLabels struct { HealthCheckID string } -type ManagedZoneOutput struct { - ID string - NameServers []*string - RecordCount int64 -} - type Zone struct { ID *string DNSName *string @@ -100,7 +88,9 @@ func ConfigFromJSON(jsonKey []byte) (*ProviderConfig, error) { var _ Provider = &FakeProvider{} -type FakeProvider struct{} +type FakeProvider struct { + Zones []*Zone +} func (*FakeProvider) Ensure(_ *v1alpha2.DNSRecord) error { return nil @@ -108,17 +98,11 @@ func (*FakeProvider) Ensure(_ *v1alpha2.DNSRecord) error { func (*FakeProvider) Delete(_ *v1alpha2.DNSRecord) error { return nil } -func (*FakeProvider) ListZones() (ZoneList, error) { - return ZoneList{}, nil -} -func (*FakeProvider) EnsureManagedZone(mz *v1alpha2.ManagedZone) (ManagedZoneOutput, error) { - return ManagedZoneOutput{ - ID: *mz.Spec.ID, - NameServers: nil, - RecordCount: 0, +func (p *FakeProvider) ListZones() (ZoneList, error) { + return ZoneList{ + Items: p.Zones, }, nil } -func (*FakeProvider) DeleteManagedZone(_ *v1alpha2.ManagedZone) error { return nil } func (*FakeProvider) HealthCheckReconciler() HealthCheckReconciler { return &FakeHealthCheckReconciler{} diff --git a/pkg/dns/dnsprovider/dnsProvider.go b/pkg/dns/dnsprovider/dnsProvider.go index 75caa28ed..3ef94bdd8 100644 --- a/pkg/dns/dnsprovider/dnsProvider.go +++ b/pkg/dns/dnsprovider/dnsProvider.go @@ -15,7 +15,6 @@ import ( ) var ( - ErrUnsupportedProviderKind = fmt.Errorf("unsupported provider kind") ErrUnsupportedProviderType = fmt.Errorf("unsupported provider type") ) @@ -36,16 +35,7 @@ func (p *providerFactory) DNSProviderFactory(ctx context.Context, pa v1alpha2.Pr } func (p *providerFactory) provider(ctx context.Context, pa v1alpha2.ProviderAccessor) (dns.Provider, error) { - switch pa.GetProviderRef().Kind { - case v1alpha2.ProviderKindSecret: - return p.providerFromSecret(ctx, pa.GetProviderRef().Name, pa.GetNamespace()) - case v1alpha2.ProviderKindManagedZone: - return p.providerFromManagedZone(ctx, pa.GetProviderRef().Name, pa.GetNamespace()) - case v1alpha2.ProviderKindNone: - fallthrough - default: - return nil, fmt.Errorf("%w : %s", ErrUnsupportedProviderKind, pa.GetProviderRef().Kind) - } + return p.providerFromSecret(ctx, pa.GetProviderRef().Name, pa.GetNamespace()) } func (p *providerFactory) providerFromSecret(ctx context.Context, name, namespace string) (dns.Provider, error) { @@ -76,15 +66,3 @@ func (p *providerFactory) providerFromSecret(ctx context.Context, name, namespac return nil, fmt.Errorf("%w : %s", ErrUnsupportedProviderType, providerSecret.Type) } } - -func (p *providerFactory) providerFromManagedZone(ctx context.Context, name, namespace string) (dns.Provider, error) { - var mz v1alpha2.ManagedZone - if err := p.Client.Get(ctx, client.ObjectKey{Name: name, Namespace: namespace}, &mz); err != nil { - return nil, err - } - //Avoid ending up in a loop, a managed zone should not reference another managed zone - if mz.GetProviderRef().Kind == v1alpha2.ProviderKindManagedZone { - return nil, fmt.Errorf("%w : managed zone cannot have a providerRef with kind %s", ErrUnsupportedProviderKind, v1alpha2.ProviderKindManagedZone) - } - return p.provider(ctx, &mz) -} diff --git a/pkg/dns/google/google.go b/pkg/dns/google/google.go index 6f9f5d2a5..aae47af0e 100644 --- a/pkg/dns/google/google.go +++ b/pkg/dns/google/google.go @@ -233,69 +233,6 @@ func (p *GoogleDNSProvider) zones() (map[string]*dnsv1.ManagedZone, error) { return zones, nil } -func (g *GoogleDNSProvider) DeleteManagedZone(managedZone *v1alpha2.ManagedZone) error { - return g.managedZonesClient.Delete(g.project, managedZone.Status.ID).Do() -} - -func (g *GoogleDNSProvider) EnsureManagedZone(managedZone *v1alpha2.ManagedZone) (dns.ManagedZoneOutput, error) { - var zoneID string - - if managedZone.Spec.ID != nil { - zoneID = *managedZone.Spec.ID - } else { - zoneID = managedZone.Status.ID - } - - if zoneID != "" { - //Get existing managed zone - return g.getManagedZone(zoneID) - } - //Create new managed zone - return g.createManagedZone(managedZone) -} - -func (g *GoogleDNSProvider) createManagedZone(managedZone *v1alpha2.ManagedZone) (dns.ManagedZoneOutput, error) { - zoneID := strings.Replace(managedZone.Spec.DomainName, ".", "-", -1) - zone := dnsv1.ManagedZone{ - Name: zoneID, - DnsName: ensureTrailingDot(managedZone.Spec.DomainName), - Description: *managedZone.Spec.Description, - } - mz, err := g.managedZonesClient.Create(g.project, &zone).Do() - if err != nil { - return dns.ManagedZoneOutput{}, err - } - return g.toManagedZoneOutput(mz) -} - -func (g *GoogleDNSProvider) getManagedZone(zoneID string) (dns.ManagedZoneOutput, error) { - mz, err := g.managedZonesClient.Get(g.project, zoneID).Do() - if err != nil { - return dns.ManagedZoneOutput{}, err - } - return g.toManagedZoneOutput(mz) -} - -func (g *GoogleDNSProvider) toManagedZoneOutput(mz *dnsv1.ManagedZone) (dns.ManagedZoneOutput, error) { - var managedZoneOutput dns.ManagedZoneOutput - - zoneID := mz.Name - var nameservers []*string - for i := range mz.NameServers { - nameservers = append(nameservers, &mz.NameServers[i]) - } - managedZoneOutput.ID = zoneID - managedZoneOutput.NameServers = nameservers - - currentRecords, err := g.getResourceRecordSets(g.ctx, zoneID) - if err != nil { - return managedZoneOutput, err - } - managedZoneOutput.RecordCount = int64(len(currentRecords)) - - return managedZoneOutput, nil -} - //DNSRecords func (g *GoogleDNSProvider) Ensure(record *v1alpha2.DNSRecord) error { diff --git a/pkg/dns/google/google_test.go b/pkg/dns/google/google_test.go index 552a86ff9..71207b9c1 100644 --- a/pkg/dns/google/google_test.go +++ b/pkg/dns/google/google_test.go @@ -4,133 +4,15 @@ package google import ( "context" - "fmt" "reflect" "sort" "testing" - "github.com/aws/aws-sdk-go/aws" dnsv1 "google.golang.org/api/dns/v1" "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" ) -func TestGoogleDNSProvider_toManagedZoneOutput(t *testing.T) { - mockListCall := &MockResourceRecordSetsListCall{ - PagesFunc: func(ctx context.Context, f func(*dnsv1.ResourceRecordSetsListResponse) error) error { - mockResponse := &dnsv1.ResourceRecordSetsListResponse{ - Rrsets: []*dnsv1.ResourceRecordSet{ - { - Name: "TestRecordSet1", - }, - { - Name: "TestRecordSet2", - }, - }, - } - return f(mockResponse) - }, - } - mockClient := &MockResourceRecordSetsClient{ - ListFunc: func(project string, managedZone string) resourceRecordSetsListCallInterface { - return mockListCall - }, - } - - mockListCallErr := &MockResourceRecordSetsListCall{ - PagesFunc: func(ctx context.Context, f func(*dnsv1.ResourceRecordSetsListResponse) error) error { - - error := fmt.Errorf("status 400 ") - return error - }, - } - mockClientErr := &MockResourceRecordSetsClient{ - ListFunc: func(project string, managedZone string) resourceRecordSetsListCallInterface { - return mockListCallErr - }, - } - - type fields struct { - resourceRecordSetsClient resourceRecordSetsClientInterface - } - type args struct { - mz *dnsv1.ManagedZone - } - tests := []struct { - name string - fields fields - args args - want dns.ManagedZoneOutput - wantErr bool - }{ - - { - name: "Successful test", - fields: fields{ - resourceRecordSetsClient: mockClient, - }, - args: args{ - &dnsv1.ManagedZone{ - Name: "testname", - NameServers: []string{ - "nameserver1", - "nameserver2", - }, - }, - }, - want: dns.ManagedZoneOutput{ - ID: "testname", - NameServers: []*string{ - aws.String("nameserver1"), - aws.String("nameserver2"), - }, - RecordCount: 2, - }, - wantErr: false, - }, - { - name: "UnSuccessful test", - fields: fields{ - resourceRecordSetsClient: mockClientErr, - }, - args: args{ - &dnsv1.ManagedZone{ - Name: "testname", - NameServers: []string{ - "nameserver1", - "nameserver2", - }, - }, - }, - want: dns.ManagedZoneOutput{ - ID: "testname", - NameServers: []*string{ - aws.String("nameserver1"), - aws.String("nameserver2"), - }, - RecordCount: 0, - }, - wantErr: true, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - g := &GoogleDNSProvider{ - resourceRecordSetsClient: tt.fields.resourceRecordSetsClient, - } - got, err := g.toManagedZoneOutput(tt.args.mz) - if (err != nil) != tt.wantErr { - t.Errorf("GoogleDNSProvider.toManagedZoneOutput() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("GoogleDNSProvider.toManagedZoneOutput() = %v, want %v", got, tt.want) - } - }) - } -} - func Test_toResourceRecordSets(t *testing.T) { type args struct { allEndpoints []*v1alpha2.Endpoint @@ -530,7 +412,6 @@ type MockResourceRecordSetsListCall struct { func (m *MockResourceRecordSetsListCall) Pages(ctx context.Context, f func(*dnsv1.ResourceRecordSetsListResponse) error) error { return m.PagesFunc(ctx, f) - } type MockResourceRecordSetsClient struct { diff --git a/test/e2e/dnspolicy_istio_gateway_test.go b/test/e2e/dnspolicy_istio_gateway_test.go new file mode 100644 index 000000000..2dc2f9256 --- /dev/null +++ b/test/e2e/dnspolicy_istio_gateway_test.go @@ -0,0 +1,222 @@ +//go:build e2e + +package e2e + +import ( + "context" + "encoding/json" + "fmt" + "strings" + "time" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + . "github.com/onsi/gomega/gstruct" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" + + "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" + "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" + . "github.com/Kuadrant/multicluster-gateway-controller/test/util" +) + +var _ = Describe("DNSPolicy Targeting an Istio Gateway", func() { + + // testID is a randomly generated identifier for the test + // it is used to name resources and/or namespaces so different + // tests can be run in parallel in the same cluster + var testID string + // testNamespace provided namespace in which to run tests (must contain provider secret) + var testNamespace string + // testZoneID provided zone id for the provider zone i.e. Route53 Hosted zone ID or GCP Managed zone Name + var testZoneID string + // testZoneDomainName provided domain name for the testZoneID e.g. e2e.hcpapps.net + var testZoneDomainName string + // testDomainName generated domain for this test e.g. t-e2e-12345.e2e.hcpapps.net + var testDomainName string + // testHostname generated hostname for this test e.g. t-dns-istio.t-e2e-12345.e2e.hcpapps.net + var testHostname gatewayapiv1.Hostname + + var k8sClient client.Client + + var gw *gatewayapiv1.Gateway + var httproute *gatewayapiv1.HTTPRoute + var dnsPolicy *v1alpha2.DNSPolicy + + BeforeEach(func(ctx SpecContext) { + testID = "t-dns-" + tconfig.GenerateName() + //ToDo Have this generate a new namespace instead of using the Hub Namespace and consider using a spoke client. + // This currently still relies on the provider credentials secret being created ahead of time in a target namespace + testNamespace = tconfig.HubNamespace() + testZoneID = tconfig.DNSZoneID() + testZoneDomainName = tconfig.DNSZoneDomainName() + testDomainName = strings.Join([]string{testSuiteID, testZoneDomainName}, ".") + testHostname = gatewayapiv1.Hostname(strings.Join([]string{testID, testDomainName}, ".")) + k8sClient = tconfig.HubClient() + + GinkgoWriter.Printf("[debug] testHostname: '%s'\n", testHostname) + + By("creating an Istio Gateway") + gw = NewGatewayBuilder(testID, IstioGatewayClassName, testNamespace). + WithListener(gatewayapiv1.Listener{ + Name: "http", + Hostname: &testHostname, + Port: 80, + Protocol: gatewayapiv1.HTTPProtocolType, + AllowedRoutes: &gatewayapiv1.AllowedRoutes{ + Namespaces: &gatewayapiv1.RouteNamespaces{ + From: Pointer(gatewayapiv1.NamespacesFromAll), + }, + }, + }).WithLabels(map[string]string{"gw": "t-e2e"}).Gateway + err := k8sClient.Create(ctx, gw) + Expect(err).ToNot(HaveOccurred()) + + By("creating an HTTPRoute") + httproute = &gatewayapiv1.HTTPRoute{ + ObjectMeta: metav1.ObjectMeta{ + Name: testID, + Namespace: testNamespace, + }, + Spec: gatewayapiv1.HTTPRouteSpec{ + CommonRouteSpec: gatewayapiv1.CommonRouteSpec{ + ParentRefs: []gatewayapiv1.ParentReference{{ + Namespace: Pointer(gatewayapiv1.Namespace(testNamespace)), + Name: gatewayapiv1.ObjectName(gw.GetName()), + Kind: Pointer(gatewayapiv1.Kind("Gateway")), + }}, + }, + Hostnames: []gatewayapiv1.Hostname{testHostname}, + Rules: []gatewayapiv1.HTTPRouteRule{{ + BackendRefs: []gatewayapiv1.HTTPBackendRef{{ + BackendRef: gatewayapiv1.BackendRef{ + BackendObjectReference: gatewayapiv1.BackendObjectReference{ + Kind: Pointer(gatewayapiv1.Kind("Service")), + Name: "test", + Port: Pointer(gatewayapiv1.PortNumber(8080)), + }, + }, + }}, + }}, + }, + } + err = k8sClient.Create(ctx, httproute) + Expect(err).ToNot(HaveOccurred()) + }) + + AfterEach(func(ctx SpecContext) { + if dnsPolicy != nil { + err := k8sClient.Delete(ctx, dnsPolicy, + client.PropagationPolicy(metav1.DeletePropagationForeground)) + Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) + Eventually(func(g Gomega) { // wait until it's gone to allow time for DNSRecords to be cleaned up + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) + g.Expect(err).To(HaveOccurred()) + g.Expect(err).To(MatchError(ContainSubstring("not found"))) + + recordList := &v1alpha2.DNSRecordList{} + err = k8sClient.List(ctx, recordList, &client.MatchingLabels{"kuadrant.io/gateway": gw.GetName()}, &client.ListOptions{Namespace: testNamespace}) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(recordList.Items).To(BeEmpty()) + }, TestTimeoutMedium, time.Second).Should(Succeed()) + } + if httproute != nil { + err := k8sClient.Delete(ctx, httproute, + client.PropagationPolicy(metav1.DeletePropagationForeground)) + Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) + } + if gw != nil { + err := k8sClient.Delete(ctx, gw, + client.PropagationPolicy(metav1.DeletePropagationForeground)) + Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) + } + }) + + It("makes the hostname resolvable when a dnspolicy is attached", func(ctx SpecContext) { + + By("creating a DNSPolicy") + dnsPolicy = NewDNSPolicyBuilder(testID, testNamespace). + WithTargetGateway(gw.GetName()). + WithProviderSecret(tconfig.DNSProviderSecretName()). + WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). + DNSPolicy + err := k8sClient.Create(ctx, dnsPolicy) + Expect(err).ToNot(HaveOccurred()) + + Eventually(func(g Gomega) { + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsPolicy.Status.Conditions).To( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + "Status": Equal(metav1.ConditionTrue), + "Reason": Equal("GatewayDNSEnabled"), + })), + ) + + policyBackRefValue := testNamespace + "/" + dnsPolicy.Name + refs, _ := json.Marshal([]client.ObjectKey{{Name: dnsPolicy.Name, Namespace: testNamespace}}) + policiesBackRefValue := string(refs) + err = k8sClient.Get(ctx, client.ObjectKeyFromObject(gw), gw) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPolicyBackRefAnnotation, policyBackRefValue)) + g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPoliciesBackRefAnnotation, policiesBackRefValue)) + }, TestTimeoutLong, time.Second).Should(Succeed()) + + expectedRecordName := fmt.Sprintf("%s-%s", gw.GetName(), "http") + Eventually(func(g Gomega) { + dnsrecord := &v1alpha2.DNSRecord{ + ObjectMeta: metav1.ObjectMeta{ + Name: expectedRecordName, + Namespace: testNamespace, + }, + } + err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsrecord), dnsrecord) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsrecord.Status.Conditions).To( + ContainElement(MatchFields(IgnoreExtras, Fields{ + "Type": Equal(string(conditions.ConditionTypeReady)), + "Status": Equal(metav1.ConditionTrue), + })), + ) + g.Expect(dnsrecord.Spec.ZoneID).Should(PointTo(Equal(testZoneID))) + g.Expect(dnsrecord.Spec.ProviderRef).Should(Equal(dnsPolicy.Spec.ProviderRef)) + g.Expect(dnsrecord.Spec.Endpoints).Should(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(string(testHostname)), + "Targets": Not(BeEmpty()), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + // We need to wait for the status to be updated otherwise google can leave things behind + g.Expect(dnsrecord.Status.Endpoints).Should(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(string(testHostname)), + "Targets": Not(BeEmpty()), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + }, TestTimeoutLong, time.Second, ctx).Should(Succeed()) + + By("ensuring the authoritative nameserver resolves the hostname") + // speed up things by using the authoritative nameserver + authoritativeResolver := ResolverForDomainName(testZoneDomainName) + Eventually(func(ctx SpecContext) bool { + c, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + IPs, err := authoritativeResolver.LookupHost(c, string(testHostname)) + if err != nil { + GinkgoWriter.Printf("[debug] LookupHost error: '%s'\n", err) + } + return err == nil && len(IPs) > 0 + }).WithTimeout(300 * time.Second).WithPolling(10 * time.Second).WithContext(ctx).Should(BeTrue()) + + }) + +}) diff --git a/test/e2e/dnspolicy_providers_istio_gateway_test.go b/test/e2e/dnspolicy_providers_istio_gateway_test.go deleted file mode 100644 index 2ba8703f7..000000000 --- a/test/e2e/dnspolicy_providers_istio_gateway_test.go +++ /dev/null @@ -1,394 +0,0 @@ -//go:build e2e - -package e2e - -import ( - "context" - "encoding/json" - "fmt" - "strings" - "time" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/gstruct" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1" - - "github.com/Kuadrant/multicluster-gateway-controller/pkg/_internal/conditions" - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" - . "github.com/Kuadrant/multicluster-gateway-controller/test/util" -) - -var _ = Describe("DNSPolicy Targeting an Istio Gateway", func() { - - // testID is a randomly generated identifier for the test - // it is used to name resources and/or namespaces so different - // tests can be run in parallel in the same cluster - var testID string - // testNamespace provided namespace in which to run tests (must contain provider secret) - var testNamespace string - // testZoneID provided zone id for the provider zone i.e. Route53 Hosted zone ID or GCP Managed zone Name - var testZoneID string - // testZoneDomainName provided domain name for the testZoneID e.g. e2e.hcpapps.net - var testZoneDomainName string - // testDomainName generated domain for this test e.g. t-e2e-12345.e2e.hcpapps.net - var testDomainName string - // testHostname generated hostname for this test e.g. t-dns-istio.t-e2e-12345.e2e.hcpapps.net - var testHostname gatewayapiv1.Hostname - - var k8sClient client.Client - - var gw *gatewayapiv1.Gateway - var httproute *gatewayapiv1.HTTPRoute - var dnsPolicy *v1alpha2.DNSPolicy - var mz *v1alpha2.ManagedZone - - BeforeEach(func(ctx SpecContext) { - testID = "t-dns-" + tconfig.GenerateName() - //ToDo Have this generate a new namespace instead of using the Hub Namespace and consider using a spoke client. - // This currently still relies on the provider credentials secret being created ahead of time in a target namespace - testNamespace = tconfig.HubNamespace() - testZoneID = tconfig.DNSZoneID() - testZoneDomainName = tconfig.DNSZoneDomainName() - testDomainName = strings.Join([]string{testSuiteID, testZoneDomainName}, ".") - testHostname = gatewayapiv1.Hostname(strings.Join([]string{testID, testDomainName}, ".")) - k8sClient = tconfig.HubClient() - - GinkgoWriter.Printf("[debug] testHostname: '%s'\n", testHostname) - - By("creating an Istio Gateway") - gw = NewGatewayBuilder(testID, IstioGatewayClassName, testNamespace). - WithListener(gatewayapiv1.Listener{ - Name: "http", - Hostname: &testHostname, - Port: 80, - Protocol: gatewayapiv1.HTTPProtocolType, - AllowedRoutes: &gatewayapiv1.AllowedRoutes{ - Namespaces: &gatewayapiv1.RouteNamespaces{ - From: Pointer(gatewayapiv1.NamespacesFromAll), - }, - }, - }).WithLabels(map[string]string{"gw": "t-e2e"}).Gateway - err := k8sClient.Create(ctx, gw) - Expect(err).ToNot(HaveOccurred()) - - By("creating an HTTPRoute") - httproute = &gatewayapiv1.HTTPRoute{ - ObjectMeta: metav1.ObjectMeta{ - Name: testID, - Namespace: testNamespace, - }, - Spec: gatewayapiv1.HTTPRouteSpec{ - CommonRouteSpec: gatewayapiv1.CommonRouteSpec{ - ParentRefs: []gatewayapiv1.ParentReference{{ - Namespace: Pointer(gatewayapiv1.Namespace(testNamespace)), - Name: gatewayapiv1.ObjectName(gw.GetName()), - Kind: Pointer(gatewayapiv1.Kind("Gateway")), - }}, - }, - Hostnames: []gatewayapiv1.Hostname{testHostname}, - Rules: []gatewayapiv1.HTTPRouteRule{{ - BackendRefs: []gatewayapiv1.HTTPBackendRef{{ - BackendRef: gatewayapiv1.BackendRef{ - BackendObjectReference: gatewayapiv1.BackendObjectReference{ - Kind: Pointer(gatewayapiv1.Kind("Service")), - Name: "test", - Port: Pointer(gatewayapiv1.PortNumber(8080)), - }, - }, - }}, - }}, - }, - } - err = k8sClient.Create(ctx, httproute) - Expect(err).ToNot(HaveOccurred()) - }) - - AfterEach(func(ctx SpecContext) { - if dnsPolicy != nil { - err := k8sClient.Delete(ctx, dnsPolicy, - client.PropagationPolicy(metav1.DeletePropagationForeground)) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - Eventually(func(g Gomega) { // wait until it's gone to allow time for DNSRecords to be cleaned up - err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) - g.Expect(err).To(HaveOccurred()) - g.Expect(err).To(MatchError(ContainSubstring("not found"))) - - recordList := &v1alpha2.DNSRecordList{} - err = k8sClient.List(ctx, recordList, &client.MatchingLabels{"kuadrant.io/gateway": gw.GetName()}, &client.ListOptions{Namespace: testNamespace}) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(recordList.Items).To(BeEmpty()) - }, TestTimeoutMedium, time.Second).Should(Succeed()) - } - if mz != nil { - err := k8sClient.Delete(ctx, mz, - client.PropagationPolicy(metav1.DeletePropagationForeground)) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - } - if httproute != nil { - err := k8sClient.Delete(ctx, httproute, - client.PropagationPolicy(metav1.DeletePropagationForeground)) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - } - if gw != nil { - err := k8sClient.Delete(ctx, gw, - client.PropagationPolicy(metav1.DeletePropagationForeground)) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - } - }) - - Context("ManagedZone Provider", func() { - - BeforeEach(func(ctx SpecContext) { - By("creating a ManagedZone") - mz = NewManagedZoneBuilder(testID, testNamespace). - WithID(testZoneID). - WithDomainName(testDomainName). - WithProviderSecret(tconfig.DNSProviderSecretName()). - ManagedZone - err := k8sClient.Create(ctx, mz) - Expect(err).ToNot(HaveOccurred()) - }) - - It("makes the hostname resolvable when a dnspolicy and httproute are attached", func(ctx SpecContext) { - - By("creating a DNSPolicy with ManagedZone provider") - dnsPolicy = NewDNSPolicyBuilder(testID, testNamespace). - WithTargetGateway(gw.GetName()). - WithProviderManagedZone(mz.GetName()). - WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). - DNSPolicy - err := k8sClient.Create(ctx, dnsPolicy) - Expect(err).ToNot(HaveOccurred()) - - Eventually(func(g Gomega) { - err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(dnsPolicy.Status.Conditions).To( - ContainElement(MatchFields(IgnoreExtras, Fields{ - "Type": Equal(string(conditions.ConditionTypeReady)), - "Status": Equal(metav1.ConditionTrue), - "Reason": Equal("GatewayDNSEnabled"), - })), - ) - - policyBackRefValue := testNamespace + "/" + dnsPolicy.Name - refs, _ := json.Marshal([]client.ObjectKey{{Name: dnsPolicy.Name, Namespace: testNamespace}}) - policiesBackRefValue := string(refs) - err = k8sClient.Get(ctx, client.ObjectKeyFromObject(gw), gw) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPolicyBackRefAnnotation, policyBackRefValue)) - g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPoliciesBackRefAnnotation, policiesBackRefValue)) - }, TestTimeoutMedium, time.Second).Should(Succeed()) - - expectedRecordName := fmt.Sprintf("%s-%s", gw.GetName(), "http") - Eventually(func(g Gomega) { - dnsrecord := &v1alpha2.DNSRecord{ - ObjectMeta: metav1.ObjectMeta{ - Name: expectedRecordName, - Namespace: testNamespace, - }, - } - err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsrecord), dnsrecord) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(dnsrecord.Status.Conditions).To( - ContainElement(MatchFields(IgnoreExtras, Fields{ - "Type": Equal(string(conditions.ConditionTypeReady)), - "Status": Equal(metav1.ConditionTrue), - })), - ) - g.Expect(dnsrecord.Spec.ZoneID).Should(PointTo(Equal(testZoneID))) - g.Expect(dnsrecord.Spec.ProviderRef).Should(Equal(dnsPolicy.Spec.ProviderRef)) - g.Expect(dnsrecord.Spec.Endpoints).Should(ConsistOf( - PointTo(MatchFields(IgnoreExtras, Fields{ - "DNSName": Equal(string(testHostname)), - "Targets": Not(BeEmpty()), - "RecordType": Equal("A"), - "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha2.TTL(60)), - })), - )) - g.Expect(dnsrecord.Status.Endpoints).Should(ConsistOf( - PointTo(MatchFields(IgnoreExtras, Fields{ - "DNSName": Equal(string(testHostname)), - "Targets": Not(BeEmpty()), - "RecordType": Equal("A"), - "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha2.TTL(60)), - })), - )) - }, TestTimeoutLong, time.Second, ctx).Should(Succeed()) - - By("ensuring the authoritative nameserver resolves the hostname") - // speed up things by using the authoritative nameserver - authoritativeResolver := ResolverForDomainName(testZoneDomainName) - Eventually(func(ctx SpecContext) bool { - c, cancel := context.WithTimeout(ctx, 10*time.Second) - defer cancel() - IPs, err := authoritativeResolver.LookupHost(c, string(testHostname)) - if err != nil { - GinkgoWriter.Printf("[debug] LookupHost error: '%s'\n", err) - } - return err == nil && len(IPs) > 0 - }).WithTimeout(300 * time.Second).WithPolling(10 * time.Second).WithContext(ctx).Should(BeTrue()) - - }) - }) - - Context("Secret Provider", func() { - - It("makes the hostname resolvable when a dnspolicy and httproute are attached", func(ctx SpecContext) { - - By("creating a DNSPolicy with Secret provider") - dnsPolicy = NewDNSPolicyBuilder(testID, testNamespace). - WithTargetGateway(gw.GetName()). - WithProviderSecret(tconfig.DNSProviderSecretName()). - WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). - DNSPolicy - err := k8sClient.Create(ctx, dnsPolicy) - Expect(err).ToNot(HaveOccurred()) - - Eventually(func(g Gomega) { - err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(dnsPolicy.Status.Conditions).To( - ContainElement(MatchFields(IgnoreExtras, Fields{ - "Type": Equal(string(conditions.ConditionTypeReady)), - "Status": Equal(metav1.ConditionTrue), - "Reason": Equal("GatewayDNSEnabled"), - })), - ) - - policyBackRefValue := testNamespace + "/" + dnsPolicy.Name - refs, _ := json.Marshal([]client.ObjectKey{{Name: dnsPolicy.Name, Namespace: testNamespace}}) - policiesBackRefValue := string(refs) - err = k8sClient.Get(ctx, client.ObjectKeyFromObject(gw), gw) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPolicyBackRefAnnotation, policyBackRefValue)) - g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPoliciesBackRefAnnotation, policiesBackRefValue)) - }, TestTimeoutLong, time.Second).Should(Succeed()) - - expectedRecordName := fmt.Sprintf("%s-%s", gw.GetName(), "http") - Eventually(func(g Gomega) { - dnsrecord := &v1alpha2.DNSRecord{ - ObjectMeta: metav1.ObjectMeta{ - Name: expectedRecordName, - Namespace: testNamespace, - }, - } - err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsrecord), dnsrecord) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(dnsrecord.Status.Conditions).To( - ContainElement(MatchFields(IgnoreExtras, Fields{ - "Type": Equal(string(conditions.ConditionTypeReady)), - "Status": Equal(metav1.ConditionTrue), - })), - ) - g.Expect(dnsrecord.Spec.ZoneID).Should(PointTo(Equal(testZoneID))) - g.Expect(dnsrecord.Spec.ProviderRef).Should(Equal(dnsPolicy.Spec.ProviderRef)) - g.Expect(dnsrecord.Spec.Endpoints).Should(ConsistOf( - PointTo(MatchFields(IgnoreExtras, Fields{ - "DNSName": Equal(string(testHostname)), - "Targets": Not(BeEmpty()), - "RecordType": Equal("A"), - "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha2.TTL(60)), - })), - )) - // We need to wait for the status to be updated otherwise google can leave things behind - g.Expect(dnsrecord.Status.Endpoints).Should(ConsistOf( - PointTo(MatchFields(IgnoreExtras, Fields{ - "DNSName": Equal(string(testHostname)), - "Targets": Not(BeEmpty()), - "RecordType": Equal("A"), - "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha2.TTL(60)), - })), - )) - }, TestTimeoutLong, time.Second, ctx).Should(Succeed()) - - By("ensuring the authoritative nameserver resolves the hostname") - // speed up things by using the authoritative nameserver - authoritativeResolver := ResolverForDomainName(testZoneDomainName) - Eventually(func(ctx SpecContext) bool { - c, cancel := context.WithTimeout(ctx, 10*time.Second) - defer cancel() - IPs, err := authoritativeResolver.LookupHost(c, string(testHostname)) - if err != nil { - GinkgoWriter.Printf("[debug] LookupHost error: '%s'\n", err) - } - return err == nil && len(IPs) > 0 - }).WithTimeout(300 * time.Second).WithPolling(10 * time.Second).WithContext(ctx).Should(BeTrue()) - - }) - }) - - Context("None Provider", func() { - - It("should create dns record with no zone assigned and record should not become ready", func(ctx SpecContext) { - - By("creating a DNSPolicy with None provider") - dnsPolicy = NewDNSPolicyBuilder(testID, testNamespace). - WithTargetGateway(gw.GetName()). - WithProviderNone("external-dns"). - WithRoutingStrategy(v1alpha2.SimpleRoutingStrategy). - DNSPolicy - err := k8sClient.Create(ctx, dnsPolicy) - Expect(err).ToNot(HaveOccurred()) - - Eventually(func(g Gomega) { - err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsPolicy), dnsPolicy) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(dnsPolicy.Status.Conditions).To( - ContainElement(MatchFields(IgnoreExtras, Fields{ - "Type": Equal(string(conditions.ConditionTypeReady)), - "Status": Equal(metav1.ConditionTrue), - "Reason": Equal("GatewayDNSEnabled"), - })), - ) - - policyBackRefValue := testNamespace + "/" + dnsPolicy.Name - refs, _ := json.Marshal([]client.ObjectKey{{Name: dnsPolicy.Name, Namespace: testNamespace}}) - policiesBackRefValue := string(refs) - err = k8sClient.Get(ctx, client.ObjectKeyFromObject(gw), gw) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPolicyBackRefAnnotation, policyBackRefValue)) - g.Expect(gw.Annotations).To(HaveKeyWithValue(DNSPoliciesBackRefAnnotation, policiesBackRefValue)) - }, TestTimeoutLong, time.Second).Should(Succeed()) - - expectedRecordName := fmt.Sprintf("%s-%s", gw.GetName(), "http") - Eventually(func(g Gomega) { - dnsrecord := &v1alpha2.DNSRecord{ - ObjectMeta: metav1.ObjectMeta{ - Name: expectedRecordName, - Namespace: testNamespace, - }, - } - err := k8sClient.Get(ctx, client.ObjectKeyFromObject(dnsrecord), dnsrecord) - g.Expect(err).NotTo(HaveOccurred()) - g.Expect(dnsrecord.Status.Conditions).ToNot( - ContainElement(MatchFields(IgnoreExtras, Fields{ - "Type": Equal(string(conditions.ConditionTypeReady)), - })), - ) - g.Expect(dnsrecord.Spec.ZoneID).Should(BeNil()) - g.Expect(dnsrecord.Spec.ProviderRef).Should(Equal(dnsPolicy.Spec.ProviderRef)) - g.Expect(dnsrecord.Spec.Endpoints).Should(ConsistOf( - PointTo(MatchFields(IgnoreExtras, Fields{ - "DNSName": Equal(string(testHostname)), - "Targets": Not(BeEmpty()), - "RecordType": Equal("A"), - "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha2.TTL(60)), - })), - )) - g.Expect(dnsrecord.Status.Endpoints).Should(BeEmpty()) - }, TestTimeoutLong, time.Second, ctx).Should(Succeed()) - - }) - }) - -}) diff --git a/test/e2e/gateway_single_spoke_test.go b/test/e2e/gateway_single_spoke_test.go index 7aeca0234..2ffb669ac 100644 --- a/test/e2e/gateway_single_spoke_test.go +++ b/test/e2e/gateway_single_spoke_test.go @@ -271,7 +271,6 @@ var _ = Describe("Gateway single target cluster", func() { RoutingStrategy: mgcv1alpha2.LoadBalancedRoutingStrategy, ProviderRef: mgcv1alpha2.ProviderRef{ Name: tconfig.DNSProviderSecretName(), - Kind: mgcv1alpha2.ProviderKindSecret, }, }, } diff --git a/test/policy_integration/dnspolicy_controller_health_checks_test.go b/test/policy_integration/dnspolicy_controller_health_checks_test.go index 8de010a41..6438a2d3d 100644 --- a/test/policy_integration/dnspolicy_controller_health_checks_test.go +++ b/test/policy_integration/dnspolicy_controller_health_checks_test.go @@ -27,7 +27,6 @@ import ( var _ = Describe("DNSPolicy Health Checks", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway @@ -40,15 +39,6 @@ var _ = Describe("DNSPolicy Health Checks", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). - WithID("1234"). - WithDomainName("example.com"). - WithDescription("example.com"). - WithProviderSecret("secretname"). - ManagedZone - - Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) - gateway = testutil.NewGatewayBuilder(TestGatewayName, gatewayClass.Name, testNamespace). WithHTTPListener(TestListenerNameOne, TestHostOne). WithHTTPListener(TestListenerNameWildcard, TestHostWildcard). @@ -111,7 +101,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { }, TestTimeoutMedium, TestRetryIntervalMedium).ShouldNot(HaveOccurred()) dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). - WithProviderManagedZone(managedZone.Name). + WithProviderSecret(TestProviderSecretName). WithTargetGateway(TestGatewayName) lbHash = dns.ToBase36hash(fmt.Sprintf("%s-%s", gateway.Name, gateway.Namespace)) @@ -129,10 +119,6 @@ var _ = Describe("DNSPolicy Health Checks", func() { Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) } - if managedZone != nil { - err := k8sClient.Delete(ctx, managedZone) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - } if gatewayClass != nil { err := k8sClient.Delete(ctx, gatewayClass) Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) @@ -172,7 +158,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": HaveLen(6), }), @@ -180,7 +166,7 @@ var _ = Describe("DNSPolicy Health Checks", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": HaveLen(6), }), diff --git a/test/policy_integration/dnspolicy_controller_multi_cluster_test.go b/test/policy_integration/dnspolicy_controller_multi_cluster_test.go index 7fb2f2ce4..d085194b3 100644 --- a/test/policy_integration/dnspolicy_controller_multi_cluster_test.go +++ b/test/policy_integration/dnspolicy_controller_multi_cluster_test.go @@ -25,7 +25,6 @@ import ( var _ = Describe("DNSPolicy Multi Cluster", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway @@ -38,14 +37,6 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). - WithID("1234"). - WithDomainName("example.com"). - WithDescription("example.com"). - WithProviderSecret("secretname"). - ManagedZone - Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) - gateway = testutil.NewGatewayBuilder(TestGatewayName, gatewayClass.Name, testNamespace). WithHTTPListener(TestListenerNameOne, TestHostOne). WithHTTPListener(TestListenerNameWildcard, TestHostWildcard). @@ -108,7 +99,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { }, TestTimeoutMedium, TestRetryIntervalMedium).ShouldNot(HaveOccurred()) dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). - WithProviderManagedZone(managedZone.Name). + WithProviderSecret(TestProviderSecretName). WithTargetGateway(TestGatewayName) lbHash = dns.ToBase36hash(fmt.Sprintf("%s-%s", gateway.Name, gateway.Namespace)) @@ -126,10 +117,6 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) } - if managedZone != nil { - err := k8sClient.Delete(ctx, managedZone) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - } if gatewayClass != nil { err := k8sClient.Delete(ctx, gatewayClass) Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) @@ -155,7 +142,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ @@ -171,7 +158,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ @@ -215,7 +202,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ @@ -269,7 +256,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ @@ -347,7 +334,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ @@ -409,7 +396,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ @@ -478,7 +465,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { BeforeEach(func() { dnsPolicyBuilder. - WithLoadBalancingWeightedFor(120, []*v1alpha1.CustomWeight{ + WithLoadBalancingWeightedFor(120, []*v1alpha2.CustomWeight{ { Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -517,7 +504,7 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { It("should create dns records", func() { Eventually(func(g Gomega, ctx context.Context) { - recordList := &v1alpha1.DNSRecordList{} + recordList := &v1alpha2.DNSRecordList{} err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) @@ -526,68 +513,69 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": PointTo(Equal(TestZoneID)), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("2w705o.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf(TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("es.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("2w705o.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("2w705o.lb-" + lbHash + ".test.example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "160"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "160"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("ie.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("s07c46.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("s07c46.lb-" + lbHash + ".test.example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "100"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "100"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("s07c46.lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf(TestIPAddressOne), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("es.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("ES"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "ES"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "ES"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("IE"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".test.example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostOne), "Targets": ConsistOf("lb-" + lbHash + ".test.example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), @@ -595,68 +583,69 @@ var _ = Describe("DNSPolicy Multi Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ManagedZoneRef": HaveField("Name", "mz-example-com"), + "ZoneID": PointTo(Equal(TestZoneID)), + "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("2w705o.lb-" + lbHash + ".example.com"), "Targets": ConsistOf(TestIPAddressTwo), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("es.lb-" + lbHash + ".example.com"), "Targets": ConsistOf("2w705o.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("2w705o.lb-" + lbHash + ".example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "160"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "160"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("ie.lb-" + lbHash + ".example.com"), "Targets": ConsistOf("s07c46.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("s07c46.lb-" + lbHash + ".example.com"), - "RecordTTL": Equal(v1alpha1.TTL(60)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "weight", Value: "100"}}), + "RecordTTL": Equal(v1alpha2.TTL(60)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "weight", Value: "100"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("s07c46.lb-" + lbHash + ".example.com"), "Targets": ConsistOf(TestIPAddressOne), "RecordType": Equal("A"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(60)), + "RecordTTL": Equal(v1alpha2.TTL(60)), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("IE"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "IE"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".example.com"), "Targets": ConsistOf("es.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("ES"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "ES"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "ES"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal("lb-" + lbHash + ".example.com"), "Targets": ConsistOf("ie.lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal("default"), - "RecordTTL": Equal(v1alpha1.TTL(300)), - "ProviderSpecific": Equal(v1alpha1.ProviderSpecific{{Name: "geo-code", Value: "*"}}), + "RecordTTL": Equal(v1alpha2.TTL(300)), + "ProviderSpecific": Equal(v1alpha2.ProviderSpecific{{Name: "geo-code", Value: "*"}}), })), PointTo(MatchFields(IgnoreExtras, Fields{ "DNSName": Equal(TestHostWildcard), "Targets": ConsistOf("lb-" + lbHash + ".example.com"), "RecordType": Equal("CNAME"), "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha1.TTL(300)), + "RecordTTL": Equal(v1alpha2.TTL(300)), })), ), }), diff --git a/test/policy_integration/dnspolicy_controller_single_cluster_test.go b/test/policy_integration/dnspolicy_controller_single_cluster_test.go index c137269d3..1dff6f126 100644 --- a/test/policy_integration/dnspolicy_controller_single_cluster_test.go +++ b/test/policy_integration/dnspolicy_controller_single_cluster_test.go @@ -22,7 +22,6 @@ import ( var _ = Describe("DNSPolicy Single Cluster", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway @@ -35,14 +34,6 @@ var _ = Describe("DNSPolicy Single Cluster", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). - WithID("1234"). - WithDomainName("example.com"). - WithDescription("example.com"). - WithProviderSecret("secretname"). - ManagedZone - Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) - gateway = testutil.NewGatewayBuilder(TestGatewayName, gatewayClass.Name, testNamespace). WithHTTPListener(TestListenerNameOne, TestHostOne). WithHTTPListener(TestListenerNameWildcard, TestHostWildcard). @@ -79,7 +70,7 @@ var _ = Describe("DNSPolicy Single Cluster", func() { }, TestTimeoutMedium, TestRetryIntervalMedium).Should(Succeed()) dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). - WithProviderManagedZone(managedZone.Name). + WithProviderSecret(TestProviderSecretName). WithTargetGateway(TestGatewayName) lbHash = dns.ToBase36hash(fmt.Sprintf("%s-%s", gateway.Name, gateway.Namespace)) @@ -97,10 +88,6 @@ var _ = Describe("DNSPolicy Single Cluster", func() { Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) } - if managedZone != nil { - err := k8sClient.Delete(ctx, managedZone) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - } if gatewayClass != nil { err := k8sClient.Delete(ctx, gatewayClass) Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) @@ -121,41 +108,36 @@ var _ = Describe("DNSPolicy Single Cluster", func() { err := k8sClient.List(ctx, recordList, &client.ListOptions{Namespace: testNamespace}) g.Expect(err).NotTo(HaveOccurred()) g.Expect(recordList.Items).To(HaveLen(2)) - g.Expect(recordList.Items).To( - ContainElements( - MatchFields(IgnoreExtras, Fields{ - "ObjectMeta": HaveField("Name", recordName), - "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), - "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), - "Endpoints": ConsistOf( - PointTo(MatchFields(IgnoreExtras, Fields{ - "DNSName": Equal(TestHostOne), - "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), - "RecordType": Equal("A"), - "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha2.TTL(60)), - })), - ), - }), - }), - MatchFields(IgnoreExtras, Fields{ - "ObjectMeta": HaveField("Name", wildcardRecordName), - "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), - "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), - "Endpoints": ConsistOf( - PointTo(MatchFields(IgnoreExtras, Fields{ - "DNSName": Equal(TestHostWildcard), - "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), - "RecordType": Equal("A"), - "SetIdentifier": Equal(""), - "RecordTTL": Equal(v1alpha2.TTL(60)), - })), - ), - }), - }), - )) + + dnsRecord := &v1alpha2.DNSRecord{} + err = k8sClient.Get(ctx, client.ObjectKey{Name: recordName, Namespace: testNamespace}, dnsRecord) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsRecord.Spec.ZoneID).To(PointTo(Equal("1234"))) + g.Expect(dnsRecord.Spec.ProviderRef).To(Equal(dnsPolicy.Spec.ProviderRef)) + g.Expect(dnsRecord.Spec.Endpoints).To(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(TestHostOne), + "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + + err = k8sClient.Get(ctx, client.ObjectKey{Name: wildcardRecordName, Namespace: testNamespace}, dnsRecord) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(dnsRecord.Spec.ZoneID).To(PointTo(Equal("1234"))) + g.Expect(dnsRecord.Spec.ProviderRef).To(Equal(dnsPolicy.Spec.ProviderRef)) + g.Expect(dnsRecord.Spec.Endpoints).To(ConsistOf( + PointTo(MatchFields(IgnoreExtras, Fields{ + "DNSName": Equal(TestHostWildcard), + "Targets": ContainElements(TestIPAddressOne, TestIPAddressTwo), + "RecordType": Equal("A"), + "SetIdentifier": Equal(""), + "RecordTTL": Equal(v1alpha2.TTL(60)), + })), + )) + }, TestTimeoutMedium, TestRetryIntervalMedium, ctx).Should(Succeed()) }) @@ -180,7 +162,7 @@ var _ = Describe("DNSPolicy Single Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", recordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ConsistOf( PointTo(MatchFields(IgnoreExtras, Fields{ @@ -219,7 +201,7 @@ var _ = Describe("DNSPolicy Single Cluster", func() { MatchFields(IgnoreExtras, Fields{ "ObjectMeta": HaveField("Name", wildcardRecordName), "Spec": MatchFields(IgnoreExtras, Fields{ - "ZoneID": Equal(managedZone.Spec.ID), + "ZoneID": PointTo(Equal(TestZoneID)), "ProviderRef": Equal(dnsPolicy.Spec.ProviderRef), "Endpoints": ContainElements( PointTo(MatchFields(IgnoreExtras, Fields{ diff --git a/test/policy_integration/dnspolicy_controller_test.go b/test/policy_integration/dnspolicy_controller_test.go index f5c31d6a4..bfe36a5fe 100644 --- a/test/policy_integration/dnspolicy_controller_test.go +++ b/test/policy_integration/dnspolicy_controller_test.go @@ -28,7 +28,6 @@ import ( var _ = Describe("DNSPolicy", func() { var gatewayClass *gatewayapiv1.GatewayClass - var managedZone *v1alpha2.ManagedZone var testNamespace string var dnsPolicyBuilder *testutil.DNSPolicyBuilder var gateway *gatewayapiv1.Gateway @@ -41,16 +40,8 @@ var _ = Describe("DNSPolicy", func() { gatewayClass = testutil.NewTestGatewayClass("foo", "default", "kuadrant.io/bar") Expect(k8sClient.Create(ctx, gatewayClass)).To(Succeed()) - managedZone = testutil.NewManagedZoneBuilder("mz-example-com", testNamespace). - WithID("1234"). - WithDomainName("example.com"). - WithDescription("example.com"). - WithProviderSecret("secretname"). - ManagedZone - Expect(k8sClient.Create(ctx, managedZone)).To(Succeed()) - dnsPolicyBuilder = testutil.NewDNSPolicyBuilder("test-dns-policy", testNamespace). - WithProviderManagedZone(managedZone.Name) + WithProviderSecret(TestProviderSecretName) }) AfterEach(func() { @@ -63,10 +54,6 @@ var _ = Describe("DNSPolicy", func() { Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) } - if managedZone != nil { - err := k8sClient.Delete(ctx, managedZone) - Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) - } if gatewayClass != nil { err := k8sClient.Delete(ctx, gatewayClass) Expect(client.IgnoreNotFound(err)).ToNot(HaveOccurred()) diff --git a/test/policy_integration/helper_test.go b/test/policy_integration/helper_test.go index 4b7f8391b..75bd6164f 100644 --- a/test/policy_integration/helper_test.go +++ b/test/policy_integration/helper_test.go @@ -24,8 +24,9 @@ const ( TestListenerNameTwo = "test-listener-2" TestIPAddressOne = "172.0.0.1" TestIPAddressTwo = "172.0.0.2" - defaultNS = "default" - providerCredential = "secretname" + TestProviderSecretName = "secretname" + TestZoneID = "1234" + TestZoneDNSName = "example.com" ) type testHealthServer struct { diff --git a/test/policy_integration/managedzone_controller_test.go b/test/policy_integration/managedzone_controller_test.go deleted file mode 100644 index 343a3651b..000000000 --- a/test/policy_integration/managedzone_controller_test.go +++ /dev/null @@ -1,99 +0,0 @@ -//go:build integration - -// /* -// Copyright 2023 The MultiCluster Traffic Controller Authors. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// */ - -package policy_integration - -import ( - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" - testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" - //+kubebuilder:scaffold:imports -) - -var _ = Describe("ManagedZoneReconciler", func() { - Context("testing ManagedZone controller", func() { - var managedZone *v1alpha2.ManagedZone - - BeforeEach(func() { - managedZone = &v1alpha2.ManagedZone{ - ObjectMeta: metav1.ObjectMeta{ - Name: testutil.Domain, - Namespace: defaultNS, - }, - Spec: v1alpha2.ManagedZoneSpec{ - ID: testutil.Pointer(testutil.Domain), - DomainName: testutil.Domain, - ProviderRef: v1alpha2.ProviderRef{ - Name: providerCredential, - Kind: v1alpha2.ProviderKindSecret, - }, - }, - } - }) - - AfterEach(func() { - // Clean up managedZones - mzList := &v1alpha2.ManagedZoneList{} - err := k8sClient.List(ctx, mzList, client.InNamespace(defaultNS)) - Expect(err).NotTo(HaveOccurred()) - for _, mz := range mzList.Items { - err = k8sClient.Delete(ctx, &mz) - Expect(client.IgnoreNotFound(err)).NotTo(HaveOccurred()) - } - }) - - It("should accept a managed zone for this controller and allow deletion", func() { - Expect(k8sClient.Create(ctx, managedZone)).To(BeNil()) - - createdMZ := &v1alpha2.ManagedZone{} - - Eventually(func() error { - return k8sClient.Get(ctx, client.ObjectKey{Namespace: managedZone.Namespace, Name: managedZone.Name}, createdMZ) - }, TestTimeoutMedium, TestRetryIntervalMedium).ShouldNot(HaveOccurred()) - - Expect(k8sClient.Delete(ctx, managedZone)).To(BeNil()) - - Eventually(func() error { - err := k8sClient.Get(ctx, client.ObjectKey{Namespace: managedZone.Namespace, Name: managedZone.Name}, createdMZ) - if err != nil && !errors.IsNotFound(err) { - return err - } - return nil - }, TestTimeoutMedium, TestRetryIntervalMedium).Should(BeNil()) - }) - - It("should reject a managed zone with an invalid domain name", func() { - invalidDomainNameManagedZone := &v1alpha2.ManagedZone{ - ObjectMeta: metav1.ObjectMeta{ - Name: "invalid_domain", - Namespace: defaultNS, - }, - Spec: v1alpha2.ManagedZoneSpec{ - ID: testutil.Pointer("invalid_domain"), - DomainName: "invalid_domain", - }, - } - err := k8sClient.Create(ctx, invalidDomainNameManagedZone) - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("spec.domainName in body should match")) - }) - }) -}) diff --git a/test/policy_integration/suite_test.go b/test/policy_integration/suite_test.go index a362afae7..1bb3e2e56 100644 --- a/test/policy_integration/suite_test.go +++ b/test/policy_integration/suite_test.go @@ -45,10 +45,10 @@ import ( "github.com/Kuadrant/multicluster-gateway-controller/pkg/apis/v1alpha2" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnshealthcheckprobe" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/dnspolicy" - . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/managedzone" . "github.com/Kuadrant/multicluster-gateway-controller/pkg/controllers/tlspolicy" "github.com/Kuadrant/multicluster-gateway-controller/pkg/dns" "github.com/Kuadrant/multicluster-gateway-controller/pkg/health" + testutil "github.com/Kuadrant/multicluster-gateway-controller/test/util" //+kubebuilder:scaffold:imports ) @@ -63,7 +63,14 @@ var ( cancel context.CancelFunc logger logr.Logger providerFactory = func(ctx context.Context, providerAccessor v1alpha2.ProviderAccessor) (dns.Provider, error) { - return &dns.FakeProvider{}, nil + return &dns.FakeProvider{ + Zones: []*dns.Zone{ + { + ID: testutil.Pointer(TestZoneID), + DNSName: testutil.Pointer(TestZoneDNSName), + }, + }, + }, nil } ) @@ -180,13 +187,6 @@ var _ = BeforeSuite(func() { }).SetupWithManager(k8sManager) Expect(err).ToNot(HaveOccurred()) - err = (&ManagedZoneReconciler{ - Client: k8sManager.GetClient(), - Scheme: k8sManager.GetScheme(), - DNSProvider: providerFactory, - }).SetupWithManager(k8sManager) - Expect(err).ToNot(HaveOccurred()) - err = (&DNSHealthCheckProbeReconciler{ Client: k8sManager.GetClient(), HealthMonitor: monitor, diff --git a/test/util/test_dnspolicy_types.go b/test/util/test_dnspolicy_types.go index 03da37ec0..59469e74d 100644 --- a/test/util/test_dnspolicy_types.go +++ b/test/util/test_dnspolicy_types.go @@ -67,24 +67,9 @@ func (t *DNSPolicyBuilder) WithTargetGateway(gwName string) *DNSPolicyBuilder { //ProviderRef -func (t *DNSPolicyBuilder) WithProviderManagedZone(mzName string) *DNSPolicyBuilder { - return t.WithProviderRef(v1alpha2.ProviderRef{ - Name: mzName, - Kind: v1alpha2.ProviderKindManagedZone, - }) -} - func (t *DNSPolicyBuilder) WithProviderSecret(secretName string) *DNSPolicyBuilder { return t.WithProviderRef(v1alpha2.ProviderRef{ Name: secretName, - Kind: v1alpha2.ProviderKindSecret, - }) -} - -func (t *DNSPolicyBuilder) WithProviderNone(name string) *DNSPolicyBuilder { - return t.WithProviderRef(v1alpha2.ProviderRef{ - Name: name, - Kind: v1alpha2.ProviderKindNone, }) } @@ -133,61 +118,3 @@ func (t *DNSPolicyBuilder) WithLoadBalancingGeoFor(defaultGeo string) *DNSPolicy DefaultGeo: defaultGeo, }) } - -// ManagedZoneBuilder wrapper for ManagedZone builder helper -type ManagedZoneBuilder struct { - *v1alpha2.ManagedZone -} - -func NewManagedZoneBuilder(name, ns string) *ManagedZoneBuilder { - return &ManagedZoneBuilder{ - &v1alpha2.ManagedZone{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Namespace: ns, - }, - Spec: v1alpha2.ManagedZoneSpec{}, - }, - } -} - -func (t *ManagedZoneBuilder) WithID(id string) *ManagedZoneBuilder { - t.Spec.ID = &id - return t -} - -func (t *ManagedZoneBuilder) WithDomainName(domainName string) *ManagedZoneBuilder { - t.Spec.DomainName = domainName - return t -} - -func (t *ManagedZoneBuilder) WithDescription(description string) *ManagedZoneBuilder { - t.Spec.Description = &description - return t -} - -func (t *ManagedZoneBuilder) WithProviderRef(providerRef v1alpha2.ProviderRef) *ManagedZoneBuilder { - t.Spec.ProviderRef = providerRef - return t -} - -func (t *ManagedZoneBuilder) WithProviderManagedZone(mzName string) *ManagedZoneBuilder { - return t.WithProviderRef(v1alpha2.ProviderRef{ - Name: mzName, - Kind: v1alpha2.ProviderKindManagedZone, - }) -} - -func (t *ManagedZoneBuilder) WithProviderSecret(secretName string) *ManagedZoneBuilder { - return t.WithProviderRef(v1alpha2.ProviderRef{ - Name: secretName, - Kind: v1alpha2.ProviderKindSecret, - }) -} - -func (t *ManagedZoneBuilder) WithProviderNone(secretName string) *ManagedZoneBuilder { - return t.WithProviderRef(v1alpha2.ProviderRef{ - Name: secretName, - Kind: v1alpha2.ProviderKindNone, - }) -} From bf48c1f85b56d2feb5fc941c896376801718f79c Mon Sep 17 00:00:00 2001 From: Michael Nairn Date: Thu, 25 Jan 2024 21:45:36 +0000 Subject: [PATCH 3/4] Remove ManagedZone API --- docs/managed-zone.md | 87 ----------------------------------- docs/reference/managedzone.md | 46 ------------------ 2 files changed, 133 deletions(-) delete mode 100644 docs/managed-zone.md delete mode 100644 docs/reference/managedzone.md diff --git a/docs/managed-zone.md b/docs/managed-zone.md deleted file mode 100644 index 012f3825f..000000000 --- a/docs/managed-zone.md +++ /dev/null @@ -1,87 +0,0 @@ -# Creating and using a ManagedZone resource. - -## What is a ManagedZone -A ManagedZone is a reference to a [DNS zone](https://en.wikipedia.org/wiki/DNS_zone). -By creating a ManagedZone we are instructing the MGC about a domain or subdomain that can be used as a host by any gateways in the same namespace. -These gateways can use a subdomain of the ManagedZone. - -If a gateway attempts to a use a domain as a host, and there is no matching ManagedZone for that host, then that host on that gateway will fail to function. - -A gateway's host will be matched to any ManagedZone that the host is a subdomain of, i.e. `test.api.hcpapps.net` will be matched by any ManagedZone (in the same namespace) of: `test.api.hcpapps.net`, `api.hcpapps.net` or `hcpapps.net`. - -When MGC wants to create the DNS Records for a host, it will create them in the most exactly matching ManagedZone. -e.g. given the zones `hcpapps.net` and `api.hcpapps.net` the DNS Records for the host `test.api.hcpapps.net` will be created in the `api.hcpapps.net` zone. - -### Delegation -Delegation allows you to give control of a subdomain of a root domain to MGC while the root domain has it's DNS zone elsewhere. - -In the scenario where a root domain has a zone outside Route53, e.g. `external.com`, and a ManagedZone for `delegated.external.com` is required, the following steps can be taken: -- Create the ManagedZone for `delegated.external.com` and wait until the status is updated with an array of nameservers (e.g. `ns1.hcpapps.net`, `ns2.hcpapps.net`). -- Copy these nameservers to your root zone for `external.com`, you can create a NS record for each nameserver against the `delegated.external.com` record. - -For example: -``` -delegated.external.com. 3600 IN NS ns1.hcpapps.net. -delegated.external.com. 3600 IN NS ns2.hcpapps.net. -``` - -Now, when MGC creates a DNS record in it's Route53 zone for `delegated.external.com`, it will be resolved correctly. -### Creating a ManagedZone -To create a `ManagedZone`, you will first need to create a DNS provider Secret. To create one, see our [DNS Provider](dnspolicy/dns-provider.md) setup guide, and make note of your provider's secret name. - - -#### Example ManagedZone -To create a bew `ManagedZone` with AWS Route, with a DNS Provider secret named `my-aws-credentials`: - -```bash -kubectl apply -f - < Date: Thu, 25 Jan 2024 21:46:51 +0000 Subject: [PATCH 4/4] Remove DNSPolicy demo dir --- .../dns-policy/Kuadrant - DNSPolicy (1).png | Bin 185933 -> 0 bytes .../dns-policy/Kuadrant - DNSPolicy (2).png | Bin 246277 -> 0 bytes .../dns-policy/Kuadrant - DNSPolicy (3).png | Bin 108197 -> 0 bytes .../demos/dns-policy/Kuadrant - DNSPolicy.png | Bin 32181 -> 0 bytes docs/demos/dns-policy/cleanup.sh | 31 -- docs/demos/dns-policy/default.png | Bin 149759 -> 0 bytes docs/demos/dns-policy/dnspolicy-demo.md | 179 ----------- docs/demos/dns-policy/dnspolicy.tape | 294 ------------------ .../resources/dnspolicy_prod-web-default.yaml | 13 - .../dnspolicy_prod-web-weighted-geo.yaml | 24 -- .../dnspolicy_prod-web-weighted.yaml | 22 -- docs/demos/dns-policy/resources/echo-app.yaml | 50 --- .../resources/gateway_prod-web-istio.yaml | 20 -- .../resources/gateway_prod-web.yaml | 20 -- ...-cluster-set-binding_gateway-clusters.yaml | 7 - .../managed-cluster-set_gateway-clusters.yaml | 10 - .../resources/managedzone_jm.hcpapps.net.yaml | 11 - .../resources/placement_http-gateway.yaml | 9 - .../resources/tlspolicy_prod-web.yaml | 14 - docs/demos/dns-policy/script.sh | 100 ------ .../dns-policy/weighted-geo-dnschecker.png | Bin 403292 -> 0 bytes docs/demos/dns-policy/weighted-geo.png | Bin 186773 -> 0 bytes docs/demos/dns-policy/weighted.png | Bin 149643 -> 0 bytes 23 files changed, 804 deletions(-) delete mode 100644 docs/demos/dns-policy/Kuadrant - DNSPolicy (1).png delete mode 100644 docs/demos/dns-policy/Kuadrant - DNSPolicy (2).png delete mode 100644 docs/demos/dns-policy/Kuadrant - DNSPolicy (3).png delete mode 100644 docs/demos/dns-policy/Kuadrant - DNSPolicy.png delete mode 100755 docs/demos/dns-policy/cleanup.sh delete mode 100644 docs/demos/dns-policy/default.png delete mode 100644 docs/demos/dns-policy/dnspolicy-demo.md delete mode 100644 docs/demos/dns-policy/dnspolicy.tape delete mode 100644 docs/demos/dns-policy/resources/dnspolicy_prod-web-default.yaml delete mode 100644 docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted-geo.yaml delete mode 100644 docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted.yaml delete mode 100644 docs/demos/dns-policy/resources/echo-app.yaml delete mode 100644 docs/demos/dns-policy/resources/gateway_prod-web-istio.yaml delete mode 100644 docs/demos/dns-policy/resources/gateway_prod-web.yaml delete mode 100644 docs/demos/dns-policy/resources/managed-cluster-set-binding_gateway-clusters.yaml delete mode 100644 docs/demos/dns-policy/resources/managed-cluster-set_gateway-clusters.yaml delete mode 100644 docs/demos/dns-policy/resources/managedzone_jm.hcpapps.net.yaml delete mode 100644 docs/demos/dns-policy/resources/placement_http-gateway.yaml delete mode 100644 docs/demos/dns-policy/resources/tlspolicy_prod-web.yaml delete mode 100644 docs/demos/dns-policy/script.sh delete mode 100644 docs/demos/dns-policy/weighted-geo-dnschecker.png delete mode 100644 docs/demos/dns-policy/weighted-geo.png delete mode 100644 docs/demos/dns-policy/weighted.png diff --git a/docs/demos/dns-policy/Kuadrant - DNSPolicy (1).png b/docs/demos/dns-policy/Kuadrant - DNSPolicy (1).png deleted file mode 100644 index 572fc7d05fdf346ee3049357f7e0846a8688dd85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185933 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

@rgyAmVXR2=ef2VKGbf$+Rj_^F|nG*Q^HsZ z7>R-S`l;eBjScedOu>elSskILw54%?(=Kvp9!Cn!D?go1Obj-OEgDVm({T8ZS-nB0AJPZWo;hCCt7 z|B6Fj03L!Zy9;*?`dh%yg6vF>i7!hNA&LN&_*f;-z#vr#Nh=39cgNTtF7R;n1AXgx zc7Zdz&+OOJWIb#N|`1^Krpz5geyyUy;S>Q~c0L-_(xYdUOyW5w;RNq;{!WiyrQ ztV9xz`!5NN9fuXA!EcsXa?k zztl28X6?!SdWL__y!+b?iW95WO)2zv*b%XdYv46mZNv)g2bqP0G@$LrD>;Z^-+(nI zP{K|spl9TemvM(N%v{wx_T^%L~*?_}|*c7Ixc z#!s``q;?k@FM&NIFmDH=jFXe$RdtGTq#>Sw_q#I$0(^ct1?XhH_d4yTn;P{6H2jg^ zK)ZWui8zP67QX}#UbGLgqX|tz2Y`Tml*2y1=+Z#H0LO%Nx$a}Sm+kI1b~xYuDH1LQ zwBEdM2)uAdQGeGsuKlK9@mzi$&#HFEH?xBiN5#w{#O=+RcM-Xe1vlf)2yr^52(9W~ z4lE$?YF=Fs=iO@LX|OlWScoWdLok+8xYv>2oPV%!42(;1_#7#h`W+_RM_Xq( zNHp~8Fs$8YkjMqbpoW`_IAswb$92d61>Hp&%QddJSseMc;l7x6%OC>PZ~X+7S!K6Aaj;jf$C_VJslj$Qy(3ul|*V$p^~MJT}$`fL_Adn-`Zyxc^^R{oghlBfUs>BK9j!O zl5R9SaWa@#@73&nFNZ}605ULxh2t=BFH@OzDV$TBicR!7_6NF`tNyAmd*@1w2tY9e~mmC$Xiwb64Vtl*|}+J z{fzltX?zUK{e?5kAMF9&%kY!gvX7)1q`~s50YI&yV{=3Lc+;-mNro_n0mo4{X|LC} zDFBN5!PZ=IfLq^eP0<*>(gOaf_n!OxvTukHY+OR`F<1T&YOAAk@8+ot;^Cx+EBn?CNm2P&SKMbb<^g6{iig z=e_+6NEe?MX@%s1C8K1|uZGUeFL=}b>A?K!RMQT7QkVmOokY;1ewrE1&Ta>+9)T}I zMj19pqK8Ijw$2=@VYJoMKBPyIaLL~D2LWdIlEMK~Wqg2?DrN{H9~{Gqn%7}gToN#m zVjQJ35ELai_0)T?y^|8@9UhS*WL$Uy?irWHyfgVFZnEQEf5Dgl=Khu??h@`LPqYB|{kFMQQWXsc?T#qxV%1N^tK+ z->b-`Q^yZA+L9Vx{MVtDDg9KK1R`#~)$7?dNd?BeW`N7{bvTJrG~ik05tu&+2OwWOx>j8XkScn#p>a~OnRbSUTwd|d2oRmG>- z(^_|E7%?*1s3P*ld`_iQ_Z1jtw6D`NZa1cKAI#X`r=RCr8$3R3l_He>TFo=%-fr~`qpF$-jIus0VYe<_;+(0nSs;_qe6Rpl2 zWQ>7O><0KLfyEVe{kC9lx1-iWS{#Dp)mS0Af2Cz;+0|D<+;smkB2kk0vtAaQy`{TT zmlg3?G>_p2F@L6@r+p<3d9S_P2aEAfEtLWXlpD)CMU7GyRU=}f$k8DIX0Lmg`7DAH z$;BZp*3H2=J&|(iYV$m@PFeP#b}lH?o8aO7jxWsT!i%tdg3L!t_6Q&wjUN)Ky%6%o zM|zJ3)~|?DIPfYHSWk;AFIeh8EN$6IOHq+ye~H z7wPB=ojhK%ltNewzj5G=PALa9Rd#@e&n%8JtU5##lBPDNpx*MFSB^x_>yt=$BxQ{eO0Y5h$&4YT=l<10-y0-loQ-z<6v!DQ{da(V@VCC_4w4 z+&QB`11Pp_PB%XCKDoCx)o;BC#uK;;ZkV=4Q^C|Nc*2d(yX8J<+iw(lw7f%yrl&?t zm@4Kg$Hl3R_k%N&w-^CJ>)7o?cMI^h)PV=T;OF3o0k@KCeooDx6StWHJGWixV0g1t z!G>*-}k=HBqjNhvf{W^Q;k@|OS;tT9tN%m7`CC`I} z{j%die{%(QkyWUyAU_M#{t~j<$LAJ-FalpXF{K7j&><63aQ3ZP7U%W11}?I:{= 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
yi_24mUDTTc=X-n1`AM$rSPHB)(ht)f5L6 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

KT@}{nme}Eb5{<1L)22QD&2TDMr!R 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 diff --git a/docs/demos/dns-policy/Kuadrant - DNSPolicy.png b/docs/demos/dns-policy/Kuadrant - DNSPolicy.png deleted file mode 100644 index 50978b98a23365f6c7a8295f9719add4708ab355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32181 zcmeFZ`6HBj|35ycBq1%7wGt{@CC0u~C`*zggv!3lZWxrJvQB&iixU=RW_y_m|@r&M{rr^?JRY%VT+7p5M5x!my8R9}0zHxOVl*O%#gO z4~5z#v6mYDk44_?!zdKi``Q)7TOLN!{d8~cy2cY9O2r36K0+yKDeSr+_$p3xKefsg z4zp`lzaCUPp!C(vLsN-&i6bC*)imJY{aviLSX_4YJ$Uf= zqf-j*7RFv0?z-gi6kdK;o*Rb!Rg*b&`$uB9y+KBzkxb6pDKK)i%@4 zPXyLomODRO+Dq8^{^S6T3i)C02?ZMD`+-Y-dywzPpP(3!?+SaV*pTmj2dFP1-%%(2 zy}-YF@NXRan+yNegMVw{zkLCz1OLXszkBd+9Q=zD|HaDx@&%+0{2K@V?!kZJz{$4n z(?cy0nUy|go6Z~!O({RKe8bqD3!Jrs@EKe#9Rc-nI8}aYf(t*7_FX~`uKqx`gfrga z?9N%UF{s*XE0bgp(xU?s?pMjDK%)@a&#zEoQI>GG71Ka55Y11S&FIc#weRY%;zS5K zR@HBhA4mB$zuBLr<5||Fo6YSO8o6pe(qh&rVipbDokeF6;!ipO<=SbQk*Z9#m)zD< zoM}!;mYcIAbT;Z~5B9zCK`wQ8=Tc_exL(n2J+e^LwoiK_xzsDpP}{wFlkBR&wsXJB z$o)n+anjor%cZWHQ|<#@u5lZV)g_7jZGA(xIgp!CAvb&T&~G5JR&G&$$;{zyqOk*k z93EwFH`Rvd4@9AzPuT1{b+-N1x2yoeAZP2~I3xGkES&;&{R;(l>fU+1YwU zCniuvQ9`#cCsC-nC=fX$>jV`Xrhduk5Beil`x&!NZ!W%R?P*dj{Sf8b&{Je%(Ga84 z>MUyh>rRJNH%&v{iWdyb#SC~q}r zIuHwQFn2wLPbkRktc8oJOeh>{Y1aBZ?C>Y}*h3#XY=b~U{K1Pa)j+K|&J9#-PqYv|UiN(mMIIEYg(nRa62 zfuH^C&uup|6GG28r^&D2bqCq|9c|s6Z#L1OAc6>BBRkQ{%Zf9QE?^RL*d+d1Hw=F`82U=gm31rU z{=}HwgzRaa-eS9rKde=6eYBRu;T#2WKAn`cYBDS6USD4qZIThiKYD!Y)-4XVuKQJ+ zqavcw>KHWw{eO4UYBw>mahjwXBPS=|HnS9Z-duUBKL{Q5@H@wGD$LSY17%T!l0Tl{ zm4d$Ua&mG~diGONaxyRe7?Jb8d;Nsk#m1s@O9UNCUp}{#V`8e&-(H{_wQ!R7=m1Vy zO3J=!YZ<%T%`fYv_?mt(aeE@MrPr_WZ~La|XFv6;qoT#-KJ%3G%2C~3M@oGNrx}Ka z=)**aRyW_?TnprIx{8^6d`m~i(5aS}fq?Q-yoio8Nbio5sl| zZ3p?@DXA3n7bd5aC zFfB5LB_*1%;xmSG7+uVd$NM>@NC{rEwUMKgllP7@~-*um= z@*-I;O1*)6M=o;FpD|_h+*TeVMJXhs$VwkNWXHce-d)4#ewXTmgYL#m$zT;_qY8~i zr=n@F8h$A*?QLywn91~-mA;KZ%C@BQ*e47XP6eq4=TS5+EAi+Q!Cp*b^%m5Pnxmpg zvtB{sMP_w&C+;jD2Z1HG>(+#F#wKJQuVqw!d+vUHq!64YiYlhXbr8G4aO}bfb=llUqrgj zv9oUKqqKA^+0gE!{d6@s+(@v*K=!bxg2jdCQs;3-c5y*jwI&_NLl=VL(svG z|8pS)YL}Isac-ew&vuSEri>!$U>8kpe7~Eh&R5_#^i})1B(JQ}&NX~ihnVD6?_t;v zsKZ&ndTyvAMfT`kDyiP~A~S=rN;88!w%F@GeonY1#uZsR8(3iG)byIEU7VelQsv0$ zb#-;5!?IC#o!t8#s;H@{{qsu16;!`rB4ue!XuO@VZ@o`e_-*%mO_ALM&1tjmbOa3z zjgmg6dLyry2p^v&-p<}{&krRZSbzHW1vOVutv8WNWko$FI?jvk!NAj$GIeSi7K>r` zCui-YDoaWl)~#A^KM~0B+Q+GBrl`|sxF*cFz+3~ve&aCp#bjt6eh*-ykE_VtFrs@WBEcElZ%TV)aWL8%I5hR4sC@3we+kknJrSQvFB(6NgQ`) zm!&GwMZcdyTJ!ckLU&G1L+{iQ@#dY4KG{a-x-FaJsd}O~;T@7_Id@B)01r*1lJ6=h zeW&A(`*`omW4O$-|G5n0hp*8_U*y^ZJ+I^7czg}CcpGlxf(JHU>mI7N=V(Yex`q)6 zBv*rC+h~c0e|iU&i%G4RwD<2HbbY*EwKd})EnUyQrTyZ6uKI_TIJ@rM`KKYtMm1fI z|NnYg(Y?!S-c0xJ`q?`;P--=OTKJ7+Jbpi-y&f+mhNn6$_4k-g`bkx`(a0{3yyS{W4dHTm|14xayCC4qAdiMG;o4q_pv>R4aM<03j5&}sZy`6ek1@FAPd#~0kGLCXY z;I?f~p_RLws1gFVc9J>CawqQdW|{`2Jlr(OCL;+)HypR{O%Am@IuQZSQ2kw99#C?a z*e;&lB66vk9~HB1gVKLG=JKuJ??M@y6DiZ>>1SPfm81LZe| zkafw-ej0vVmEh8HjeG5WtNdE6=4+M8Yx{-5Q26`R0dNhC1evwsUVF9W zNwwa7msX9zje(U&VZ)eOQ#h%o|r(zn#$;IkxPyr#MmP3iRA z>ZGiOQQlrKt1}6cEyj>1D`hFt0EzypXUcm`kzP*n_ zs9j17X4L;7Y3dc5NMJZ4*nj*Iw#{f2e6|(Qs?qa|Y!}nY z%GUj87(FN(gT7PQC2~M(YMGN$gf98nTUxH>Qr2@xbahRzD+89C?(i&5SKvrGiOosj zmycdBz3TK40=hO-$3AMa8iIDMAaP4DG2Yv`c7JZ=`XuaNESvy0hWM`5EL=T7j;Hjs zcFeS<)0qTlg(dxNz3-KR-0)+@n2F?c?bMVoN%`9Ckwb3A-V5K2H~+9s@Q>ez(5Y_r49)u92^ww%4clHDU^vY|n^PZ8~B2QTJAM2-(S9 z#1Zu9l!5e|QAO#8P5{*-2P!w)*44{I-(*xW5aQ$GnPlca@08)YOwghBvx`qN`L0%9 z_v%4IMo)Ja3~tT3r=p_+p=-=}k4q!x85fNpSNQ2=+>1lkCGL|a+b53ExA*nk)z%K5 z{?$9Uy-fPC==Pb4_Aabm)S|I(t%CzF8-jjYm>QZOls6ph$SE4JDeBP|?E5~M%C{QS zX*%_UNlm8F9paOrY%WO$*2BZAaCw?iwpKLd<>j?gulI}T@y#s&9FFNwt(hYnx)1R(_hbX>OGa)vZ$JWSk%HZ8Bm5i1D+6As+%buRn`7v;tZdl5 za{AsYi}o>MHXV(r!m$m)#+93q2KJH@AHw(jtgKCzwr)$~-Xf}G-p&S=Rh2w)Pg8RA z%?OWxti#)p_G@#yP}2hl1YqXGiFQx-bTrOIZugAO0v?$y-T=>dNTmzm5qv^=H8wUd`j*xgviFP;OFpwW zabi#vzWCD`1FAFZU23h15U7DJpb)Dj`P+|X7B(8^fbX@VAwk8puUPou&m<>-e`F-R z@a+&nK}S%XS$eHiRG5jDWL-nocAt%zs06(G>!{x?Y9fHx?>jBLx#4%cSj>6sSD5z* zk8H-vr@M(GXMmZMkGxh}?sIM;1>?014YA#3Q9=gAf|6_D{F=g9jB{FjDEx!(FPeO} zmo5kFKl58^E%SBQwBtfd6?j2XT>o;4u^kaoJqW1reaI%}4WIVl> z(9qC;?sL2>616dthevNM$y1y!7+_R3e%c?!gDh^`eDA(#=(`!m4;Y!Zc0kZDQXuluZ>*attn^$WYUwv2XNs{ zFOecq9mwQc&o0Z#=Q$X{CN^2ipSU^USG8Lu|M`faYYjJc)_`WU6^t!v>PG-XJ(ppBbGST%>`U@BKYJUSjqWC&j*ZP*uvzUox^{h^ z&f}x77Vh*wSBg_o#)wH_*PD7fmj`_*Q@K^!IDbY}%5i!84&HMg@U%!2@g8XZc)uFx z>y0jaLC`UrfxbR;xls3tVb0x878CXm8Q8`9poP^kvVP3wl3eaGkzXloI^u0S0hx@H z5l#6m5`_D}hUV9*vy#=R@oqi9Q46N*D%}xm{?|gT_%*t@X4}kc4migucfM&tjs%pX z*Ls<|i1z-pOqGju0^^PGUVRU1l6^ZaBk&yZB2vg8a^SmMkpVCSacP^5tfA__RQ`}x z-iHr!RP19U*xA{Y4ElK8*ZP$Dy7NIIcKM8;2#cr!1*yL80=e|>Fwbg1oRO17u<3ir zrM(ci2J-wM=iFV3T=@g!6E}#k37*pmxeha%Uz}rq z{5pW6Ei~Fggj(sl8t5wl)uct9_)gJ(PrTz-x@K~z4Vs>S6kO@SwMJ4f&CUBeB>=R6 zoQw=rP4xU>eg#eFo4^KlcaFP-K9O6i{BrUcBcZl{QF{7g!od6oRP9q2 zfFo_4omFe@2lo+Bgt?u1#EdI19(-(~p*Eh~6ge&=(MN*`gs?3C-P11QxsKFKC_(tq z{K|n|EH&xtQ+k!)qpuR|ac7S!@Ta;=wx#bLBqjZPaR}0u-0_M>g{4@z++dq(9WaXY z{AU`kwE>YBBFa!5k}6upb1~LeBNKq*)^$W`Q=}@JBKIm#K1Us3yaxmok9HvvtXfk> zolRN?dNrs?^&(Z?W6>6osvLbuIFzA*fmhf4z+`^5G`Js9`;BsFoA?#@9o`3WVbXrb zPqU65#vS5O4!)E3;Crm#W0wDHxv+veegNlS{3+eGLoqDQXr*fW4pqNJ!2V-Sts3Yf zsdDZ!TnMJ$9+uxWIp3>2N4}_#Yfv%^2`TjMt5F=P-)n6bkykC!d)}X0Fq=N>7qyG4 zE1Ah>-oK-xgG5zL+9Tw?R7^fAd|6s3qpwDVulQZ}t!%*iP2U`KJ)| zAKV4hyJ;cv08^LGRc@s4vvpw(BMDLostZ4>CMJ?9%XWu=iFMwEaux40_W8CsmDJiD z2|y_bUqS2d68cXLxcJTXY{x%g@0IfXWV+OyT*W9Q`Gm63w*JeQV(2?DQG=4TB;fK) zYFG+jrF*E#a&qiPe!iN}+f%`{o2bH#Eqr2M*_;h`w6mLedE#=5Ci^@{iTt4wf1cHF zc}<5H34(mH9=`+m4?x7AiR5g~LBl(XEB;)doftIPd;6PNB&TxIxR{xZ?q z=8`A06{64PFn5%yVz1sdm6T*SD*zmvqJN9_e%n!I9NMQ?PHk2h&Z!(sB3h!T}3|2sm_@A`l=RC=F{-a(^FB?ANRjG+m>e;u{>)+F@W zz*p|o&$QQN7QR(8$yYEraE5!kpvA!PHrSR zQq6aE9A&7bwUFbEpBk5^tg-jk7B)pZ^t;|T1pTWk@Zq^=>-pbbV4q2E&zlIBPv>i5 zC$%l0s=QL+($mpt4>XvFwAf*7(-!i*fqFucFGn1egO5IJlpH@ry9!ipv6_3^(Mf|Z zme^|oQk#@ynqqEdmoV86O-HDue-oD|cXvB(x*E!m*PrM7i1-j??6aoCYDjv=gta6R z-eFhQXK#$4;^VrYvEb2z-p+8;iQA-9RwIx5Ym1|5QNq~C^i-d6D%^M* zaiPzEZo*r|0CNNc1hi2Vmz0Ry`S|+>yMxTyNccuZ$+C$b6hJA!E=>S~k)92@(#l*F zW&4<@xeSSL8Ni>0QH>_>NsG9LKcEY}4xCv?p;~{=pKx^`W1^eh2}pyH&)O)!Bu(L- zwps@}yLf5$S$I6O_v-wt;pCz3`w6wp*eQcSK;hcU405fnHT{8q@jB!gas7VA%rijb zTCWXyThYg(5-Q`&Upq`+o)8{Z2~j8KSwAOZpb9PIZ@`+Cm@~tGX)XR0-()9T>Pp~A z?cDNRp4}yrakhaX@rC(~O7iYL1G|-3x2cJ-W-YHV2k91Ka8he_Yd;;;e#P5QKRP_P zvwtJw>J0_A8+`eJLbi$upA`=5r#g6&?%H0xz1^21Gbj@o=dnw-Z`WIiZbXS6Ja3gVpJo@HqfPZkxS8i$|OQ`M2Xq54F4ULGJ zahnD)znrYBI4Rc*^!?lPDiW(bHo3_kKBVcv<|xJAx_PsOUZmpp=qDl4Zi1Pa+2nl1 z-EHsT5OhXfOG}GOf(gh&19&fAa;CB8TF>Pv8e*(NWvRnpCBTx_Llr%oVag95KD>7A z`DQ?Mgn+J;+ca_XR3Bz4yTGEUvA*8C-O*iQ2H%{+s;V!h%T7Fh{ybjF zb@2jg$03ExYnGik@wO8u#9lf#F?5$3oIiga821zOxaC7sKTtL3HW_EgB=xDJ&`F@j z3+8*;u7P+_n)Rz-E2u3PQFQ@fm7_10d_3iMTjl7{qaG72yj#vj`uc1K4?ghFswzu| z?ISU%K-ck$*o&h=r6uQ4Tb4U>x_FY`e|y{s)?o_XXLT^sKr|)(XVvZO74FULrh1gr z@#DD5fs6q>>_e~<(dX`8diXF;Ms?6Chss4?zlYPk?*zNoAK))dKYza5n!H!gjWA?@ zIkjA}@A&-&DzW8g5gnWE{LwjIidPtQIosqSz~6dL?wCMRborIe z2S$4c6p|)|1ORY(qP1rJq+GV2pC6=#h*8BI-w%J%$Ji9+`pb2TN#E>B`j^{vjcc#V zzViw8ICNu@4p$S#?ch=Hm?gCTrTa{e*=om4_eLmW`yIp|n4z{10#)JBJReumslz#j$G%fz> zEdc=X84ms?@dpnbO2kZ_F{!zyhw6vz4`D}VY-lV`Jq5~BNor9Gh)OK6YBg_&5yLe0 zhd{CJbL+MH!H1lP%gSs&!{)N`{rf{8*RY#7t0AE#&jahgMJhAlW*YaGy~pS{4f)zG z4el>%jU-jg)K%P^tv5|=_T*Mr0V$}gOzOmmp)a)DZwAFbfNaSr?S|0o(Y*Cb&I~v& z@+7apWJihyyBL4Ic2l-td9ht@alSj2Z9i^lX(`cn+p~HtN$T7j>u%j!x76b#76RDq zU*e}=DO-t@wZ!i3Zli?smv7&$cA117Gx8ZIb+#~(PTc$G(W3y}`*0Rb(W0ppeZyh= zAj^a2Lh0@DWCnZcchgR~eCMXN+!(xk(d)hvIW;wR-EPlT4UzPSwt&2CQ1yKN8WL*G zuuZd2v9r!yaowmB$o-^wDg;Rss7+>S{ajd*7R{IF%!-PNKyIHq%Q>3 zt7<9|5WgJ$O}m#%W9J=@cI+Z#845C-DRB^?ZB5n5ygf8Dgw$==03-Z5 z#BL-F(L@o2H*a90Va~R0$u*X*PP9INJa@@o&#eh*&f_nfleWF+{m!>Ce7-$Aj?hRm*4tV1UNT4TS}wW7l7%(?mYfriGpVLi-~n3fcn7 zR~dp{LCEKbLNDirBJ1s2zOU}CrgHieGOmX;PtY)$r?Ps*iL6Qv?jeZB&islN1;sG` z(UY9(le7AzPRUIEVUVxZHH8dKCCd;T`&$(QA7i2g7B^ydLVh+ zWtKcQIQUs$7`B{-h6cO(vF#2XQ1$KR+VJC@1>6^q*zx%u6@H>=d)FPwDqf-K@K#Q8)0;F z*p+^MH3qu9dp$_aDkcvekOBo~Ax@;ErF&yhnCACN`6@}bv+mr#iNbrW*vr%5Xc;+( zB~%DdC&4&`et~%inu^q2V1d1`R$5w00ZpfMlbU!&JLM?*o4@bhQP{sJ9DU9fR-TC7 zy2t5~N+hA(je4SuPKM=AEP0}4rkz2xg8YwY54a0TvZgHg)}>32kA8m(8)%Hjw8sib zfWCRs>*8cmnB0Xke#=hup+utPmSnuwt8`_+3)ysi{F+J0F8 zyLH`^J~TKu7?J7cn}j5g9P(4xIn`~br@r3&Lp@7Mlp_4APDRRjDSS<3eUz#!BkN}3 zG1x)o=b>z3b$2rUOqNaMY#^$4Vc|u|;PDtUl;Q2$%K)e9Bg^oRJFrpf#$2yZOw~-B?aE7f zG&(M{7srV_-~Y9{RXeCbmEj-rF|Ie86WLukNdg9<=HBi~EAmUR2g9i?V;dr)qt}2` zbvr&d-RChJ0w|@SzCN7C^JhH@^CS3Jz6usd)Mt2e;VAJ+B%7!mRv$$<0s%kU& z(eGb6o}OzCz8ePJ<#G&r2-mJ%gMEK9)O$ukqKm(F8l-nFpVj*`f%i2~c()n-#JChk z60zC90k6ZDq6uoQ+~)jcSBIb1WlKzILK!)wj=tSw*+pPPBJj@h9ayy~=~pa$f%y7t zZvZ!&Gbbt0&FDq_nQ)a3!MBGYCXOM&wW)AAgGFx^CPmzjtFEqw&e7(H2hrRpM@vXpc(%7BH*d=mDZ=fN z+Y_3;7vdge1VH0i9&6MRHY{sP*XF0$a459=Lq%c&Mfxkf$kE=7OQqxv1NZ5!q0vXs zJ+@$K<(xOo0fpWjw8ZikT6&JsKa*Lglp1lTinWHlSF}pT_)hZ5;HpM&IuhEsY3#q| z_vBwvQ24yHGFW9+&mtLYKd_5nO#-#N;m(cN#6;imc=tLkSHdx57(fqzQ@{Hl-mX`? zJC|SFuE*44&6%E)s_-B)^L@ch*PE@YaGfd5sa@@k9a(yv#=iJz-9$c4g-o?1;g>_2 ztZ%?-9UU8EOW1t>{=NGkw#0R+Bj31xFK%WhV1jl6CPo#4KFc3^TQfV0IU)Xi>t&OI zMngM^Qp@+h7@>L0r&%;51Vm}>1BDuL&BVzmpF=qj#%UlPOoH-hsHxisXU?3-Zw=_O zEry=O7Ua{0tJ>(F16M*&I$J~ISzh)D>k3eP&CK?!MAz2WgQq%f8kRsfq%hZ&R~=iP z23?tkmQhehC}L~Ud2{ul!@%RN4>XqTuvik1Z?OH1)C_Y@JTau!ZP}w8nKIr)IxZiDEAu%y>cFDjZ zpM1+rf8<)@O^H!F6Tg2w=Jxna)txRk(_3O(?v}m%ttP#q!W(p{A1p63t|6vrVt6=@ zbhZ#0ts7DMBf%09X0Q^=&hb+RgTXjDendAr(qpL#rE1(}dTJvRZbaRKL;3#wd;U~F z9GHFIS&d0!9I-B_Y?xbIXq28KjWHum4zSuut7qxg$3bO)$p{=eXb_;3Gy*{G@$L{r zt4oj$dJ)(yrtiKNe4&&JO;8SnN8kGWFop2s4#XhmRH!DPwcq|sb<4^{_WkQng*(De z(?N#>PzWY)8l*L-AA9!fVL5W7)@LeJSzTRybH>3}V55cq`0?LBE`i#GZ*|-@GLp0H zI_I#cI0^|o*_mtX<5M|}_nG|s`0?WkJ@%;&{C>g$0$y9>PP|MFlm;xUk(ZY@e`P&h z4!aIA$|4`uzL`WrgnW_%o5U#P^9sbUt}!;*_Z?m;>h0UNpfq*V*E%SoW{|G%|F~4` zZi25dt)W$Koc?B~;g~tJPmM&^3sqUA_LONTBLEJsX=!PJ-WWFhHI3b&LaX0{i}$%( zO~Vo-0n!KyrmvSkl6ZrHhxsbV@A?G0PC6fl+r4YoCOOv^A(LAjDUCL*DH;gVvz>bf zoZoe}Pf}dG_{&Q}&K3Z};5W%1HRu*1(m`nuzVq>OY=~ccTUgf1moGuCE7QEx?&#_1 zIjJvCZqp7BF%C)LQpoHkwr55S34OEyNuLvR{PLy5g1y?mS6TzQD`05;g)o!Xn z8l*_vKDh(u`B)XCBXqipKg0kc3u`{szij$_^v%Rp4Yt)(50!nGm9^>Z`Ra}K{Od@C z>vxSR^O9BV1BDiYSyvOmpDJ(F2=RguA7O*yUs&&nH?gto%*;a?wy6QytXG@HN{<~o zhRnX5?De`H;sG@U_?ZRJZ`WDb_~__kFgnS`28_N0Q_58u09F2ZP|(Jxi0{M}4szTZ z#3)evnAzEpSU)+L!5E{Ddl=zTeEU`&u=@*R9gmFmz zDdR0!fBxp>%X1*lfUueeSt}R)&;Ar+iOPO+OUGgLOV(cy$?I%Yg`S9Su>m_mwg8a2 zOm#Hy+n5_jyv~C3nEU*QroElZw$<>~EfO?QrR7mNG5bJ9&UMm+^Ww-gSLKsYTB&-s zZ%2lQ7l8Hvk)|ViJRi@WQ?6=ZZQCjJSaFSFGy*BgXNr5dd^ZJs+5LSS`nU0>r z!B9#Vn4>}^eSbzn59v1?_p5Z7cpb%lzw?GBfdSoz;~D_TcNVhowy3Ddk6YuT=TlJPS^O} z0r= zC{nq4Nmc`%cLt{6fMg7Ze=k66F&CFYnLv!Gxp@Yr`>8uMhrW~qMNq(7(E^ptA?^0- zj=nDU__b(kC@k%^Y!euO02rNaiQExg`v-KoH~~cHCl0-NV>8My>aMeCHD#-&Blzc& z%ytaLaPWy92R!@v+qSk@OvYEcGITPbTWz%@t2uqZ+|t!W+CZT6qtn)0_Apj~uu`j5 z<*jaA$(YHJ^wb1ZRn^zyH^RV|0$*&yG$i9YiIyZv)v*KlXu9#V>rsTL zHSTJi?Rq*4a`-F!YNDSXN(|3scg|^fy4xbbQ`v1~1#Vy0oTS1HSS|6&W~3DtRbf8x zM-lf3tHZkpZpcYyDeXXBWaH{G?P6~RQTTt*9wSZlioS1EjoBD$qNHk3TPA<}=m;&Q zQa>Q8(5}}FoHLBkeoOZ!a`*4w&!?xf=9|?6i>*s?&&8B(;RS>a04^V{{d1hGC*BTL_)F0lE0J}+!Zz3qTmn4%Pn+8sNyN_ z9TwRH{EEA6A<{FlfhD18LVp2&i%uYawI+dTIkvqq7lmIvdn*_s0}bhH`$AwNGK z#CZ*YlcduCH03_84s%nwp0FsQV^R8&AXc|(%J&zF|2h7@Q7sMv%$(Q5F837n!Js5< z7tGJftZ>iK{K2tIL`37+E$6j74gXX~TI?+JBTz8$O% zV8|mAIoIPPhN_~^-b7<6G-ufE^@LuC$hr!wEnYX#+vt>~9*DM;aZC&{R!FrKCU)DKCD)}PHdcIXAFT_$ayWY zj0XED(E;i<5a&0Ei6SaaT84%&7qHLdd2qMSLXhz(Ufx=s%-T2q(?V>_XA zz?jq2^SFKV^e_s5b!D#?W~)Uk8PExCHocnC($OihZqI<;smnNQ0}96o49K*9sdpfn zNI*Q#4k-n(^m~rS=W82#jYjCgp__=kd=$kkUcd9qgI;s81+4E%tlQ6?JLd>3=tm3X z9|SDM24zRtkfyVfZdH5Cu1~wwQye@xzOVjlNX1Nc`cfcVr;A}2T8bA)0HY{nz$b_X zhz!Xr9jw~i+=S*b2v8!Q)usqM5ttFvuF2v*)0zvx1RnxP?_vd}O;)TO8G8Xe2~=t5 zl5%Ty*a}4I>0Qmtt;B$jr6HvQ-PAZ6sPny?Hm)W1{nj3I z*_ojCg4t~e@*L&@GB*J7vMh{0g%qXEG@u7LI5^_ozD<+A-l9p42I34-q&tzI$T-a@ zRtwU-6o!-*GXhcpm@_l-IY~_W_uC?6xL+EY0~XX!?VC5-4!}DCJbrG;KEY{$hzYVh zq%3va`s@I9#n9Cut=720<2+U24*%K?{)^AJqq1+^>V43n_IMJ*e}9}v8VYp2peA#j zA%H&0n= zIiS#4v$h(1^!z1Rxjkd4*R3;vZY0LX&%}9CTR!@mVACMycl)gEvWeuV?6P4_yc}ig zyZIWSf+Ge^pOHtyA{6Dk=&Wrv{eLjXYQM+Q}4tjwbF zMa$jv1aM?hL+!vbQ&Lju7zvo%1^RB3i1CgzG7#4fXR`^jo+qTF$_fh$#}*clsFbJy zU3E7-O9e3AAAgEjLNg&$0>Sg*fhrh#_Mk%fkhiz+-B0Jhyys8w_&P6gNCNFT(O>Qk zx{=$Dy|~>--`hO4!-Y2w|J8YNMIu}`9*Ts@D_f9yd?kfb)#s}EW7FZWiA187a>y}J zzO!dl-6nU(Hn=VP`Tp$LUdh+2Fr?!+-F1HJd`N#@oG1`Bn7r6ePw%z4Py@ys#&gi? z9WYsB8X3kv@}L?|Put2$KUs}rJ1-=p5pUR(AUjt&&K36O7P$gY;M8QGG6qxjw&m;B zub{Bhb$6<8s_W@R7o$beoz<^h(<^l{gJ_fO_ZWdW5jf{w7~EW3T>K^pM!@Z@PvI)L z{+OG<>XOIx`FVLmxaEzCJNZwXP;5G2t{t@q=oc{&p<2jnJq-Za5C^gbxVM65&mIit zW@TN0ZuZl;LuLFIhn#m;*MZ?5A=1uc!3igJwVMKg{IN#|9Wf;|`2z?#`r)5%E3&CR zPcjN@zBP%XP?j%tBlisVaNh0ZtM=8gHX`sn$mVkQIhg!IlzA{b z(xD0vkr0GoWNC>s`93JH;G|py8HTbLRV8@$(+y5?y$2n}(qX-VT+XwH&O(mxb=I9~|=jPa<5OKp+6A0T`4{mz+NVI&qOJnfRi8kI=$tMEU{*hj*qE{GP8ctVR(4szT{w3{fx**{!k5t5@ zu(5CEk(hZV_sv3>Jp&yC4&e3c*YvEy98xZph!Ynn6pMBkcymVkYjrhrp)DAcgZDyA zSLcT&o8a_gVT97ubOb8 zfuKpu4OR^vlgey$=c=+DJS@?a_x?TD-ov2BOmaXqE(38Bye7~!FB=lTfcW$0forG+ zY1dZdQh;uFZbE!pTN}*h&Gi(i$sR^Ryu#C2T|IbRRbOA<%F3!0Uk+~p-bH%Aje2l> zuVaQ_*Q&hN@~7Lvbb6=PIx_?^u1Vc{DXQ)K!@7~!QEFPAl{F2$bF!&1tC-K;{!*TP z0~LLK&YAG>Wgb1+LqD&%zf^*2YH%a<;Po#WnN#IEe+TJz>I`2S!U_zO?4Y4=y0BFxLlz3;EiKFM@&&B_&F^s zJ7Et2^xJSgjf`|AIyzu19|a%hM!b3RGgjoRYX9f_MjMO9xL4I4!hC$@l1WwY7(dYZG3=;Dl9GRNQ6!T?A92xAwELvBiK` zIOTl;`cW_$1hCqZoKTR(VIK0{XH;`67rY%1hjuXX_V(7%i2&6W$hZo0LDxWa07lS^ z%zaya8^E(d{mLsgnt(*Jw$8}%*PQ7q)mATWh4->d)7?SsI#n~@2*M%Qcxy0^@$;2S ztc+(qvEcptODvF0Z~c+%xl_YW1gt{kmhboNEOi%v#9`xWi z4HXGK;I%RFd%2?ukMXp8a*i-s}pUdzqM4+Le#F!oA^L8?*Gz zme$tqr@3|$0HlCDz$)u;%@7AK$#{?iD15sK*CAp+mi+9bOcEnLHmq zGGZz@EWeMAZeiwy*Alg5Dkvgen9se1>E)Xf`VC%A@qfpE?*Agl0B0pA6H z3&6_C3UB^gEo5*pErQkG5dCfLY6{y0Lq1~-vHa?93CU`#-A{jj8bF>_6{IG@^VUsu zz64@(N=D|cSlcqs<{V`^m!m7ug+&TNBm z^M%}e4B5KcK)jp|7Xk0n)bBAm$D)v_4Ofb>JWA|JlY&IJU9NNE#z!EC;B41d`W!xZ zu;sV#uakaU=N~-DBFsS6!{l?i!!f$bk}8~C58!g3k$Y`;N!XJ0lb0N zBVazVolPhital$gHd&^}^(NDAAPurUn;y;Y!q=HIme5C#z*FEs*gvXc;euZWjD>i| zOJ-@Cnwq-07TG5GZ=j@3pC*FEkRPH2fablg>=_*ps4SC1t-&b_5OwE;v9HFJf{E_6 zoSBkJwH{A3rem2h%Z#gqxq$-p@q-z0qr!f~93)*lU zh00YF%Vv5LQQ-(V+=>&PSY9N^EU)}kVc}7)y9&Q$*tZYH(B2BVs(ovKEP#7CV}}O; z+M230!SbHlv#Y0HdGTSaAT8}Gi>HvBoE#sYvQH7$*luJ<0ES)(ZaKCvY|ybrMQvH7 zV`Rj|#+HGX%FD}ZbVye**t`;R(dy<*$DU|b1p$>Xt|Rd)fVRGHdi*_t&WnIN;1vD) z_dPqxqfq0_70ZS!8&r1X+qgJE%1&&{R@?hk}mtBqU6;|7af zV;ichtW4jwniI*i2bxpN3L8Rs%}bAW(-#hEsH?a6pa}~;m+T&$H>V}!Y@t`BkNv$` zz2#I80A$+1$V|M`4!+IlsmT-6L>P#dtTHk*l!aC{Q}PDFv(tVi8c0GAV}I%`kkb#6 z8HBwG{a`T{Y&rz(C@*5rdTm{Maa-EJ!IsNT|516=U`|g@-^x+}@;+t&KapUgFumQp z{01|xL}92*4FCJm>8Xjp#30zMRp{C(+_DtOpejLS?NS#%efl(Tu+|>YjLUWoj~J3~ zsf2PclMyHKrxPp)s6fXuH<3H9Tmdzc7%5_$gBJ!>HK%?YT&>(}tv|!VN+GG>a0b12 zafMP~-tbzf2x%UE%2$wTmjyFH;ENt++_$fV@o<`S(P1hQIKxGQTcDg24Klc7MG2lc z)7(KEw?fUVFP@(Zzc3fgsjzXbUO-4l$2kEu3|yng$jGQDeu3b{OjH>TcU(X~;0v@0 z`pMkfyx=+aLuO{?{Is1J(f`*)VM=Aj zHCYJW9|~7;eaNjKumcZ{6RKrX5OL>fk{~Cc3g?U(8x%5>h8s(3Q=#~Q~=BDVKW1?^CG4(4c z2Jly!wNDk$5CM5uZ7{Xr-{RpZKrEP!`SSy2l3eVY~ z<3~69(;vGs{DBUxF3dgC_Gr2e$VfW=<- zp1ah(I^tA9Ij9RrM^)rg2_>MftbICFM;i% zO3d8Ncd2(y2N_I{kGs3>eP%*sY63A^kez*~RdnKj=&3v@Ny)gBc0 z=Ui;+>7eXR^=UtV*CVCSDf5!rFuhk3Y9-B-MR_3se;PyM?K#DZ5BKfc$0p~!TH(0_ zw)Zkv?*Q;ZLAS|T&VF}&608z1tih5>O-+STZ%n$81ju)?7TQ1y{H{G@sLUidQmPG% z4l8MQL&Hp|W)_ccu1zGs!F4B%GlBW`mzTH^5TNtE=jP3uh2$4ymrY;Uryx^l4P^8Q zwm#W_zn3uq8cU^$m*7FCeQDTr1tn|Ma!PL@>DMpyhf-g@e1QSf{2ZS>)Rtz@ELplaco+5t&K+ z(W4V5PONt-8XQxwFf(f}Eq_+F1v&w=3wVo?H|8!LBL;qVrKKF8!?qxAZCQyuZg2CX zjY7Jz4bXPFTN^9xvNDOHC3 z1Q~ILqEUM~>0Y3upsw7uL{ORm2eAvUNMZa6+=RKoHRTovB!?NELQw>~DQr~X0m3c_ zv4Y^s8?J_WQWe^~NS#dtRYPxurxVZf22^Qq7V2)YZmi7BH75mHO5gkJ_x0-~J$+Uf zzz4zQ#N~iz#g9TYRli*tlZu!3HL8foHLmi>8CnErTqO1=A$QjOCO_}`8vLmn(^qtD zwwAQ*OPNf|Wuf8#4_GFKF;kP?h3ts2BBx8=hR)29-;Yf5_?i7hSzuN0=;@roH)?Vz zUSJ)9e6DP*I4;+IR-M}uYgpvb9W~$cI6$a))Lqd*- zywYydt1shD7Z7++?lO@NFilUl3eLT=|LkAA99ay!$niYDIuc~%@#dHnc=JQb*f1@p zAHr+2gi|2J-`~F|X+O{amWgxTtB!X38BJi5|2%12-`L3F-UzET(=vp#_|DD={xnYz z>HHZ#;nSyYG({05FJ8RWq-yui!(w$R>;C-Z+Aab(nD4UEvT?Z2u8MzPEJ9#v@_~e( zo7BTUSMJ<-OH{0avIUawJODLJivZf2OCc&M3K^{HO%0D3UyqcBYE?S>yuzZ1ORw`K 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 AYXATM diff --git a/docs/demos/dns-policy/cleanup.sh b/docs/demos/dns-policy/cleanup.sh deleted file mode 100755 index b507b42de..000000000 --- a/docs/demos/dns-policy/cleanup.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -kubectl --context kind-mgc-workload-2 delete -f resources/echo-app.yaml -kubectl --context kind-mgc-workload-1 delete -f resources/echo-app.yaml -kubectl --context kind-mgc-control-plane delete -f resources/echo-app.yaml - -kubectl delete tlspolicy --all -A -sleep 2 -kubectl delete dnspolicy --all -A -sleep 2 -kubectl delete dnsrecords --all -A -kubectl delete gateways --all -A - -kubectl delete -f resources/gateway_prod-web.yaml -kubectl delete -f ../../../hack/ocm/gatewayclass.yaml -kubectl delete -f resources/placement_http-gateway.yaml -kubectl delete -f resources/managed-cluster-set-binding_gateway-clusters.yaml -kubectl delete -f resources/managed-cluster-set_gateway-clusters.yaml -kubectl --context kind-mgc-control-plane remove -f resources/tlspolicy_prod-web.yaml - -kubectl label managedcluster kind-mgc-control-plane ingress-cluster- -kubectl label managedcluster kind-mgc-workload-1 ingress-cluster- -kubectl label managedcluster kind-mgc-workload-2 ingress-cluster- - -kubectl label managedcluster kind-mgc-control-plane kuadrant.io/lb-attribute-geo-code- -kubectl label managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-geo-code- -kubectl label managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-geo-code- - -kubectl label managedcluster kind-mgc-control-plane kuadrant.io/lb-attribute-custom-weight- -kubectl label managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-custom-weight- -kubectl label managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-custom-weight- diff --git a/docs/demos/dns-policy/default.png b/docs/demos/dns-policy/default.png deleted file mode 100644 index 024165819a95c485e518d5074bc26391cfe7553e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149759 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%0DAgaYSs6qWOz3 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 K@lsJkzyAlYzwLJb diff --git a/docs/demos/dns-policy/dnspolicy-demo.md b/docs/demos/dns-policy/dnspolicy-demo.md deleted file mode 100644 index 22e586d5c..000000000 --- a/docs/demos/dns-policy/dnspolicy-demo.md +++ /dev/null @@ -1,179 +0,0 @@ -# Kuadrant DNSPolicy Demo - -## Goals -* Show changes in how MGC manages DNS resources through a direct attachment DNS policy -* Show changes to the DNS Record structure -* Show weighted load balancing strategy and how it can be configured -* Show geo load balancing strategy and how it can be configured - -## Setup - -```bash -# make local-setup OCM_SINGLE=true MGC_WORKLOAD_CLUSTERS_COUNT=2 -``` - -```bash -./install.sh - && make build-gateway-controller run-gateway-controller) - -## separate window - - make build-policy-controller install run-policy-controller) - - -``` -## Preamble - -Three managed clusters labeled as ingress clusters -```bash -kubectl get managedclusters --show-labels -``` - -Show managed zone -```bash -kubectl get managedzones -n multi-cluster-gateways -``` - -Show gateway created on the hub -```bash -kubectl get gateway -n multi-cluster-gateways -``` -Show gateways -```bash -# Check gateways -kubectl --context kind-mgc-control-plane get gateways -A -kubectl --context kind-mgc-workload-1 get gateways -A -kubectl --context kind-mgc-workload-2 get gateways -A -``` - -Show application deployed to each cluster -```bash -curl -k -s -o /dev/null -w "%{http_code}\n" https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.200.0' -curl -k -s -o /dev/null -w "%{http_code}\n" https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.201.0' -curl -k -s -o /dev/null -w "%{http_code}\n" https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.202.0' -``` - -Show status of gateway on the hub: -```bash -kubectl get gateway prod-web -n multi-cluster-gateways -o=jsonpath='{.status}' -``` - -## DNSPolicy using direct attachment - -Explain the changes that have been made to the dns reconciliation, that it now uses direct policy attachement and that a DNSPOlicy must be created and attached to a target gateway before any dns updates will be made for a gateway. - -Show no dnsrecord -```bash -kubectl --context kind-mgc-control-plane get dnsrecord -n multi-cluster-gateways -``` - -Show no response for host -```bash -# Warning, will cache for 5 mins!!!!!! -curl -k https://bfa.jm.hcpapps.net -``` - -Show no dnspolicy -```bash -kubectl --context kind-mgc-control-plane get dnspolicy -n multi-cluster-gateways -``` - -Create dnspolicy -```bash -cat resources/dnspolicy_prod-web-default.yaml -kubectl --context kind-mgc-control-plane apply -f resources/dnspolicy_prod-web-default.yaml -n multi-cluster-gateways -``` - -```bash -# Check policy attachment -kubectl --context kind-mgc-control-plane get gateway prod-web -n multi-cluster-gateways -o=jsonpath='{.metadata.annotations}' -``` - -Show dnsrecord created -```bash -kubectl --context kind-mgc-control-plane get dnsrecord -n multi-cluster-gateways -``` - - - - - -Show response for host -```bash -curl -k https://bfa.jm.hcpapps.net -``` - -## DNS Record Structure - -Show the new record structure - -```bash -kubectl get dnsrecord prod-web-api -n multi-cluster-gateways -o=jsonpath='{.spec.endpoints}' -``` - -## Weighted loadbalancing by default - -Show and update default weight in policy (Show result sin Route53) -```bash -kubectl --context kind-mgc-control-plane edit dnspolicy prod-web -n multi-cluster-gateways -``` - -"A DNSPolicy with an empty `loadBalancing` spec, or with a `loadBalancing.weighted.defaultWeight` set and nothing else produces a set of records grouped and weighted to produce a [Round Robin](https://en.wikipedia.org/wiki/Round-robin_DNS) routing strategy where all target clusters will have an equal chance of being returned in DNS queries." - -## Custom Weighting - -Edit dnsPolicy and add custom weights: -```bash -kubectl --context kind-mgc-control-plane edit dnspolicy prod-web -n multi-cluster-gateways -``` - -```yaml -spec: - loadBalancing: - weighted: - custom: - - value: AWS - weight: 200 - - value: GCP - weight: 10 - defaultWeight: 100 -``` - -Add custom weight labels -```bash -kubectl get managedclusters --show-labels -kubectl label --overwrite managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-custom-weight=AWS -kubectl label --overwrite managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-custom-weight=GCP -``` - -## Geo load balancing - -Edit dnsPolicy and add default geo: -```bash -kubectl --context kind-mgc-control-plane edit dnspolicy prod-web -n multi-cluster-gateways -``` - -```yaml -spec: - loadBalancing: - geo: - defaultGeo: US - weighted: - custom: - - value: AWS - weight: 20 - - value: GCP - weight: 200 - defaultWeight: 100 -``` - -Add geo labels -```bash -kubectl get managedclusters --show-labels -kubectl label --overwrite managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-geo-code=FR -kubectl label --overwrite managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-geo-code=ES - - -Checkout that DNS: - -https://www.whatsmydns.net/#A/bfa.jm.hcpapps.net \ No newline at end of file diff --git a/docs/demos/dns-policy/dnspolicy.tape b/docs/demos/dns-policy/dnspolicy.tape deleted file mode 100644 index d32ff520e..000000000 --- a/docs/demos/dns-policy/dnspolicy.tape +++ /dev/null @@ -1,294 +0,0 @@ -# This is a vhs (https://github.com/charmbracelet/vhs/) tape - for reproducable CLI recordings - -Output dnspolicy.mp4 -Set WindowBar Colorful -Set FontSize 25 -Set Width 1920 -Set Height 1080 -Set Framerate 24 - - - -Set Shell zsh - - -Type "kind get clusters" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl label managedcluster kind-mgc-control-plane ingress-cluster=true" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl label managedcluster kind-mgc-workload-1 ingress-cluster=true" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl label managedcluster kind-mgc-workload-2 ingress-cluster=true" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl apply -f resources/managed-cluster-set_gateway-clusters.yaml" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl apply -f resources/managed-cluster-set-binding_gateway-clusters.yaml" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl apply -f resources/placement_http-gateway.yaml" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl create -f ../../../hack/ocm/gatewayclass.yaml" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl apply -f resources/gateway_prod-web.yaml" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl label gateway prod-web 'cluster.open-cluster-management.io/placement'='http-gateway' -n multi-cluster-gateways" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl --context kind-mgc-control-plane apply -f resources/tlspolicy_prod-web.yaml" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl get managedclusters --show-labels" -Sleep 500ms -Enter -Sleep 5s - - -Type "cat resources/echo-app.yaml | more" -Sleep 500ms -Enter -Sleep 10s -Type "q" -Enter - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl --context kind-mgc-control-plane apply -f resources/echo-app.yaml" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl --context kind-mgc-workload-1 apply -f resources/echo-app.yaml" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl --context kind-mgc-workload-2 apply -f resources/echo-app.yaml" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "curl -k -s -o /dev/null -w '%{http_code}\n' https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.200.0'" -Sleep 500ms -Enter -Sleep 5s - -Type "curl -k -s -o /dev/null -w '%{http_code}\n' https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.201.0'" -Sleep 500ms -Enter -Sleep 5s - -Type "curl -k -s -o /dev/null -w '%{http_code}\n' https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.202.0'" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl --context kind-mgc-control-plane get gateways -A" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl --context kind-mgc-workload-1 get gateways -A" -Sleep 500ms -Enter -Sleep 5s - -Type "kubectl --context kind-mgc-workload-2 get gateways -A" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl get gateway prod-web -n multi-cluster-gateways -o yaml | yq .status" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl --context kind-mgc-control-plane get dnsrecord -n multi-cluster-gateways" -Sleep 500ms -Enter -Sleep 5s - -Type "cat resources/dnspolicy_prod-web-default.yaml" -Sleep 500ms -Enter -Sleep 10s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl --context kind-mgc-control-plane apply -f resources/dnspolicy_prod-web-default.yaml -n multi-cluster-gateways" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl --context kind-mgc-control-plane get dnsrecord -n multi-cluster-gateways" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl get dnsrecord prod-web-api -n multi-cluster-gateways -o json | jq .spec.endpoints" -Sleep 500ms -Enter -Sleep 5s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "cat resources/dnspolicy_prod-web-weighted.yaml" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl --context kind-mgc-control-plane apply -f resources/dnspolicy_prod-web-weighted.yaml -n multi-cluster-gateways" -Sleep 500ms -Enter -Sleep 10s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -Type "kubectl label --overwrite managedcluster kind-mgc-control-plane kuadrant.io/lb-attribute-custom-weight=AWS" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl label --overwrite managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-custom-weight=AWS" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl label --overwrite managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-custom-weight=GCP" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl get managedclusters --show-labels" -Sleep 500ms -Enter -Sleep 10s - -Hide -Type "clear" -Enter -Show -Sleep 500ms - -# Show AWS - -Type "kubectl label --overwrite managedcluster kind-mgc-control-plane kuadrant.io/lb-attribute-geo-code=ES" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl label --overwrite managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-geo-code=DE" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl label --overwrite managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-geo-code=US" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl get managedclusters --show-labels" -Sleep 500ms -Enter -Sleep 10s - -Type "cat resources/dnspolicy_prod-web-weighted-geo.yaml" -Sleep 500ms -Enter -Sleep 10s - -Type "kubectl --context kind-mgc-control-plane apply -f resources/dnspolicy_prod-web-weighted-geo.yaml -n multi-cluster-gateways" -Sleep 500ms -Enter -Sleep 10s - - -# https://www.whatsmydns.net/#A/bfa.jm.hcpapps.net -# Bug: Most traffic should go to GCP (WL2, ES) diff --git a/docs/demos/dns-policy/resources/dnspolicy_prod-web-default.yaml b/docs/demos/dns-policy/resources/dnspolicy_prod-web-default.yaml deleted file mode 100644 index 79295ea1a..000000000 --- a/docs/demos/dns-policy/resources/dnspolicy_prod-web-default.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSPolicy -metadata: - name: prod-web - namespace: multi-cluster-gateways -spec: - targetRef: - name: prod-web - group: gateway.networking.k8s.io - kind: Gateway - loadBalancing: - weighted: - defaultWeight: 120 diff --git a/docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted-geo.yaml b/docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted-geo.yaml deleted file mode 100644 index 1ee840baf..000000000 --- a/docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted-geo.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSPolicy -metadata: - name: prod-web - namespace: multi-cluster-gateways -spec: - targetRef: - name: prod-web - group: gateway.networking.k8s.io - kind: Gateway - loadBalancing: - geo: - defaultGeo: US - weighted: - defaultWeight: 120 - custom: - - weight: 10 - selector: - matchLabels: - kuadrant.io/lb-attribute-custom-weight: AWS - - weight: 255 - selector: - matchLabels: - kuadrant.io/lb-attribute-custom-weight: GCP \ No newline at end of file diff --git a/docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted.yaml b/docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted.yaml deleted file mode 100644 index 3891ac29d..000000000 --- a/docs/demos/dns-policy/resources/dnspolicy_prod-web-weighted.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: DNSPolicy -metadata: - name: prod-web - namespace: multi-cluster-gateways -spec: - targetRef: - name: prod-web - group: gateway.networking.k8s.io - kind: Gateway - loadBalancing: - weighted: - defaultWeight: 120 - custom: - - weight: 10 - selector: - matchLabels: - kuadrant.io/lb-attribute-custom-weight: AWS - - weight: 255 - selector: - matchLabels: - kuadrant.io/lb-attribute-custom-weight: GCP diff --git a/docs/demos/dns-policy/resources/echo-app.yaml b/docs/demos/dns-policy/resources/echo-app.yaml deleted file mode 100644 index 10beafc08..000000000 --- a/docs/demos/dns-policy/resources/echo-app.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: my-route -spec: - parentRefs: - - kind: Gateway - name: prod-web - namespace: kuadrant-multi-cluster-gateways - hostnames: - - "bfa.jm.hcpapps.net" - rules: - - backendRefs: - - name: echo - port: 8080 ---- -apiVersion: v1 -kind: Service -metadata: - name: echo -spec: - ports: - - name: http-port - port: 8080 - targetPort: http-port - protocol: TCP - selector: - app: echo ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: echo -spec: - replicas: 1 - selector: - matchLabels: - app: echo - template: - metadata: - labels: - app: echo - spec: - containers: - - name: echo - image: docker.io/jmalloc/echo-server - ports: - - name: http-port - containerPort: 8080 - protocol: TCP \ No newline at end of file diff --git a/docs/demos/dns-policy/resources/gateway_prod-web-istio.yaml b/docs/demos/dns-policy/resources/gateway_prod-web-istio.yaml deleted file mode 100644 index cf827b5db..000000000 --- a/docs/demos/dns-policy/resources/gateway_prod-web-istio.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: Gateway -metadata: - name: prod-web-istio - namespace: multi-cluster-gateways -spec: - gatewayClassName: istio - listeners: - - allowedRoutes: - namespaces: - from: All - name: api - hostname: bfa.jm.hcpapps.net - port: 443 - protocol: HTTPS - tls: - mode: Terminate - certificateRefs: - - name: jm-hcpapps-net-tls - kind: Secret \ No newline at end of file diff --git a/docs/demos/dns-policy/resources/gateway_prod-web.yaml b/docs/demos/dns-policy/resources/gateway_prod-web.yaml deleted file mode 100644 index 24f4dc1be..000000000 --- a/docs/demos/dns-policy/resources/gateway_prod-web.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: Gateway -metadata: - name: prod-web - namespace: multi-cluster-gateways -spec: - gatewayClassName: kuadrant-multi-cluster-gateway-instance-per-cluster - listeners: - - allowedRoutes: - namespaces: - from: All - name: api - hostname: bfa.jm.hcpapps.net - port: 443 - protocol: HTTPS - tls: - mode: Terminate - certificateRefs: - - name: jm-hcpapps-net-tls - kind: Secret \ No newline at end of file diff --git a/docs/demos/dns-policy/resources/managed-cluster-set-binding_gateway-clusters.yaml b/docs/demos/dns-policy/resources/managed-cluster-set-binding_gateway-clusters.yaml deleted file mode 100644 index e774c65f1..000000000 --- a/docs/demos/dns-policy/resources/managed-cluster-set-binding_gateway-clusters.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: cluster.open-cluster-management.io/v1beta2 -kind: ManagedClusterSetBinding -metadata: - name: gateway-clusters - namespace: multi-cluster-gateways -spec: - clusterSet: gateway-clusters \ No newline at end of file diff --git a/docs/demos/dns-policy/resources/managed-cluster-set_gateway-clusters.yaml b/docs/demos/dns-policy/resources/managed-cluster-set_gateway-clusters.yaml deleted file mode 100644 index b74ca8c23..000000000 --- a/docs/demos/dns-policy/resources/managed-cluster-set_gateway-clusters.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: cluster.open-cluster-management.io/v1beta2 -kind: ManagedClusterSet -metadata: - name: gateway-clusters -spec: - clusterSelector: - labelSelector: - matchLabels: - ingress-cluster: "true" - selectorType: LabelSelector \ No newline at end of file diff --git a/docs/demos/dns-policy/resources/managedzone_jm.hcpapps.net.yaml b/docs/demos/dns-policy/resources/managedzone_jm.hcpapps.net.yaml deleted file mode 100644 index d7f63f0f8..000000000 --- a/docs/demos/dns-policy/resources/managedzone_jm.hcpapps.net.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: ManagedZone -metadata: - name: jm.hcpapps.net - namespace: multi-cluster-gateways -spec: - id: Z04114632NOABXYWH93QU - domainName: jm.hcpapps.net - description: "jm.hcpapps.net managed domain" - dnsProviderSecretRef: - name: mgc-aws-credentials diff --git a/docs/demos/dns-policy/resources/placement_http-gateway.yaml b/docs/demos/dns-policy/resources/placement_http-gateway.yaml deleted file mode 100644 index d952f1ffa..000000000 --- a/docs/demos/dns-policy/resources/placement_http-gateway.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: cluster.open-cluster-management.io/v1beta1 -kind: Placement -metadata: - name: http-gateway - namespace: multi-cluster-gateways -spec: - numberOfClusters: 3 - clusterSets: - - gateway-clusters \ No newline at end of file diff --git a/docs/demos/dns-policy/resources/tlspolicy_prod-web.yaml b/docs/demos/dns-policy/resources/tlspolicy_prod-web.yaml deleted file mode 100644 index e680be31c..000000000 --- a/docs/demos/dns-policy/resources/tlspolicy_prod-web.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: kuadrant.io/v1alpha1 -kind: TLSPolicy -metadata: - name: prod-web - namespace: multi-cluster-gateways -spec: - targetRef: - name: prod-web - group: gateway.networking.k8s.io - kind: Gateway - issuerRef: - group: cert-manager.io - kind: ClusterIssuer - name: glbc-ca \ No newline at end of file diff --git a/docs/demos/dns-policy/script.sh b/docs/demos/dns-policy/script.sh deleted file mode 100644 index 0316fd107..000000000 --- a/docs/demos/dns-policy/script.sh +++ /dev/null @@ -1,100 +0,0 @@ -# We use https://github.com/charmbracelet/vhs to record the terminal session -# For this demo, we have already setup 3 kind Kubernetes clusters. -# We used the Kuadrant quickstart script to set these up, and to install Kuadrant components and dependencies. -# You can run this too, by running the following: -# export MGC_WORKLOAD_CLUSTERS_COUNT=2; curl https://raw.githubusercontent.com/kuadrant/multicluster-gateway-controller/main/hack/quickstart-setup.sh | bash - - -kind get clusters -# We have got some local kind clusters: two workload clusters, one OCM Hub/Control Plane - -# First, let us label each of these clusters as ingress-clusters which we can place Gateways on -kubectl label managedcluster kind-mgc-control-plane ingress-cluster=true -kubectl label managedcluster kind-mgc-workload-1 ingress-cluster=true -kubectl label managedcluster kind-mgc-workload-2 ingress-cluster=true - - -# Next, create a ManagedClusterSet with OCM, specifiying a label selector to select the clusters we just labelled with ingress-cluster=true -kubectl apply -f resources/managed-cluster-set_gateway-clusters.yaml - -# Now we create a ManagedClusterSetBinding to link the ManagedClusterSet named gateway-clusters to the multi-cluster-gateways namespace -kubectl apply -f resources/managed-cluster-set-binding_gateway-clusters.yaml - -# Create a Placement for the ManagedClusterSet, for our 3 clusters -kubectl apply -f resources/placement_http-gateway.yaml - -# Create a GatewayClass resource, to specify that Gateways of this class will be managed by the Kuadrant multi-cluster gateway controller -kubectl create -f ../../../hack/ocm/gatewayclass.yaml - -# Create a Gateway, called `prod-web`, (bfa.jm.hcpapps.net) -kubectl apply -f resources/gateway_prod-web.yaml -# Associate the `prod-web` Gateway with the Placement we created earlier -kubectl label gateway prod-web "cluster.open-cluster-management.io/placement"="http-gateway" -n multi-cluster-gateways - -# We have already created several OCM resources, such as a ManagedClusterSet for our clusters a Placement for this ManagedClusterSet, and a GatewayClass resource for Kuadrant to utilise our multicluster-gateway-controller -# Create a TLSPolicy -kubectl --context kind-mgc-control-plane apply -f resources/tlspolicy_prod-web.yaml - -# Get our ManagedClusters -kubectl get managedclusters --show-labels - -# We have got an echo app, which we will deploy to each of our managed clusters -cat resources/echo-app.yaml - -# Deploy an echo app to mgc-control-plane, mgc-workload-1 and mgc-workload-2 -kubectl --context kind-mgc-control-plane apply -f resources/echo-app.yaml -kubectl --context kind-mgc-workload-1 apply -f resources/echo-app.yaml -kubectl --context kind-mgc-workload-2 apply -f resources/echo-app.yaml - -# Check the apps -curl -k -s -o /dev/null -w '%{http_code}\n' https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.200.0' -curl -k -s -o /dev/null -w '%{http_code}\n' https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.201.0' -curl -k -s -o /dev/null -w '%{http_code}\n' https://bfa.jm.hcpapps.net --resolve 'bfa.jm.hcpapps.net:443:172.31.202.0' - -# Check the Gateways -kubectl --context kind-mgc-control-plane get gateways -A -kubectl --context kind-mgc-workload-1 get gateways -A -kubectl --context kind-mgc-workload-2 get gateways -A - -# And their status -kubectl get gateway prod-web -n multi-cluster-gateways -o yaml | yq .status - -# Look at a simple, RR DNSPolicy -cat resources/dnspolicy_prod-web-default.yaml - -# Apply it -kubectl --context kind-mgc-control-plane apply -f resources/dnspolicy_prod-web-default.yaml -n multi-cluster-gateways - -# Observe records created -kubectl --context kind-mgc-control-plane get dnsrecord -n multi-cluster-gateways -kubectl get dnsrecord prod-web-api -n multi-cluster-gateways -o json | jq .spec.endpoints - -# Setup weighted DNS for specifically labeled clusters -cat resources/dnspolicy_prod-web-weighted.yaml -kubectl --context kind-mgc-control-plane apply -f resources/dnspolicy_prod-web-weighted.yaml -n multi-cluster-gateways - -# Label the managedcluster clusters -kubectl label --overwrite managedcluster kind-mgc-control-plane kuadrant.io/lb-attribute-custom-weight=AWS -kubectl label --overwrite managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-custom-weight=AWS -kubectl label --overwrite managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-custom-weight=GCP - -# Show our labels -kubectl get managedclusters --show-labels - -# Show AWS - -# Next: Geo + Weighted -# Label the cluster geos -kubectl label --overwrite managedcluster kind-mgc-control-plane kuadrant.io/lb-attribute-geo-code=ES -kubectl label --overwrite managedcluster kind-mgc-workload-1 kuadrant.io/lb-attribute-geo-code=DE -kubectl label --overwrite managedcluster kind-mgc-workload-2 kuadrant.io/lb-attribute-geo-code=US - -# Show the labels -kubectl get managedclusters --show-labels - -# Show & apply the Geo + Weighted policy -cat resources/dnspolicy_prod-web-weighted-geo.yaml -kubectl --context kind-mgc-control-plane apply -f resources/dnspolicy_prod-web-weighted-geo.yaml -n multi-cluster-gateways - - -# Show Geo DNS working via https://www.whatsmydns.net/#A/bfa.jm.hcpapps.net diff --git a/docs/demos/dns-policy/weighted-geo-dnschecker.png b/docs/demos/dns-policy/weighted-geo-dnschecker.png deleted file mode 100644 index 1d88294f15bde8ae53a706443bfec82a31092994..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403292 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�Y^U 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

DNEX08QN8dQDhM{Sm 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

=@h_8_+AFO5;_0Q)6vZ73`BB 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 T5=(1Hz)RtsvP^}Paq#~EBt_>p diff --git a/docs/demos/dns-policy/weighted-geo.png b/docs/demos/dns-policy/weighted-geo.png deleted file mode 100644 index c3cbc03a8dd32caa0ad63fa1c1ba89360fd99616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186773 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⪚0+;eZ*F@}n>oX)YaZhN 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%0D3)kjQEp8Uow%KChKFqV9prphF!9s>Ye4;o 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 diff --git a/docs/demos/dns-policy/weighted.png b/docs/demos/dns-policy/weighted.png deleted file mode 100644 index 8e6f7d80ef64207aee8938655cf8b6ef6d04a41b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149643 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

+#H!{0UKsr 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⪙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