GitOps (Flux v2) durumunu ve etkinliğini izleme
Azure Arc özellikli Kubernetes kümelerinizde veya Azure Kubernetes Service (AKS) kümelerinde Flux v2 ile GitOps ile ilgili durumu ve etkinliği izlemek için çeşitli seçenekleriniz vardır:
- Tek tek kümelerdeki Flux yapılandırmalarını ve kaynaklarını izlemek için Azure portalını kullanın.
- Dağıtım ve uyumluluk durumunu izlemek için Grafana panosunu kullanın.
- Kaynak tüketimini ve mutabakatlarını izlemek için Flux Denetim Düzlemi ve Flux Kümesi İstatistikleri panolarını kullanın.
- Kümelerden Prometheus kazımasını etkinleştirin ve Azure İzleyici çalışma alanında verileri kullanarak kendi panolarınızı oluşturun.
- Prometheus kazıma aracılığıyla sağlanan verileri kullanarak Azure İzleyici'de uyarılar oluşturun.
Bu konu başlığı altında, Flux etkinliğinizi ve durumunuzu izlemenin bazı yolları açıklanmaktadır.
Azure portalında Flux yapılandırmalarını izleme
Kümenizde Flux yapılandırmaları oluşturduktan sonra, kümeye gidip GitOps'u seçerek Azure portalında durum bilgilerini görüntüleyebilirsiniz.
Küme uyumluluğu ve nesneleriyle ilgili ayrıntıları görüntüleme
Uyumluluk durumu, kümenin geçerli durumunun istenen durumla eşleşip eşleşmediğini gösterir. Olası değerler:
- Uyumlu: Kümenin durumu istenen durumla eşleşir.
- Beklemede: İstenen güncelleştirilmiş bir durum algılandı, ancak bu durum kümede henüz karşılanmadı.
- Uyumlu Değil: Geçerli durum istenen durumla eşleşmiyor.
Kümede mutabakat sorunlarının hatalarını ayıklamaya yardımcı olmak için Yapılandırma nesneleri'ne tıklayın. Burada, Flux'un her Flux yapılandırması için oluşturduğu yapılandırma nesnelerinin her birinin günlüklerini görüntüleyebilirsiniz. Günlüklerini görüntülemek için bir nesne adı seçin.
Flux yapılandırmalarının uygulanması sonucunda oluşturulan Kubernetes nesnelerini görüntülemek için kümenin hizmet menüsünün Kubernetes kaynakları bölümünde İş Yükleri'ni seçin. Burada, kümede oluşturulan tüm kaynakların tüm ayrıntılarını görüntüleyebilirsiniz.
Varsayılan olarak, ad alanına ve hizmet adına göre filtreleyebilirsiniz. Ayrıca, aramayı daraltmaya yardımcı olmak için uygulamalarınızda kullanıyor olabileceğiniz herhangi bir etiket filtresi de ekleyebilirsiniz.
Flux yapılandırma durumunu ve ayrıntılarını görüntüleme
Her Flux yapılandırması için State sütunu, Flux yapılandırma nesnesinin kümede başarıyla oluşturulup oluşturulmadığını gösterir.
Aşağıdaki bilgiler de dahil olmak üzere Genel Bakış sayfasını görmek için herhangi bir Flux yapılandırması seçin:
- Son eşitleme için kaynak işleme kimliği
- En son kaynak güncelleştirmesinin zaman damgası
- Durum güncelleştirme zaman damgası (en son istatistiklerin ne zaman alındığını gösterir)
- Depo URL'si ve dal
- Farklı kustomizasyonları görüntüleme bağlantıları
GitOps durumunu ve etkinliğini izlemek için panoları kullanma
Flux v2 ile GitOps için durum, uyumluluk, kaynak tüketimi ve mutabakat etkinliğini izlemenize yardımcı olacak panolar sağlıyoruz. Bu JSON panoları, verilerinizi gerçek zamanlı olarak görüntülemenize ve çözümlemenize yardımcı olmak için Grafana'ya aktarılabilir. Bu bilgiler için uyarılar da ayarlayabilirsiniz.
Bu panoları içeri aktarmak ve kullanmak için şunlar gerekir:
- Bir veya daha fazla Arc özellikli Kubernetes kümesi veya AKS kümesi.
- Kümelerde yüklü olan microsoft.flux uzantısı.
- Kümelerde oluşturulan en az bir Flux yapılandırması .
Dağıtım ve uyumluluk durumunu izleme
Kümeler arasında Flux uzantısı dağıtımını ve durumunu ve bu kümelerdeki Flux yapılandırmasının uyumluluk durumunu izlemenize olanak sağlayan panoları içeri aktarmak için bu adımları izleyin.
Not
Bu adımlar, panoyu Azure Yönetilen Grafana'ya aktarma işlemini açıklar. Bu panoyu herhangi bir Grafana örneğine de aktarabilirsiniz. Bu seçenekle bir hizmet sorumlusu kullanılmalıdır; yönetilen kimlik, Azure Yönetilen Grafana dışında veri bağlantısı için desteklenmez.
Azure portalını veya Azure CLI'yı kullanarak Azure Yönetilen Grafana örneği oluşturun. Genel Bakış sayfasında uç noktasını seçerek Grafana'ya erişebildiğinizden emin olun. Panoları görüntülemek ve düzenlemek için en azından Grafana Düzenleyicisi düzeyinde izinlere ihtiyacınız vardır. Grafana örneğinde Erişim denetimi (IAM) öğesine giderek erişiminizi denetleyebilirsiniz.
Azure Yönetilen Grafana örneği için yönetilen kimlik kullanıyorsanız, Azure Yönetilen Grafana örneğinizi oluşturduğunuz abonelikte İzleme Okuyucusu rolü atamak için şu adımları izleyin:
- Azure portalında, eklemek istediğiniz aboneliğe gidin.
- Erişim denetimi (IAM) öğesini seçin.
- Rol ataması ekle’yi seçin.
- İzleme Okuyucusu rolünü ve ardından İleri'yi seçin.
- Üyeler sekmesinde Yönetilen kimlik'i ve ardından Üye seç'i seçin.
- Yönetilen kimlik listesinden aboneliği ve ardından Azure Yönetilen Grafana'yı ve Azure Yönetilen Grafana örneğinizin adını seçin.
- Gözden geçir + Ata'yı seçin.
Hizmet sorumlusu kullanıyorsanız, veri kaynağı bağlantınız için kullanacağınız hizmet sorumlusuna İzleme Okuyucusu rolünü verin. Aynı adımları izleyin, ancak Üyeler sekmesinde Kullanıcı, grup veya hizmet sorumlusu'nun ardından hizmet sorumlunuzu seçin. (Azure Yönetilen Grafana kullanmıyorsanız, veri bağlantısı erişimi için bir hizmet sorumlusu kullanmanız gerekir.)
Azure Yönetilen Grafana örneğinizde Azure İzleyici Veri Kaynağı bağlantısını oluşturun. Bu bağlantı panonun Azure Kaynak Grafı verilerine erişmesini sağlar.
Panoyu içeri aktardıktan sonra, izlemekte olduğunuz kümelerdeki bilgileri, ayrıntıları sağlayan çeşitli panellerle görüntüler. Bir öğe hakkında daha fazla ayrıntı için yapılandırmalar, hatalar ve günlükler hakkında bilgi bulabileceğiniz Azure portalını ziyaret etmek için bağlantıyı seçin.
Flux Uzantısı Dağıtım Durumu tablosu, Flux uzantısının dağıtıldığı tüm kümeleri ve geçerli dağıtım durumunu listeler.
Flux Yapılandırması Uyumluluk Durumu tablosu, kümelerde oluşturulan tüm Flux yapılandırmalarını ve bunların uyumluluk durumunu listeler. Helm sürümleri ve kustomizasyonları gibi yapılandırma nesnelerinin durum ve hata günlüklerini görmek için ComplianceState sütunundan Uyumsuz bağlantısını seçin.
Duruma Göre Flux Uzantısı Dağıtımlarının Sayısı grafiği, sağlama durumlarına göre kümelerin sayısını gösterir.
Uyumluluk Durumuna Göre Flux Yapılandırmalarının Sayısı grafiği, kaynak depoya göre uyumluluk durumlarına göre Flux yapılandırmalarının sayısını gösterir.
Uygulama dağıtımlarını izlemek için pano verilerini filtreleme
Gösterilen bilgileri değiştirmek için GitOps Flux - Uygulama Dağıtımları Panosu'ndaki verileri filtreleyebilirsiniz. Örneğin, yalnızca belirli abonelikler veya kaynak grupları için verileri gösterebilir veya verileri belirli bir kümeyle sınırlayabilirsiniz. Bunu yapmak için, en üst düzey açılan listelerden veya tablolardaki herhangi bir sütun üst bilgisinden filtre seçeneğini belirleyin.
Örneğin, Flux Yapılandırması Uyumluluk Durumu tablosunda SourceLastSyncCommit sütunundan belirli bir işlemeyi seçebilirsiniz. Bunu yaparak, bir yapılandırma dağıtımının durumunu bu işlemeden etkilenen tüm kümelere izleyebilirsiniz.
Uzantı ve yapılandırma hataları için uyarılar oluşturma
Önceki bölümde açıklandığı gibi panoyu içeri aktardıktan sonra, uyarılar ayarlayabilirsiniz. Bu uyarılar, Flux uzantıları veya Flux yapılandırmalarında hatalarla karşılaştığında sizi bilgilendirir.
Uyarı oluşturmak için bu adımları izleyin. Uzantı sağlama veya uzantı yükseltme hatalarını algılamak veya uyumluluk durumu hatalarını algılamak için örnek sorgular sağlanır.
Panonun sol gezinti menüsünde Uyarı'yı seçin.
Uyarı kuralları'nı seçin.
+ Uyarı kuralı oluştur'u seçin. Yeni uyarı kuralı sayfası açılır ve Grafana tarafından yönetilen uyarılar seçeneği varsayılan olarak seçilidir.
Kural adı alanına açıklayıcı bir ad ekleyin. Bu ad uyarı kuralı listesinde görüntülenir ve bu kuraldan oluşturulan her uyarı örneğinin etiketi olarak
alertname
kullanılır.Sorgu ve uyarı koşulu ayarla altında:
Veri kaynağı seçin. Pano için kullanılan aynı veri kaynağı burada kullanılabilir.
Hizmet için Azure Kaynak Grafı'ı seçin.
Açılan listeden abonelikleri seçin.
Kullanmak istediğiniz sorguyu girin. Örneğin, uzantı sağlama veya yükseltme hataları için şu sorguyu girebilirsiniz:
kubernetesconfigurationresources | where type == "microsoft.kubernetesconfiguration/extensions" | extend provisioningState = tostring(properties.ProvisioningState) | where provisioningState == "Failed" | summarize count() by provisioningState
Veya uyumluluk durumu hataları için şu sorguyu girebilirsiniz:
kubernetesconfigurationresources | where type == "microsoft.kubernetesconfiguration/fluxconfigurations" | extend complianceState=tostring(properties.complianceState) | where complianceState == "Non-Compliant" | summarize count() by complianceState
Eşik kutusu için giriş türü için A'yı seçin ve kümede yalnızca bir uzantı başarısız olsa bile uyarıları almak için eşiği 0 olarak ayarlayın. Bunu Uyarı koşulu olarak işaretleyin.
Uyarı değerlendirme aralığını belirtin:
- Koşul için, uyarı kuralını tetikleyen sorguyu veya ifadeyi seçin.
- Her değerini değerlendir için değerlendirme sıklığını 10 saniyenin katı olarak girin.
- Için değerlendir alanında, uyarı oluşturulmadan önce koşulun ne kadar süreyle doğru olması gerektiğini belirtin.
- Veri ve hata işlemeyi yapılandırma bölümünde uyarı kuralı veri döndürmediğinde veya hata döndürdüğünde ne olacağını belirtin.
- Sorguyu çalıştırmanın sonuçlarını denetlemek için Önizleme'yi seçin.
Depolama konumunu, kural grubunu ve kuralla ilişkilendirmek istediğiniz diğer meta verileri ekleyin.
- Klasör için kuralın depolandığı klasörü seçin.
- Grup için önceden tanımlanmış bir grup belirtin.
- İsterseniz uyarı iletilerini özelleştirmek için bir açıklama ve özet ekleyin.
- Gerektiğinde Runbook URL'si, panel, pano ve uyarı kimlikleri ekleyin.
İsterseniz, herhangi bir özel etiket ekleyin. Ardından Kaydet'i seçin.
Uyarılarınız için iletişim noktalarını ve bildirim ilkelerini de yapılandırabilirsiniz.
Kaynak tüketimini ve mutabakatları izleme
Flux kaynak tüketimini, mutabakatları, API isteklerini ve mutabakat durumunu izlemenize olanak sağlayan panoları içeri aktarmak için bu adımları izleyin.
Azure İzleyici Çalışma Alanı oluşturmak için adımları izleyin.
Azure portalını veya Azure CLI'yı kullanarak Azure Yönetilen Grafana örneği oluşturun.
İzlemek istediğiniz AKS kümelerinde ve/veya Arc özellikli Kubernetes kümelerinde Prometheus ölçüm koleksiyonunu etkinleştirin.
Azure İzleyici Aracısı'nı yapılandırma haritası oluşturarak Azure Yönetilen Flux ölçümlerini kazımak için yapılandırın:
kind: ConfigMap apiVersion: v1 data: schema-version: #string.used by agent to parse config. supported versions are {v1}. Configs with other schema versions will be rejected by the agent. v1 config-version: #string.used by customer to keep track of this config file's version in their source control/repository (max allowed 10 chars, other chars will be truncated) ver1 default-scrape-settings-enabled: |- kubelet = true coredns = false cadvisor = true kubeproxy = false apiserver = false kubestate = true nodeexporter = true windowsexporter = false windowskubeproxy = false kappiebasic = true prometheuscollectorhealth = false # Regex for which namespaces to scrape through pod annotation based scraping. # This is none by default. Use '.*' to scrape all namespaces of annotated pods. pod-annotation-based-scraping: |- podannotationnamespaceregex = "flux-system" default-targets-scrape-interval-settings: |- kubelet = "30s" coredns = "30s" cadvisor = "30s" kubeproxy = "30s" apiserver = "30s" kubestate = "30s" nodeexporter = "30s" windowsexporter = "30s" windowskubeproxy = "30s" kappiebasic = "30s" prometheuscollectorhealth = "30s" podannotations = "30s" metadata: name: ama-metrics-settings-configmap namespace: kube-system
Flux Denetim Düzlemi ve Flux Kümesi İstatistikleri panolarını indirin.
Yönetilen Prometheus çalışma alanını Yönetilen Grafana örneğine bağlayın. Bu işlemin tamamlanması birkaç dakika sürer.
Bu JSON panolarını Grafana'ya aktarmak için adımları izleyin.
Panoları içeri aktardıktan sonra, izlemekte olduğunuz kümelerdeki bilgileri görüntülerler. Yalnızca belirli bir küme veya ad alanına ilişkin bilgileri göstermek için, her panonun üst kısmındaki filtreleri kullanın.
Flux Denetim Düzlemi panosu durum kaynağı tüketimi, küme düzeyinde mutabakatlar ve Kubernetes API istekleri hakkındaki ayrıntıları gösterir.
Flux Kümesi İstatistikleri panosu, her bir uzlaştırmacının durumu ve yürütme süresiyle birlikte, uzlaştırma sayısıyla ilgili ayrıntıları gösterir.
Kaynak tüketimi ve mutabakat sorunları için uyarılar oluşturma
Önceki bölümde açıklandığı gibi panoyu içeri aktardıktan sonra, uyarılar ayarlayabilirsiniz. Bu uyarılar, dikkat gerektiren kaynak tüketimi ve mutabakat sorunları hakkında sizi bilgilendirir.
Bu uyarıları etkinleştirmek için, burada gösterilene benzer bir Bicep şablonu dağıtırsınız. Bu şablondaki uyarı kuralları, gerektiğinde değiştirilebilen örneklerdir.
Bicep şablonunu indirip değişikliklerinizi yaptıktan sonra, şablonu dağıtmak için bu adımları izleyin.
param azureMonitorWorkspaceName string
param alertReceiverEmailAddress string
param kustomizationLookbackPeriodInMinutes int = 5
param helmReleaseLookbackPeriodInMinutes int = 5
param gitRepositoryLookbackPeriodInMinutes int = 5
param bucketLookbackPeriodInMinutes int = 5
param helmRepoLookbackPeriodInMinutes int = 5
param timeToResolveAlerts string = 'PT10M'
param location string = resourceGroup().location
resource azureMonitorWorkspace 'Microsoft.Monitor/accounts@2023-04-03' = {
name: azureMonitorWorkspaceName
location: location
}
resource fluxRuleActionGroup 'Microsoft.Insights/actionGroups@2023-01-01' = {
name: 'fluxRuleActionGroup'
location: 'global'
properties: {
enabled: true
groupShortName: 'fluxGroup'
emailReceivers: [
{
name: 'emailReceiver'
emailAddress: alertReceiverEmailAddress
}
]
}
}
resource fluxRuleGroup 'Microsoft.AlertsManagement/prometheusRuleGroups@2023-03-01' = {
name: 'fluxRuleGroup'
location: location
properties: {
description: 'Flux Prometheus Rule Group'
scopes: [
azureMonitorWorkspace.id
]
enabled: true
interval: 'PT1M'
rules: [
{
alert: 'KustomizationNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="Kustomization"}) > 0'
for: 'PT${kustomizationLookbackPeriodInMinutes}M'
labels: {
description: 'Kustomization reconciliation failing for last ${kustomizationLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'Kustomization reconciliation failing for last ${kustomizationLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'HelmReleaseNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="HelmRelease"}) > 0'
for: 'PT${helmReleaseLookbackPeriodInMinutes}M'
labels: {
description: 'HelmRelease reconciliation failing for last ${helmReleaseLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'HelmRelease reconciliation failing for last ${helmReleaseLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'GitRepositoryNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="GitRepository"}) > 0'
for: 'PT${gitRepositoryLookbackPeriodInMinutes}M'
labels: {
description: 'GitRepository reconciliation failing for last ${gitRepositoryLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'GitRepository reconciliation failing for last ${gitRepositoryLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'BucketNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="Bucket"}) > 0'
for: 'PT${bucketLookbackPeriodInMinutes}M'
labels: {
description: 'Bucket reconciliation failing for last ${bucketLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'Bucket reconciliation failing for last ${bucketLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'HelmRepositoryNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="HelmRepository"}) > 0'
for: 'PT${helmRepoLookbackPeriodInMinutes}M'
labels: {
description: 'HelmRepository reconciliation failing for last ${helmRepoLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'HelmRepository reconciliation failing for last ${helmRepoLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
]
}
}
Sonraki adımlar
- Yapılandırmayı ve uygulama dağıtımını yönetmek için Flux v2 ile GitOps kullanma öğreticimizi gözden geçirin.
- Azure İzleyici Container Insights hakkında bilgi edinin.