Skip to content

Conversation

ivankatliarchuk
Copy link
Contributor

@ivankatliarchuk ivankatliarchuk commented Jul 4, 2025

What does it do ?

Note; tested with 1.22 and 1.25 versions. Works without issues

Currently supported version is 1.25, as 1.22 end of life is Jan 22, 2025

Stored versions

# istio 1.22
❯❯ kubectl get crd virtualservices.networking.istio.io -ojsonpath='{.status.storedVersions}'
["v1beta1"]%

❯❯ kubectl get crd gateways.networking.istio.io -ojsonpath='{.status.storedVersions}'
["v1beta1"]%

# istio 1.26
❯❯ kubectl get crd virtualservices.networking.istio.io -ojsonpath='{.status.storedVersions}'
["v1beta1"]%

❯❯ kubectl get crd gateways.networking.istio.io -ojsonpath='{.status.storedVersions}'
["v1beta1"]%

It is safe to usev1, but I think we should support v1beta while v1beta is current storage version

Screenshot 2025-07-04 at 12 14 23

Motivation

Fixes: #4473, #2798

Follow-up:

More

  • Yes, this PR title follows Conventional Commits
  • Yes, I added unit tests
  • Yes, I updated end user documentation accordingly

Smoke test for kind: Gateway

Arguments

go run main.go \
    --provider=aws \
    --registry=txt \
    --source=service \
    --log-level=info \
    --source=istio-gateway \
    --policy=sync \
    --fqdn-template="{{ .Kind | toLower }}-{{ .APIVersion | replace \"networking.istio.io/\" \"\"}}-{{.Name}}.local.tld" \
    --combine-fqdn-annotation \
    --domain-filter=local.tld
# https://istio.io/latest/docs/reference/config/networking/gateway/
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: httpbin-gateway
  namespace: extdns-istio
  annotations:
    external-dns.alpha.kubernetes.io/target : 10.172.1.12
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "httpbin.local.ltd"

Create
Screenshot 2025-07-04 at 10 49 43

Screenshot 2025-07-04 at 10 39 18

Delete

Screenshot 2025-07-04 at 10 43 03

Virtual Service

go run main.go \
    --provider=aws \
    --interval=30s \
    --registry=txt \
    --log-level=info \
    --source=istio-virtualservice \
    --policy=sync

Manifest files

---
# https://istio.io/latest/docs/reference/config/networking/gateway/
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: httpbin-gateway
  namespace: extdns-istio
  annotations:
    external-dns.alpha.kubernetes.io/target : 10.172.1.256
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "httpbin-test.local.tld"
---
# https://istio.io/latest/docs/reference/config/networking/virtual-service/
# Configure routes for traffic entering via the Gateway
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: httpbin-vservice
  namespace: extdns-istio
spec:
  hosts:
  - "httpbin-test.local.tld"
  gateways:
  - extdns-istio/httpbin-gateway
  http:
  - match:
    - uri:
        prefix: /status
    - uri:
        prefix: /delay
    route:
    - destination:
        port:
          number: 8000
        host: httpbin

Create
Screenshot 2025-07-04 at 12 03 08

Screenshot 2025-07-04 at 12 03 43

Delete

Screenshot 2025-07-04 at 12 07 18

Screenshot 2025-07-04 at 12 07 29

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. docs labels Jul 4, 2025
@k8s-ci-robot k8s-ci-robot requested review from mloiseleur and szuecs July 4, 2025 07:28
@ivankatliarchuk ivankatliarchuk marked this pull request as draft July 4, 2025 07:28
@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Jul 4, 2025
@ivankatliarchuk ivankatliarchuk marked this pull request as ready for review July 4, 2025 11:10
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 4, 2025
@ivankatliarchuk
Copy link
Contributor Author

Hi @mthemis-provenir, @simonostendorf and @stevehipwell can you confirm that this PR fixes your issue ? If needed, see how to test a PR ?. This will require golang to be installed.

@k8s-ci-robot k8s-ci-robot added the registry Issues or PRs related to a registry label Jul 4, 2025
@mthemis-provenir
Copy link
Contributor

Would it not make more sense to target support of Istio 1.26, given that only 1.25 and 1.26 are supported versions? Resources are stored as v1 in 1.26, so I doubt v1beta1 support will change anything.

@ivankatliarchuk
Copy link
Contributor Author

Everything is stored in v1beta, you could execute a command kubectl get crd gateways.networking.istio.io -ojsonpath='{.status.storedVersions}' or similar. v1 returned by the API at the moment.

I will try 1.25 as yep, 1.22 is end of life in Jan 2025.

You could try 1.26, it most likely will work as well. If not, I'll create a patch

@mthemis-provenir
Copy link
Contributor

Everything is stored in v1beta, you could execute a command kubectl get crd gateways.networking.istio.io -ojsonpath='{.status.storedVersions}' or similar. v1 returned by the API at the moment.

I will try 1.25 as yep, 1.22 is end of life in Jan 2025.

You could try 1.26, it most likely will work as well. If not, I'll create a patch

Strange, you are correct - gateways and virtualservices are stored as v1beta1, but describing resources themselves show as v1. In that case yes this most likely will work I guess.

@ivankatliarchuk ivankatliarchuk changed the title feat(source/istio): support version 1.22 feat(source/istio): support version 1.25+ Jul 4, 2025
@mloiseleur
Copy link
Collaborator

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 6, 2025
@mthemis-provenir
Copy link
Contributor

Any chance of an approval / merge here, guys? Would be good to get external-dns supporting Istio releases that aren't EOL.
cc @mloiseleur @szuecs

@ivankatliarchuk
Copy link
Contributor Author

I have no issues merging this; the change is approved. However, please be aware that the next release is likely to occur in September due to summer holiday period

@ivankatliarchuk
Copy link
Contributor Author

/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ivankatliarchuk

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 7, 2025
@k8s-ci-robot k8s-ci-robot merged commit 252a5e0 into kubernetes-sigs:master Jul 7, 2025
14 checks passed
@ivankatliarchuk ivankatliarchuk deleted the feat-support-v1-istio-4473 branch July 7, 2025 17:25
@ivankatliarchuk
Copy link
Contributor Author

troll-os pushed a commit to FiligranHQ/external-dns that referenced this pull request Aug 28, 2025
* feat(source/istio): support version 1.22

Signed-off-by: ivan katliarchuk <[email protected]>

* feat(source/istio): support version 1.22

Signed-off-by: ivan katliarchuk <[email protected]>

* feat(source/istio): support version 1.22

Signed-off-by: ivan katliarchuk <[email protected]>

* feat(source/istio): support version 1.22

Signed-off-by: ivan katliarchuk <[email protected]>

* feat(source/istio): support version 1.22

Signed-off-by: ivan katliarchuk <[email protected]>

* feat(source/istio): support version 1.22

Signed-off-by: ivan katliarchuk <[email protected]>

* feat(source/istio): support version 1.22

Signed-off-by: ivan katliarchuk <[email protected]>

* feat(source/istio): support version 1.25+

Co-authored-by: mthemis-provenir <[email protected]>

---------

Signed-off-by: ivan katliarchuk <[email protected]>
Co-authored-by: mthemis-provenir <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. docs lgtm "Looks good to me", indicates that a PR is ready to be merged. registry Issues or PRs related to a registry size/L Denotes a PR that changes 100-499 lines, ignoring generated files. source
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support Istio v1.22 with v1 release of the VirtualService & Gateway CRDs
4 participants