O ASMMeshConfig é um recurso personalizado (CR) do Alibaba Cloud Service Mesh (ASM) que define a configuração global da malha de serviços. Semelhante ao MeshConfig do Istio, este CR permite gerencie centralmente parâmetros no nível da malha, como timeout de conexão, detecção de protocolo, normalização de caminho e política de nova tentativa. Também é possível usá-lo para controlar o comportamento e a cota de recursos do injetor de sidecar.
Exemplo de configuração
O exemplo a seguir especifique configurações globais para uma instância ASM, incluindo configuração de conexão, normalização de caminho, política de nova tentativa HTTP, configuração do injetor de sidecar e o serviço global de limitação de taxa.
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMMeshConfig
metadata:
name: default
spec:
connectTimeout: 30s
tcpKeepalive:
probes: 5
time: 7200s
interval: 72s
pathNormalization:
normalization: MERGE_SLASHES
defaultHttpRetryPolicy:
attempts: 3
perTryTimeout: 1s
retryOn: gateway-error,connect-failure,refused-stream
enablePrometheusMerge: true
sidecarInjectorWebhookConfiguration:
rewriteAppHTTPProbe: true
replicaCount: 2
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: '2'
memory: 2Gi
rateLimitService:
enabled: true
redis:
authSecret: redis-secret
url: redis.istio-system.svc:6379
replicas: 1
accessLogConfiguration:
logEncoding: JSON
logProject: test-project
sidecarEnabled: true
manifestPatch:
- targetRef:
kind: DaemonSet
group: apps
namespace: kube-system
selector:
labels:
app: istio-cni
patch: |
metadata:
labels:
custom.example.com/managed-by: asm
annotations:
custom.example.com/cni-version: "1.29"
Para usar todos os campos do CRD ASMMeshConfig, a instância ASM deve estar na versão 1,24 ou posterior. A configuração rateLimitService exige a versão 1.25.6.84 da instância. Além disso, o CR ASMMeshConfig não possui namespace e seu nome deve ser default. CRs ASMMeshConfig com qualquer outro nome são ignorados.
Referência de campos
Spec (Configuração da malha)
Caminho do campo | Tipo | Descrição | Valor de exemplo |
| TcpKeepalive | Configura as definições de keepalive TCP. |
|
| Duration | Define o tempo máximo de espera para o proxy Envoy estabelecer uma conexão TCP. Um timeout aciona um erro de |
|
| Duration | Timeout para detecção de protocolo, usado para identificar tráfego HTTP/HTTPS. Se o protocolo não for detectado dentro dessa duração, o tráfego será tratado como TCP bruto. Importante Este campo é configurável apenas nas versões 1,19 e anteriores do ASM. | |
| PathNormalization | Configura a normalização de caminho para requisições HTTP. | |
| DefaultHttpRetryPolicy | Define a política padrão de nova tentativa HTTP para sidecars. | |
| Bool | Se |
|
| SidecarInjectorWebhookConfiguration | Configura o injetor de sidecar. | |
| AccessLogConfiguration | Configura o formato e a coleta de logs de acesso. | |
| RatelimitService | Configura o serviço global de limitação de taxa. Importante Este campo é configurável apenas nas versões 1,25 e posteriores do ASM. | |
| []PatchConfig | O campo Importante Este campo é configurável apenas nas versões 1,27 e posteriores do ASM. |
TcpKeepalive
Caminho do campo | Tipo | Descrição | Valor de exemplo | Escopo |
| Uint32 | Número máximo de probes de keepalive TCP a enviar. Um valor de |
| Conexões TCP de saída de longa duração. |
| Duration | Tempo de ociosidade antes do envio do primeiro probe de keepalive. |
| |
| Duration | O intervalo de envio do probe de keepalive deve ser menor que o parâmetro |
|
PathNormalization
Caminho do campo | Tipo | Descrição | Valor de exemplo | Escopo |
| Enum | Política de processamento do caminho URI:
|
| Roteamento HTTP global da malha. |
DefaultHttpRetryPolicy
Caminho do campo | Tipo | Descrição | Valor de exemplo | Escopo |
| Int32 | Número máximo de tentativas para uma requisição HTTP. Esta configuração global aplica-se apenas se um VirtualService não definir explicitamente sua própria política de nova tentativa. |
| Política de roteamento HTTP. |
| Duration | Timeout para cada tentativa. Este valor deve ser menor que o timeout geral da requisição definido no VirtualService. |
| |
| String | Define as condições que acionam uma nova tentativa. Os tipos de erro padrão suportados incluem |
|
SidecarInjectorWebhookConfiguration
Caminho do campo | Tipo | Descrição | Valor de exemplo | Escopo |
| Bool | Se |
| Comportamento de injeção de sidecar. |
| Int | Número de réplicas do controlador do injetor de sidecar para garantir alta disponibilidade. |
| Componente injetor de sidecar. |
| Object | Configuração da cota de recursos:
| | Componente injetor de sidecar. |
AccessLogConfiguration
Caminho do campo | Tipo | Descrição | Valor de exemplo |
| String | Formato de saída dos logs. Os valores válidos são |
|
| String | Projeto de destino no Alibaba Cloud Log Service (SLS) para os logs. Importante Este campo é configurável apenas nas versões 1,25 e posteriores do ASM. |
|
| Boolean | Se |
|
| Boolean | Se |
|
| Boolean | Se Importante Este campo é configurável apenas nas versões 1,25 e posteriores do ASM. |
|
| Integer | Período de retenção em dias para logs de acesso do gateway. Padrão: 90. |
|
| Integer | Período de retenção em dias para logs de acesso do sidecar. Padrão: 90. |
|
| Integer | Período de retenção em dias para logs de acesso do Ztunnel. Padrão: 90. Importante Este campo é configurável apenas nas versões 1,25 e posteriores do ASM. |
|
RatelimitService
Caminho do campo | Tipo | Descrição | Valor de exemplo | Escopo |
| Bool | Define se o serviço global de limitação de taxa deve ser ativado. |
| Capacidade global de limitação de taxa. |
| Int | Número de réplicas do serviço de limitação de taxa. |
| Disponibilidade e desempenho do serviço de limitação de taxa. |
| Object | Configuração de recursos do serviço de limitação de taxa. | | Disponibilidade e desempenho do serviço de limitação de taxa. |
| Object | Configuração da instância Redis usada pelo serviço de limitação de taxa. Nota O serviço global de limitação de taxa usa o Redis para armazenar políticas e decisões de limitação. | | Backend de estado da limitação de taxa. |
| String | Tipo do cluster Redis. Os valores válidos são |
| Backend de estado da limitação de taxa. |
| String | Endereço do Redis. |
| Backend de estado da limitação de taxa. |
| String | Informações de autenticação do Redis. O formato é | xxxxxx | Gerenciamento de segurança de credenciais. |
| String | Nome do Secret que armazena as credenciais de autenticação do Redis. Nota Este Secret deve ser implantado no namespace | | Gerenciamento de segurança de credenciais. |
| String | Prefixo das chaves de cache do Redis. O padrão é vazio. | N/A | Backend de estado da limitação de taxa. |
Recomendamos o uso do Alibaba Cloud Redis para garantir alta disponibilidade. Configure o parâmetro rateLimitService.redis.type com base no tipo da sua instância Redis e na tabela a seguir.
Tipo de instância | Arquitetura | Modo de conexão | Configuração |
Nó único | N/A | N/A |
|
Alta disponibilidade | Padrão (cluster desativado) | N/A |
|
Cluster (cluster ativado) | Modo de conexão direta |
| |
Modo Proxy |
|
O ASM agrega todas as configurações e gera automaticamente uma configuração de serviço de limitação de taxa chamada ratelimit-service-config no namespace istio-system. Ao ative o serviço de limitação de taxa, essa configuração é montada automaticamente. Não é necessário atualize manualmente a configuração do serviço de limitação de taxa.
PatchConfig
|
Caminho do campo |
Tipo |
Descrição |
|
|
TargetRef |
Especifique o recurso alvo para aplicar o patch. Durante a reconciliação de cada recurso, o ASM compara as informações reais do recurso com as condições em |
|
|
string |
Conteúdo do Strategic Merge Patch, nos formatos YAML ou JSON. O ASM mescla este patch ao recurso alvo. |
TargetRef
|
Caminho do campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
O Kind Kubernetes do recurso alvo, como |
|
|
string |
Não |
O API Group do recurso alvo, como |
|
|
string |
Não |
Nome do recurso alvo. Se não especificado, o patch aplica-se a todos os recursos do |
|
|
string |
Não |
O |
|
|
PatchSelector |
Não |
Filtra adicionalmente os recursos alvo usando um seletor de rótulos. Se não especificado, os rótulos não serão correspondidos. |
PatchSelector
|
Caminho do campo |
Tipo |
Obrigatório |
Descrição |
|
|
map[string]string |
Não |
Mapa de pares chave-valor. Um recurso deve conter todos os rótulos especificados para haver correspondência (lógica AND). |
Ao reconciliar recursos, o ASM utiliza as seguintes regras para determinar se targetRef corresponde ao recurso atual:
kinddeve ser idêntico ao Kind do recurso.Se
groupfor especificado, deve corresponder ao API Group do recurso.Se você especificar
name, ele deve corresponder ao nome do recurso.Se um
namespacefor especificado, deve ser igual ao namespace do recurso.Se
selector.labelsfor especificado, o recurso deve conter todos os rótulos indicados (relação AND).