ไม่สามารถสร้างใบรับรองตัวแทน (*) ด้วย Kubernetes และ Letsencrypt โดยใช้โซน Azure DNS

ฉันค่อนข้างใหม่กับ Kubernetes แต่จนถึงขณะนี้สามารถกำหนดค่าคลัสเตอร์ AKS (Azure Kubernetes Services) ได้ ฉันมีเนมสเปซหลายรายการสำหรับบริการของฉัน (Dev, stage, prod) และกำหนดค่าบริการ Ingress โดยใช้ nginx (ในเนมสเปซของตัวเอง 'ingress-nginx') การตั้งค่าทำงานได้อย่างสมบูรณ์กับ HTTP

ปัญหาของฉันเริ่มต้นเมื่อฉันพยายามใช้ HTTPS ติดตั้ง cert-manager ครั้งแรกโดยใช้สคริปต์นี้ สร้างเนมสเปซของตัวเองอีกครั้ง: 'cert-manager' ฉันไม่ได้ใช้ HELM เพียงรายการปกติ ติดตาม MS Azure การกำหนดค่า DNS ด้วย .

ทุกอย่างดูถูกต้อง ฉันมีบริการของฉัน ข้อมูลลับคลัสเตอร์Issuer ฯลฯ แม้แต่ความท้าทายที่สร้างขึ้นใน Azure DNS Zone คุณสามารถดูได้บนพอร์ทัล Azure แต่ฉันไม่ได้รับใบรับรองใดๆ

ป้อนคำอธิบายรูปภาพที่นี่

การกำหนดค่า ClusterIssuer:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: 8b3s-org-letsencrypt
spec:
  acme:
    #server: https://acme-v02.api.letsencrypt.org/directory
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: <[email protected]>
    privateKeySecretRef:
      name: 8b3s-org-letsencrypt-key
    solvers:
    - selector:
      dns01:
        azuredns:
          clientID: ....
          clientSecretSecretRef:
          # The following is the secret we created in Kubernetes. Issuer will use this to present challenge to Azure DNS.
            name: azuredns-config
            key: client-secret
          subscriptionID: ....
          tenantID: "...."
          resourceGroupName: Web
          hostedZoneName: 8b3s.org
          # Azure Cloud Environment, default to AzurePublicCloud
          environment: AzurePublicCloud

การกำหนดค่าทางเข้า:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: 8b3s-virtual-host-ingress
  namespace: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /
    cert-manager.io/cluster-issuer: "8b3s-org-letsencrypt"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
     - '*.8b3s.org'
    secretName: 8b3s-org-letsencrypt-tls
  rules:
  - host: dev.8b3s.org
    http:
      paths:
      - path: /
        backend:
          serviceName: the8b3swebsite-development-ext
          servicePort: 8080

ดังนั้นปัญหาคือทุกการกำหนดค่าดูเหมือนใช้ได้ แต่ไม่มีใบรับรองเลย ฉันได้รับเฉพาะ 'Opaque' ' tls.key: 1679 bytes' เป็น '8b3s-org-letsencrypt-key' ในเนมสเปซ 'cert-manager'

ป้อนคำอธิบายรูปภาพที่นี่

ใบรับรองได้ถูกสร้างขึ้นสำหรับเนมสเปซ 'ingress-nginx' '8b3s-org-letsencrypt-tls' เป็นประเภท 'kubernetes.io/tls' แต่ 'ca.crt: 0 bytes' และ 'tls.crt: 0 bytes'

ป้อนคำอธิบายรูปภาพที่นี่

ฉันยังดูผลลัพธ์ของพ็อดใบรับรองผู้จัดการด้วย พบว่าบันทึก 2 รายการนั้นแปลก (หากจำเป็น ฉันมีบันทึกทั้งหมด):

I0222 22:51:00.067791       1 acme.go:201] cert-manager/controller/certificaterequests-issuer-acme/sign "msg"="acme Order resource is not in a ready state, waiting..." "related_resource_kind"="Order" "related_resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645" "related_resource_namespace"="ingress-nginx" "resource_kind"="CertificateRequest" "resource_name"="8b3s-org-letsencrypt-tls-1807766204" "resource_namespace"="ingress-nginx" 

I0222 22:51:00.068069       1 sync.go:129] cert-manager/controller/orders "msg"="Creating additional Challenge resources to complete Order" "resource_kind"="Order" "resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645" "resource_namespace"="ingress-nginx" 

E0222 22:51:01.876182       1 sync.go:184] cert-manager/controller/challenges "msg"="propagation check failed" "error"="DNS record for \"8b3s.org\" not yet propagated" "dnsName"="8b3s.org" "resource_kind"="Challenge" "resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645-481622463" "resource_namespace"="ingress-nginx" "type"="dns-01" 

มีความคิดอะไรบ้างที่อาจเป็นปัญหา?

