首页 > 解决方案 > Kubernetes ExternalDNS 未在 Azure DNS 区域中创建记录集

问题描述

我按照这个来部署 K8s ExternalDNS 并做了以下事情:

如果我理解正确,ExternalDNS 应该在 Azure DNS 区域中创建记录集,并且入口应该可以工作。但是 ExternalDNS 没有创建记录集(入口不起作用)。

仅供参考,如果我执行以下操作,那么一切正常

但是,我想要的是托管我的 API api.demo.com(还有 SSL 和 Let's Encrypt)

foo-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: foo-api
  namespace: default
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/ssl-redirect: "false"
    appgw.ingress.kubernetes.io/backend-path-prefix: "/foo/"
spec:
  rules:
  - host: api.demo.com
    http:
      paths:
      - path: /foo/*
        pathType: Prefix
        backend:
          service:
            name: foo-api
            port:
              number: 80

external-dns.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: external-dns
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: external-dns
rules:
- apiGroups: [""]
  resources: ["services","endpoints","pods"]
  verbs: ["get","watch","list"]
- apiGroups: ["extensions","networking.k8s.io"]
  resources: ["ingresses"] 
  verbs: ["get","watch","list"]
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: external-dns-viewer
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: external-dns
subjects:
- kind: ServiceAccount
  name: external-dns
  namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: external-dns
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: external-dns
  template:
    metadata:
      labels:
        app: external-dns
    spec:
      serviceAccountName: external-dns
      containers:
      - name: external-dns
        image: k8s.gcr.io/external-dns/external-dns:v0.8.0
        args:
        - --source=service
        - --source=ingress
        - --domain-filter=demo.com
        - --provider=azure
        - --azure-resource-group=my-poc-rg
        volumeMounts:
        - name: azure-config-file
          mountPath: /etc/kubernetes
          readOnly: true
      volumes:
      - name: azure-config-file
        secret:
          secretName: azure-config-file

标签: kuberneteskubernetes-ingressazure-aksazure-dnsexternal-dns

解决方案


推荐阅读