External-dns 看不到 Istio 网关

问题描述 投票:0回答:1

我正在尝试使用外部 DNS 和 Istio 网关在 Google Cloud DNS 上自动创建记录。我发现过去几天外部 DNS 存储库发生了相当多的更改,因此我将责任归咎于我以前能够执行此操作而不再能够执行此操作!

无论如何,这是我的网关和值文件:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: example-gateway
  namespace: default
  annotations:
    istio-type: internal
spec:
  selector:
    istio: internalgateway
  servers:
  - hosts:
    - '*.example.com'
    - example.com
    port:
      name: http
      number: 80
      protocol: HTTP
    tls:
      httpsRedirect: true
  - hosts:
    - '*.example.com'
    - example.com
    port:
      name: https
      number: 443
      protocol: HTTPS
    tls:
      mode: SIMPLE
      privateKey: /etc/istio/ingressgateway-certs/tls.key
      serverCertificate: /etc/istio/ingressgateway-certs/tls.crt

这是我的价值观:

image:
  registry: registry.opensource.zalan.do
  repository: teapot/external-dns
  tag: latest
...
sources:
#  - service
#  - ingress
  - istio-gateway
#  - crd
...
provider: google

publishInternalServices: true

google:
  ## Google Project to use
  ##
  project: "XXX"
  serviceAccountSecret: "clouddns"
  serviceAccountKey: "credentials.json"

domainFilters:
  - example.com

annotationFilter: "type=internal"
...
rbac:
  create: true
...

这是我从 external-dns pod 获取的日志:

...
time="2019-07-05T16:09:11Z" level=info msg="Created Istio client"
time="2019-07-05T16:09:11Z" level=info msg="All records are already up to date"

尽管很明显这些记录不存在于我的 Cloud DNS 区域中。

知道为什么 external-dns 看不到我的网关吗?

kubernetes dns istio google-cloud-dns external-dns
1个回答
0
投票

以下两件事帮助我解决了这个问题。

  1. 检查 external-dns 配置是否将 istio-gateway 列为源之一。只需描述 external-dns pod,它应该将 istio-gateway 作为源参数。
  2. 在网关配置中添加注释“external-dns.alpha.kubernetes.io/hostname:”

例如

api版本:networking.istio.io/v1alpha3 种类: 网关 元数据: 名称:示例网关 命名空间:默认 注释: istio 类型:内部 external-dns.alpha.kubernetes.io/主机名:“example.com”

© www.soinside.com 2019 - 2024. All rights reserved.