Azure

使用 Terraform 檢索 Azure Kubernetes 虛擬機

  • November 18, 2019

我使用 Terraform 創建了一個 Azure Kubernetes 集群。我使用了推薦的azurerm_kubernetes_cluster資源,它在後台創建了節點。因此,我無法將節點作為 Kubernetes 對象訪問。我現在想對與這些節點相關的警報進行 Terraform。但為了做到這一點,我需要將節點作為 Terraform 對象(Terraform 警報規則resource需要節點的 id:https ://www.terraform.io/docs/providers/azurerm/r/monitor_metric_alertrule.html ) .

所以我嘗試以 Terraform 的形式訪問節點datahttps ://www.terraform.io/docs/providers/azurerm/d/virtual_machine.html 。

如上一個連結所述,我們需要兩個資訊:虛擬機的resource_groupname。資源的輸出azurerm_kubernetes_cluster給了我們resource_group, 所以那部分是好的。但是節點有一個隨機生成的名稱(更準確地說,名稱的一部分是隨機生成的,另一部分可以從我們擁有的 Terraform 對像中猜測出來)。但正如前面的連結所示,不可能使用filter功能(例如在https://www.terraform.io/docs/providers/aws/d/ami.html中)或使用正則表達式來匹配節點名字。所以以下是不可能的(用*隨機生成的部分代替以及在哪里part1part2已知):

data "azurerm_virtual_machine" "nodes" {
 name                = "part1-*-part2"  
 resource_group_name = "${azurerm_kubernetes_cluster.this.node_resource_group}"
}

有沒有人知道如何解鎖以下之一:

  • 我在 Azure AKS 文件中找不到關於如何生成節點名稱的隨機生成部分的任何解釋(是否可以預測隨機生成?)並且無法通過實驗或瘋狂猜測找到自己。有人知道嗎?
  • resource_group我們能否以我還沒有想到的方式獲得使用數據的虛擬機列表?
  • 我似乎找不到任何使用 Terraform 完成 AKS 節點警報的部落格文章或影片,即使使用了骯髒的技巧。有人可以給我一個我錯過的連結嗎?

Terraform Azure 提供程序版本:1.23.0

Terraform 版本:0.10.x(Azure 提供者 1.23.0 需要)

你來錯地方了。創建 AKS 群集時,您正在創建一些 VM 作為工作節點,但是,這些不是普通的舊 VM,您無法像獨立 VM 一樣管理它們,AKS 群集承擔了大部分管理工作。

如果要監視 VM,則需要通過 AKS 群集執行此操作,使用 AKS 指標(包括節點指標)而不是作為獨立 VMS。您可以在此處查看 AKS 指標的更多詳細資訊 - https://docs.microsoft.com/en-us/azure/azure-monitor/insights/container-insights-overview

MS 推薦的替代方法是讓您想要執行的任何監控工具或類似工具在其自身的容器中執行。然後,您可以在 AKS 上將此作為守護程序集執行,以便它在每個節點上執行。這就是 Azure Monitor 收集器的工作方式。

引用自:https://serverfault.com/questions/960960