อัปเดต: เพิ่มระเบียน Azure NS ไปยัง DNS โดเมนของฉันตามที่แนะนำ รอประมาณหนึ่งชั่วโมง แต่ไม่มีผลใด ๆ ... ลบความลับ CA ที่มีอยู่ รีสตาร์ท Nginx พ็อดผู้จัดการใบรับรองทั้งหมด และสังเกตเห็นข้อผิดพลาดดังนี้:

E0225 10:14:03.671099       1 util.go:71] cert-manager/controller/certificaterequests/handleOwnedResource "msg"="error getting order referenced by resource" "error"="certificaterequest.cert-manager.io \"8b3s-org-letsencrypt-tls-1807766204\" not found" "related_resource_kind"="CertificateRequest" "related_resource_name"="8b3s-org-letsencrypt-tls-1807766204" "related_resource_namespace"="ingress-nginx" "resource_kind"="Order" "resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645" "resource_namespace"="ingress-nginx" 
E0225 10:14:03.674679       1 util.go:71] cert-manager/controller/certificates/handleOwnedResource "msg"="error getting order referenced by resource" "error"="certificate.cert-manager.io \"8b3s-org-letsencrypt-tls\" not found" "related_resource_kind"="Certificate" "related_resource_name"="8b3s-org-letsencrypt-tls" "related_resource_namespace"="ingress-nginx" "resource_kind"="CertificateRequest" "resource_name"="8b3s-org-letsencrypt-tls-1807766204" "resource_namespace"="ingress-nginx" 

person Major    schedule 24.02.2020    source แหล่งที่มา


คำตอบ (1)


บันทึก whois สำหรับโดเมนของคุณแสดงให้เห็นว่าโดเมนยังคงชี้ไปที่ NS57.DOMAINCONTROL.COM ไม่ใช่ 4 Azure DNS ตัวแก้ไขที่คุณแสดงในภาพหน้าจอของคุณ ดังนั้น Let's Encrypt จึงไม่มีทางรู้ว่าพวกเขาควรใช้ Azure เพื่อค้นหาบันทึก _acme-challenge นั้น และมันล้มเหลว

person mdaniel    schedule 25.02.2020
comment
ขอบคุณสำหรับคำตอบ ฉันถูกบล็อกเรื่องนี้มาระยะหนึ่งแล้ว...ตกลง หมายความว่าการกำหนดค่า AKS นั้นถูกต้อง แต่ฉันต้องแก้ไข DNS โดเมนของฉันหรือไม่ แต่อะไรกันแน่? ขออภัย ฉันไม่ใช่ผู้เชี่ยวชาญด้านเครือข่ายเพียงเป็นนักพัฒนา กำลังดูบันทึก DNS โดเมนของฉันบน Godaddy สิ่งที่คุณกล่าวถึง NS57.DOMAINCONTROL.COM ไม่สามารถเปลี่ยนแปลงได้ เพิ่มบันทึก NS ใหม่ที่ชี้ไปที่ Azure เมื่อ 30 นาทีที่แล้ว จนถึงขณะนี้ยังไม่มีผลกระทบ - person Major; 25.02.2020
comment
ตามที่ผู้โหวตปิดระบุว่า นี่คือไซต์สำหรับคำถามเกี่ยวกับการเขียนโปรแกรม ไม่ใช่สำหรับวิธีการทำงานของ DNS คุณอาจโชคดีกว่าบน serverfault.com หรืออ่านสักนิด เนื่องจากปัญหาที่คุณพยายามแก้ไขไม่ใช่ปัญหาใหม่ - person mdaniel; 25.02.2020
comment
ฉันต้องชี้ให้เห็นว่าฉันเพิ่งเริ่มทำงานกับ Kubernetes และ Docker โดยทั่วไปเมื่อสัปดาห์ที่แล้ว และการกำหนดค่าทุกองค์ประกอบอย่างน้อยก็ล้นหลาม ... หรือฉันอาจบอกว่าบ้า :) ดังนั้นฉันคิดว่าคำถามเดิมมีความเกี่ยวข้อง ดีใจที่รู้ว่าฉันทำทุกอย่างถูกต้องตั้งแต่ครั้งแรก :) คุณก็พูดถูกเช่นกัน ตอนนี้ฉันเปลี่ยน NS ที่ Godaddy หรือบอกว่าพยายามเปลี่ยนแต่ไซต์ของพวกเขาขัดข้องด้วยข้อผิดพลาด JS... ดังนั้นฉันจึงต้องติดต่อฝ่ายสนับสนุนและขอให้ผู้ชายอัปเดต เรื่องราวทั้งหมดนี้เป็นเรื่องบ้า หลังจากรอการเผยแพร่และการลบคีย์เก่า + การรีไซเคิล Pod ก็ใช้งานได้! ขอบคุณคุณช่วยฉันสองสามวัน :) - person Major; 25.02.2020