Por padrão, as regras de alerta propagadas a partir de uma instância do Fleet são idênticas em todos os clusters associados. Quando clusters diferentes exigem configurações de alerta distintas — como limiares separados, grupos de contatos ou alertas específicos para GPU — utilize políticas de substituição para entregar regras de alerta específicas por cluster.
Pré-requisitos
Antes de começar, verifique se você possui:
O recurso de gerenciamento de Fleet ativado
Dois clusters associados à instância do Fleet: o cluster provedor de serviços e o cluster consumidor de serviços
Como funciona
O ACK utiliza o KubeVela para definir e propagar políticas de substituição no nível do Fleet, seguindo o mesmo modelo de configuração diferenciada de aplicações. Defina um conjunto básico de regras de alerta na instância do Fleet e aplique políticas de substituição para clusters específicos.
A figura a seguir ilustra como as regras de alerta são diferenciadas entre os clusters. Uma política de substituição é criada na instância do Fleet. A configuração específica do cluster é entregue ao ACK Cluster 2, enquanto o ACK Cluster 1 mantém as regras de alerta originais.
Tipos de recursos YAML
O arquivo ackalertrule-app-override.yaml neste tópico define quatro tipos de recursos do KubeVela:
|
Tipo de recurso |
Kind |
Finalidade |
|
Política de topologia |
|
Especifica quais clusters recebem as regras de alerta |
|
Política de substituição |
|
Define as alterações de configuração específicas do cluster |
|
Workflow |
|
Orquestra as etapas de implantação: implanta regras básicas em alguns clusters e regras substituídas em outros |
|
Application |
|
Integra todos os componentes, políticas e o workflow |
Etapa 1: Crie um contato e um grupo de contatos
Etapa 2: Propagar regras de alerta diferenciadas
-
Obtenha os IDs dos clusters para os quais deseja propagar as regras de alerta:
kubectl get managedclusterSaída esperada:
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE c565e4**** true True True 12d cbaa12**** true True True 12dNotaPara selecionar clusters por rótulo em vez de por ID, consulte Selecione um cluster para distribuir aplicações.
-
Crie um arquivo chamado
ackalertrule-app-override.yamlcom o conteúdo a seguir. Neste exemplo,ack-cluster-1é um cluster acelerado por CPU eack-cluster-2é um cluster acelerado por GPU. A política de substituição tem como alvo oack-cluster-2, ativando alertas de GPU, modificando o limiar de alerta e alterando o grupo de contatos.apiVersion: core.oam.dev/v1alpha1 # Topology policy: routes baseline alert rules to ack-cluster-1. kind: Policy metadata: name: cluster-cpu namespace: kube-system type: topology properties: clusters: ["<ack-cluster-1>"] # Replace <ack-cluster-1> with the cluster ID of ack-cluster-1. --- apiVersion: core.oam.dev/v1alpha1 # Topology policy: routes overridden alert rules to ack-cluster-2. kind: Policy metadata: name: cluster-gpu namespace: kube-system type: topology properties: clusters: ["<ack-cluster-2>"] # Replace <ack-cluster-2> with the cluster ID of ack-cluster-2. --- apiVersion: core.oam.dev/v1alpha1 # Override policy: defines the cluster-specific changes for ack-cluster-2. kind: Policy metadata: name: override-gpu namespace: kube-system type: override properties: components: - name: ackalertrules # Must match the component name in the Application. traits: - type: alert-rule # The alert-rule trait modifies alert rules on the target cluster. properties: groups: # Override configurations. The structure mirrors that of the alert rules. - name: res-exceptions # Name of the alert group to override. rules: - contactGroups: # Override the contact group. - arms_contact_group_id: "12345" cms_contact_group_name: ack_Default Contact Group id: "1234" enable: enable # Set to enable. name: node_cpu_util_high # Name of the alert rule to override. thresholds: # Override the alert threshold. - key: CMS_ESCALATIONS_CRITICAL_Threshold unit: percent value: "60" - name: cluster-error # Name of the alert group to override. rules: - enable: enable # Set to enable. name: gpu-xid-error # Name of the alert rule to override. --- apiVersion: core.oam.dev/v1alpha1 # Workflow: defines the deployment steps. kind: Workflow metadata: name: deploy-ackalertrules namespace: kube-system steps: - type: deploy name: deploy-cpu properties: policies: ["cluster-cpu"] # Deploy baseline alert rules to ack-cluster-1. - type: deploy name: deploy-gpu properties: policies: ["override-gpu", "cluster-gpu"] # Apply the override policy and deploy to ack-cluster-2. --- apiVersion: core.oam.dev/v1beta1 # Application: the top-level KubeVela resource. kind: Application metadata: name: alertrules namespace: kube-system annotations: app.oam.dev/publishVersion: version1 # Increment this value each time you update the alert rules to trigger re-propagation. spec: components: - name: ackalertrules type: ref-objects properties: objects: - resource: ackalertrules # References the alert rules created in Step 3. name: default workflow: ref: deploy-ackalertrules -
Aplique a política de substituição:
kubectl apply -f ackalertrule-app-override.yaml -
Verifique o status da propagação:
kubectl amc appstatus alertrules -n kube-system --tree --detailSaída esperada:
CLUSTER NAMESPACE RESOURCE STATUS APPLY_TIME DETAIL c565e4**** (ack-cluster-1)─── kube-system─── AckAlertRule/default updated 2022-**-** **:**:** Age: ** cbaa12**** (ack-cluster-2)─── kube-system─── AckAlertRule/default updated 2022-**-** **:**:** Age: **Ambos os clusters exibem
updated, confirmando que a política de substituição foi aplicada e as regras de alerta diferenciadas foram propagadas com sucesso.