ฉันกำลังพยายามใช้ Terraform เพื่ออัปเดตเวอร์ชัน kubernetes สำหรับคลัสเตอร์ Azure Kubernetes Service (AKS) การกำหนดค่า Terraform สำหรับคลัสเตอร์มีลักษณะดังนี้:
ทรัพยากร "azurerm_kubernetes_cluster" "dev-k8s" {
ชื่อ = "คลัสเตอร์ของฉัน"
...เป็นต้น
kubernetes_version = "1.22.1"
linux_profile {
admin_username = var.admin_username
ssh_key {
key_data = ไฟล์ (var.k8s_public_key)
}
}
เมื่อได้ลองวิ่ง แผนดิน
จากเทอร์มินัล linux ในเครื่องของฉัน (เมื่อลงชื่อเข้าใช้ Azure ผ่าน Azure CLI) ตัวแปร var.k8s_public_key
แก้ไขเป็น ~/.ssh/my-k8s.pub
และฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาด: อาร์กิวเมนต์ของฟังก์ชันไม่ถูกต้อง
บน k8s.tf บรรทัดที่ 22 ในทรัพยากร "azurerm_kubernetes_cluster" "dev-k8s":
22: key_data = ไฟล์ (var.k8s_public_key)
|----------------
| var.k8s_public_key คือ "~/.ssh/my-k8s.pub"
ค่าพารามิเตอร์ "เส้นทาง" ไม่ถูกต้อง: ไม่มีไฟล์อยู่ที่
/home/myuser/.ssh/my-k8s.pub; ฟังก์ชันนี้ใช้งานได้เฉพาะกับไฟล์ที่
มีการกระจายเป็นส่วนหนึ่งของซอร์สโค้ดการกำหนดค่า ดังนั้นหากไฟล์นี้จะ
ถูกสร้างขึ้นโดยทรัพยากรในการกำหนดค่านี้ คุณต้องได้รับสิ่งนี้แทน
เป็นผลมาจากแอตทริบิวต์ของทรัพยากรนั้น
ฉันมี ส่วนตัว คีย์ แต่ไม่มีคีย์สาธารณะ หากจำเป็นต้องใช้รหัสสาธารณะ ฉันต้องสร้างใหม่ ข้อผิดพลาดทำให้ฉันสับสน เนื่องจากฉันคิดว่าคีย์สาธารณะต้องอยู่ในฝั่งเซิร์ฟเวอร์ ไม่ใช่ในฝั่งไคลเอนต์ของฉัน คำแนะนำที่ฉันได้ดูยังแสดงวิธีสร้างคู่คีย์สาธารณะ/ส่วนตัว จากนั้นสร้างคลัสเตอร์โดยใช้ข้อมูลประจำตัวเหล่านั้น ฉันไม่แน่ใจว่าจะทำอย่างไร อัปเดต คลัสเตอร์ที่ไม่มีรหัสสาธารณะ ถ้าฉันสร้างพับลิกคีย์ใหม่ คีย์สาธารณะนั้นจะเชื่อมโยงกับคลัสเตอร์ได้อย่างไร และคีย์นั้นทำงานอย่างไรเพื่อให้ฉันเข้าถึงคลัสเตอร์ได้ ฉันยังต้องการรหัสสาธารณะหรือไม่ หากฉันแค่อัปเดตคลัสเตอร์ ฉันกำลังมองหาคำแนะนำเกี่ยวกับสิ่งที่เกิดขึ้นหรือวิธีแก้ปัญหา เนื่องจากฉันไม่เข้าใจปัญหาอย่างชัดเจน
ถ้าฉันเอา linux_profile
ส่วนจากการกำหนดค่า Terraform แผนดิน
สำเร็จ แต่ต้องการสร้างคลัสเตอร์ใหม่ทั้งหมดที่มีชื่อเดียวกัน ฉันไม่แน่ใจว่าเกิดอะไรขึ้น หรือต้องทำอะไรเพื่ออัปเดตเวอร์ชัน kubernetes