Kubernetes ExternalDNS не создает набор записей в зоне Azure DNS.

Я последовал этому, чтобы развернуть K8s ExternalDNS, и сделал следующее:

  • создан домен службы приложений Azure и зона DNS (т. е. demo.com)
  • включена управляемая идентификация для кластера AKS
  • назначена роль участника для управляемого идентификатора AKS для зоны DNS
  • создал секрет K8s для ExternalDNS (используя azure.json)
  • развернут ExternalDNS в пространстве имен по умолчанию K8s (AKS)
  • создал 2 входа с host: api.demo.com и пути /foo & /bar (К вашему сведению, AKS AGIC включен, а шлюз приложений использует статический общедоступный IP-адрес)

Если я правильно понимаю, ExternalDNS должен создать набор записей в зоне Azure DNS, и входящие данные должны работать. Но ExternalDNS не создает набор записей (входящие данные не работают).

К вашему сведению, если я сделаю следующее, то все будет работать нормально

  • создать набор записей псевдонима с "Alias type: Azure resource" который указывает на «Статический общедоступный IP-адрес», используемый шлюзом приложений.
  • контроллеры, помеченные [Route("api/foo")] & [Route("api/bar")] соответственно
  • создать 2 входа с host: demo.com и пути api/foo/* & api/bar/*
  • использовать аннотацию для каждого входа: appgw.ingress.kubernetes.io/backend-path-prefix: "/foo/" (то же самое для Bar API: "/bar/")

Но я хочу разместить свои 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

0 ответов

Другие вопросы по тегам