เมื่อทำการตั้งค่าคอนโทรลเลอร์ K8 ingress ซึ่งบันทึกไว้ที่นี่

ฉันไม่สามารถผ่านขั้นตอนของ "สร้างตัวควบคุม Ingress" ได้ ในระหว่างขั้นตอนคำสั่ง Helm และวางคำสั่งในโหมดแก้ไขข้อบกพร่อง ฉันเห็นว่ามีการหมดเวลาในขั้นตอนใดขั้นตอนหนึ่ง:

failed pre-install: timed out waiting for the condition

หลังจากตรวจสอบบันทึก K8 POD ฉันพบว่าระบบ K8 ไม่สามารถเชื่อมต่อกับรีจิสทรีได้เนื่องจากมีข้อผิดพลาดในการตรวจสอบสิทธิ์ เอาต์พุตต่อไปนี้ได้รับการแก้ไขด้วยเหตุผลด้านความปลอดภัย แต่แสดงข้อผิดพลาด

Failed to pull image "myregistry.azurecr.io/jettech/kube-webhook-certgen:[email protected]:...90bd8068": [rpc error: code = NotFound desc = failed to pull and unpack image "....azurecr.io/jettech/[email protected]:....9b9e90bd8068": failed to resolve reference "myregistry.azurecr.io/jettech/[email protected]:...190b1dcbcb9b9e90bd8068": ....azurecr.io/jettech/[email protected]:...9b9e90bd8068: not found, rpc error: code = Unknown desc = failed to pull and unpack image "myregistry.azurecr.io/jettech/[email protected]:...dcbcb9b9e90bd8068": failed to resolve reference "myregistry.azurecr.io/jettech/[email protected]:...b9b9e90bd8068": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized]

ฉันได้ตรวจสอบแล้วว่ารูปภาพอยู่ในรีจิสทรีของคอนเทนเนอร์ตามคำสั่ง "az acr import" และถ้าฉันทำการปรับใช้ K8 มาตรฐานโดยใช้ "kubectl" k8 จะสามารถเชื่อมต่อกับ acr ได้ ฉันได้ตรวจสอบการเชื่อมต่อระหว่างคลัสเตอร์และรีจิสตรีโดยใช้คำสั่งต่อไปนี้ซึ่งทำงานได้ตามที่คาดไว้:

az aks check-acr -n <cluster> -g <rg>  --acr <acr>

ความล้มเหลวนี้เกิดขึ้นเมื่อใช้คำสั่ง helm เท่านั้น

แก้ไข

หลังจากค้นคว้าเรื่องนี้มากขึ้น ฉันพบบทความต่อไปนี้

https://stackoverflow.com/questions/68949434/installing-nginx-ingress-controller-into-aks-cluster-cant-pull-image-from-azu

ดูเหมือนว่าจะมีปัญหากับไดเจสต์ ฉันเพิ่ม / แทนที่สิ่งต่อไปนี้ในคำสั่ง helm:

--set controller.image.digest="sha256:e9fb216ace49dfa4a5983b183067e97496e7a8b307d2093f4278cd550c303899" \
--set controller.admissionWebhooks.patch.image.digest="sha256:950833e19ade18cd389d647efb88992a7cc077abedef343fa59e012d376d79b7" \

อย่างไรก็ตาม เมื่อรันคำสั่ง helm ที่แก้ไขแล้ว POD จะอยู่ในสถานะข้อผิดพลาดโดยมีข้อผิดพลาดดังต่อไปนี้

unknown flag: --controller-class

ฉันพยายามตั้งค่าตัวแปร env CONTROLLER_TAG=v1.0.0 ตามที่บันทึกไว้ในบทความ แต่สิ่งนี้ไม่ได้ช่วย

อีกวิธีหนึ่งคือตั้งค่าหมายเลขเวอร์ชัน: 3.36.0 ในคำสั่ง สำเร็จแต่ต้องมีเวอร์ชันที่ดาวน์เกรด

answer

หลังจากติดต่อคำติชมของไซต์เอกสาร MS แล้ว พวกเขาได้แก้ไขเอกสารนี้ให้ฉันแก้ไขดังต่อไปนี้

https://github.com/MicrosoftDocs/azure-docs/issues/80321

หลังจากย้อนกลับและใช้การเปลี่ยนแปลงที่แก้ไขแล้วอีกครั้ง คำสั่งก็สำเร็จ กุญแจสำคัญคือการลบพ็อดโดยใช้คำสั่งถอนการติดตั้ง helm:

helm uninstall nginx-ingress --namespace ingress-basic

จากนั้นลบที่เก็บ ACR ออกจาก ACR ของคุณ:

jettech/kube-webhook-certgen
defaultbackend-amd64
jetstack/cert-manager-controller
jetstack/cert-manager-webhook
jetstack/cert-manager-cainjector

ซึ่งสร้างขึ้นด้วยคำสั่ง "az acr import" จากนั้นรันคำสั่งที่แก้ไขแล้วอีกครั้ง

หวังว่าจะมีคนพบสิ่งนี้ที่มีค่า