Pular para o conteúdo

Aprimoramentos do HTTP LoadBalancer

Metadados de enriquecimento para esquemas do HTTP load balancer. Consulte Extensões OpenAPI para definições das extensões.

Todos os esquemas correspondentes a viewshttp_loadbalancer.*SpecType recebem enriquecimentos:

  • viewshttp_loadbalancerCreateSpecType
  • viewshttp_loadbalancerReplaceSpecType
  • viewshttp_loadbalancerGetSpecType

A extensão x-f5xc-minimum-configuration fornece metadados CLI abrangentes para criação de HTTP load balancers minimamente viáveis.

CampoRestriçãoDescrição
metadata.nameFormato de rótulo DNS: [a-z0-9]([-a-z0-9]*[a-z0-9])?Nome do recurso
metadata.namespaceFormato de rótulo DNSNamespace
spec.domainsArray, min_items: 1Domínios a serem servidos

Um dos seguintes tipos de load balancer deve ser especificado:

VarianteDescrição
spec.httpApenas HTTP
spec.httpsHTTPS com certificado manual
spec.https_auto_certHTTPS com certificado automático
spec.http_httpsTanto HTTP quanto HTTPS

Nota: O grupo OneOf do tipo de load balancer é referido como:

  • lb_type em arquivos de configuração (forma abreviada em config/minimum_configs.yaml)
  • loadbalancer_type nas extensões nativas da especificação OpenAPI (nome nativo do campo)

Referência do Esquema da API: x-ves-oneof-field-loadbalancer_type: ["http", "https", "https_auto_cert", "http_https"]

{
"metadata": {
"name": "example-app",
"namespace": "default"
},
"spec": {
"domains": ["example.com"],
"https_auto_cert": {
"port": 443,
"tls_config": {"default_security": {}}
},
"advertise_on_public_default_vip": {},
"routes": [{"prefix": "/", "origin_pool": {"pool_name": "backend-pool"}}]
}
}

Campos marcados com x-f5xc-server-default: true têm seu valor default aplicado pelo servidor da API F5 XC quando omitidos das requisições. O HTTP load balancer possui um grande número de padrões aplicados pelo servidor porque a maioria dos recursos de segurança e opções de protocolo tem como padrão um estado desabilitado ou seguro.

Quando https_auto_cert é especificado, o servidor aplica estes padrões para campos omitidos:

CampoValor PadrãoTipoDescrição
port443integerPorta de escuta HTTPS
http_redirectfalsebooleanRedirecionamento de HTTP para HTTPS
add_hstsfalsebooleanCabeçalho HTTP Strict Transport Security
tls_config.default_security{}objectTLS 1.2+ com cifras fortes
no_mtls{}objectTLS mútuo desabilitado
default_header{}objectTratamento padrão do cabeçalho de nome do servidor
enable_path_normalize{}objectNormalização de caminho habilitada
default_loadbalancer{}objectConfigurações padrão do load balancer
header_transformation_type.legacy_header_transformation{}objectTransformação de cabeçalho legada
connection_idle_timeout120000integerTempo limite de conexão ociosa em milissegundos (2 minutos)
http_protocol_options.http_protocol_enable_v1_v2{}objectHTTP/1.1 e HTTP/2 habilitados
coalescing_options.default_coalescing{}objectCoalescência de conexão HTTP/2 padrão

Todos os recursos de segurança são desabilitados por padrão quando omitidos:

CampoValor PadrãoDescrição
disable_waf{}Web Application Firewall desabilitado
disable_bot_defense{}Defesa contra bots desabilitada
disable_rate_limit{}Limitação de taxa desabilitada
disable_api_discovery{}Descoberta de API desabilitada
disable_api_testing{}Teste de API desabilitado
disable_api_definition{}Definição de API desabilitada
disable_malware_protection{}Proteção contra malware desabilitada
disable_client_side_defense{}Defesa do lado do cliente desabilitada
disable_ip_reputation{}Reputação de IP desabilitada
disable_threat_mesh{}Threat mesh desabilitado
disable_malicious_user_detection{}Detecção de usuários maliciosos desabilitada
CampoValor PadrãoDescrição
l7_ddos_protection.mitigation_block{}Bloquear tráfego DDoS (ação de mitigação padrão)
l7_ddos_protection.default_rps_threshold{}Usar limite de RPS padrão
l7_ddos_protection.clientside_action_none{}Sem validação DDoS do lado do cliente
l7_ddos_protection.ddos_policy_none{}Sem referência de política DDoS
no_challenge{}Sem desafio para o cliente
user_id_client_ip{}Identificar usuários pelo IP do cliente
disable_trust_client_ip_headers{}Não confiar nos cabeçalhos de IP do cliente
CampoValor PadrãoTipoDescrição
advertise_on_public_default_vip{}objectAnunciar no VIP público padrão
round_robin{}objectAlgoritmo de balanceamento de carga round-robin
add_locationtruebooleanAdicionar cabeçalho de localização às respostas
system_default_timeouts{}objectUsar tempos limite padrão do sistema
service_policies_from_namespace{}objectHerdar políticas de serviço do namespace
default_sensitive_data_policy{}objectUsar política padrão de dados sensíveis

Campos marcados com x-f5xc-conflicts-with indicam padrões OneOf. Apenas um campo de cada grupo pode ser especificado.

Nome do GrupoCamposDescrição
lb_typehttp, https, https_auto_cert, http_httpsTipo de protocolo do load balancer
advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseComo anunciar o load balancer
load_balancing_algorithmround_robin, least_request, ring_hash, randomAlgoritmo de distribuição de tráfego
Nome do GrupoCamposDescrição
tls_configdefault_security, medium_security, low_security, custom_securityNível de segurança TLS
mtlsno_mtls, use_mtlsTLS mútuo habilitado ou desabilitado
Nome do GrupoCamposDescrição
http_protocolhttp_protocol_enable_v1_only, http_protocol_enable_v1_v2, http_protocol_enable_v2_onlyVersões do protocolo HTTP
header_transformationlegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationTipo de transformação de cabeçalho HTTP
server_name_headerdefault_header, append_server_name_header, pass_through_server_name_headerTratamento do cabeçalho de nome do servidor
Nome do GrupoCamposDescrição
path_normalizeenable_path_normalize, disable_path_normalizeNormalização de caminho habilitada ou desabilitada
loadbalancer_choicenon_default_loadbalancer, default_loadbalancerLoad balancer padrão ou não padrão
coalescingdefault_coalescing, disable_coalescing, enable_for_same_originOpções de coalescência de conexão HTTP/2
Nome do GrupoCamposDescrição
wafdisable_waf, enable_wafWeb Application Firewall
bot_defensedisable_bot_defense, enable_bot_defenseDetecção e mitigação de bots
rate_limitdisable_rate_limit, enable_rate_limitLimitação de taxa
api_discoverydisable_api_discovery, enable_api_discoveryDescoberta de API
api_testingdisable_api_testing, enable_api_testingTeste de API
api_definitiondisable_api_definition, enable_api_definitionDefinição de API
malware_protectiondisable_malware_protection, enable_malware_protectionProteção contra malware
client_side_defensedisable_client_side_defense, enable_client_side_defenseDefesa do lado do cliente
ip_reputationdisable_ip_reputation, enable_ip_reputationReputação de IP
threat_meshdisable_threat_mesh, enable_threat_meshThreat mesh
malicious_user_detectiondisable_malicious_user_detection, enable_malicious_user_detectionDetecção de usuários maliciosos
Nome do GrupoCamposDescrição
ddos_mitigationmitigation_block, mitigation_challenge, mitigation_noneAção de mitigação DDoS
ddos_rps_thresholddefault_rps_threshold, custom_rps_thresholdLimite de requisições por segundo
ddos_clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaAção de validação DDoS do lado do cliente
ddos_policyddos_policy_none, ddos_policy_refReferência de política DDoS ou nenhuma
Nome do GrupoCamposDescrição
challengeno_challenge, js_challenge, captcha_challengeTipo de desafio ao cliente para detecção de bots
user_identificationuser_id_client_ip, user_identificationMétodo de identificação do usuário
client_ip_headersdisable_trust_client_ip_headers, enable_trust_client_ip_headersConfiar ou não nos cabeçalhos de IP do cliente
timeoutssystem_default_timeouts, custom_timeoutsUsar tempos limite padrão do sistema ou personalizados
service_policies_sourceservice_policies_from_namespace, active_service_policiesPolíticas de serviço do namespace ou lista ativa
sensitive_data_policydefault_sensitive_data_policy, custom_sensitive_data_policyUsar política de dados sensíveis padrão ou personalizada

Recomendações de Variantes OneOf (Extensão Futura)

Seção intitulada “Recomendações de Variantes OneOf (Extensão Futura)”

Status: Ainda não aplicada aos esquemas do http_loadbalancer.

Diferentemente do healthcheck, que inclui x-f5xc-recommended-oneof-variant para indicar a escolha mais comum para grupos OneOf, o http_loadbalancer atualmente não possui esta extensão.

Healthcheck (implementado):

viewshealthcheckCreateSpecType:
x-f5xc-recommended-oneof-variant:
health_check: "http_health_check"

HTTP LoadBalancer (ainda não implementado):

viewshttp_loadbalancerCreateSpecType:
x-f5xc-recommended-oneof-variant: null # Would indicate recommended lb_type variant

Para adicionar esta extensão ao http_loadbalancer:

  1. Observar as seleções padrão do console F5 XC (por exemplo, qual lb_type é pré-selecionado na UI)
  2. Adicionar configuração ao config/discovered_defaults.yaml
  3. Reexecutar o pipeline de enriquecimento para aplicar a extensão

Estrutura esperada quando adicionada:

viewshttp_loadbalancerCreateSpecType:
x-f5xc-recommended-oneof-variant:
loadbalancer_type: "https_auto_cert" # Example - requires verification

Esta extensão permitiria que ferramentas downstream pré-selecionassem a variante mais comumente utilizada ao apresentar opções de configuração aos usuários.

Campos marcados com x-f5xc-constraints incluem restrições de validação descobertas a partir da análise da API.

CampominItemsmaxItemsuniqueItems
spec.domains1-false
spec.routes1256false
spec.blocked_clients1128true
spec.trusted_clients1128true
spec.data_guard_rules1256true
CampoMínimoMáximoPadrãoDescrição
spec.https_auto_cert.port165535443Número da porta HTTPS
spec.https_auto_cert.connection_idle_timeout10003600000120000Tempo limite de conexão ociosa (milissegundos, 1s a 1h)
CampoValoresPadrãoDescrição
spec.https_auto_cert.tls_configdefault_security, medium_security, low_security, custom_securitydefault_securityNível de segurança TLS
spec.https_auto_cert.header_transformation_typelegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationlegacy_header_transformationTransformação de cabeçalho HTTP
spec.https_auto_cert.http_protocol_optionshttp_protocol_enable_v1_only, http_protocol_enable_v1_v2, http_protocol_enable_v2_onlyhttp_protocol_enable_v1_v2Versões do protocolo HTTP
spec.https_auto_cert.coalescing_optionsdefault_coalescing, disable_coalescing, enable_for_same_origindefault_coalescingCoalescência de conexão HTTP/2
spec.load_balancing_algorithmround_robin, least_request, ring_hash, randomround_robinAlgoritmo de balanceamento de carga
spec.l7_ddos_protection.mitigationmitigation_block, mitigation_challenge, mitigation_nonemitigation_blockAção de mitigação DDoS da camada 7
spec.l7_ddos_protection.rps_thresholddefault_rps_threshold, custom_rps_thresholddefault_rps_thresholdLimite de RPS para detecção de DDoS
spec.l7_ddos_protection.clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaclientside_action_noneValidação DDoS do lado do cliente
spec.challengeno_challenge, js_challenge, captcha_challengeno_challengeTipo de desafio ao cliente
spec.advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseadvertise_on_public_default_vipAnúncio do load balancer

O pipeline de enriquecimento adiciona metadados x-f5xc-guided-workflows no nível da especificação. Esses fluxos de trabalho fornecem orientação passo a passo para implantação, consumidos por assistentes de IA e ferramentas CLI.

Um fluxo de trabalho de 5 etapas para criar um HTTP load balancer totalmente configurado com origin pool de backend (definido em config/guided_workflows.yaml):

EtapaAçãoRecursoCampos ObrigatóriosOpcional
1Criar Origin Poolorigin_poolname, origin_servers, portNão
2Configurar Health Checkhealthcheckname, http_health_checkSim
3Vincular Health Check--Sim
4Criar HTTP Load Balancerhttp_loadbalancername, domains, http.portNão
5Verificar Implantação--Não

Pré-requisitos: Namespace válido no tenant de destino, aplicação backend acessível via IP ou DNS, certificado SSL (opcional para HTTPS).

Um fluxo de trabalho de 7 etapas para criar um HTTPS load balancer com terminação SSL/TLS:

EtapaAçãoRecursoCampos ObrigatóriosOpcional
1Fazer Upload do Certificado SSLcertificatename, certificate_chain, private_keyNão
2Criar Origin Poolorigin_poolname, origin_serversNão
3Configurar Health Checkhealthcheck-Sim
4Configurar Política WAFapp_firewall-Sim
5Criar HTTPS Load Balancerhttp_loadbalancername, domains, https.tls_parametersNão
6Vincular Política WAF--Sim
7Verificar Implantação HTTPS--Não

Pré-requisitos: Namespace válido no tenant de destino, certificado SSL e chave privada, aplicação backend acessível.

Ferramentas downstream utilizam esses fluxos de trabalho para guiar usuários em implantações com múltiplas etapas:

  • xcsh CLI: Apresenta fluxos de trabalho como comandos guiados interativos (por exemplo, xcsh deploy http-lb)
  • Extensão VS Code: Exibe etapas do fluxo de trabalho em um painel lateral com acompanhamento de progresso
  • Assistentes de IA: Seguem as etapas do fluxo de trabalho sequencialmente, criando cada recurso e validando dependências

Estas extensões de fornecedor são adicionadas ao esquema OpenAPI padrão para transmitir metadados específicos do F5 XC.

Tipo: string

Indica a classificação de domínio para organização de CLI e ferramentas.

viewshttp_loadbalancerCreateSpecType:
type: object
x-f5xc-cli-domain: "virtual"

Tipo: object

Fornece metadados abrangentes para criação de configurações mínimas viáveis. Inclui:

  • Descrição
  • Campos obrigatórios com restrições
  • Grupos mutuamente exclusivos
  • Exemplos de configuração (YAML, JSON)
  • Exemplos de comandos curl
viewshttp_loadbalancerCreateSpecType:
type: object
x-f5xc-minimum-configuration:
description: "HTTP/HTTPS load balancer for distributing traffic across origin pools"
required_fields:
- "metadata.name"
- "metadata.namespace"
- "spec.domains"
mutually_exclusive_groups:
- name: "lb_type"
fields: ["spec.http", "spec.https", "spec.https_auto_cert", "spec.http_https"]
reason: "Choose exactly one load balancer type"
example_yaml: |
...
example_json: |
...
example_curl: |
...

Tipo: boolean

Quando true, indica que o valor default acompanhante é aplicado pelo servidor da API F5 XC. Campos com esta extensão podem ser omitidos com segurança das requisições à API — o servidor aplica o padrão automaticamente.

disable_waf:
type: object
default: {}
x-f5xc-server-default: true

Tipo: array of strings

Lista nomes de campos que são mutuamente exclusivos com o campo atual, indicando padrões OneOf.

advertise_custom:
type: object
x-f5xc-conflicts-with:
- advertise_on_public
- advertise_on_public_default_vip
- do_not_advertise

Tipo: object

Fornece restrições de validação incluindo limites de tamanho de array, intervalos de inteiros, requisitos de unicidade e metadados de descoberta.

routes:
type: array
x-f5xc-constraints:
constraintType: "array"
minItems: 1
maxItems: 256
uniqueItems: false
metadata:
source: "discovery"
confidence: 0.99
validatedAt: "2026-01-19T12:00:00Z"
port:
type: integer
x-f5xc-constraints:
constraintType: "number"
minimum: 1
maximum: 65535
metadata:
source: "discovery"
confidence: 0.99

x-f5xc-description-short e x-f5xc-description-medium

Seção intitulada “x-f5xc-description-short e x-f5xc-description-medium”

Tipo: string

Fornece comprimentos alternativos de descrição para diferentes casos de uso:

  • x-f5xc-description-short: máximo de 60 caracteres (colunas de CLI, badges)
  • x-f5xc-description-medium: máximo de 150 caracteres (tooltips, resumos)
domains:
type: array
description: "List of domains the load balancer will serve"
x-f5xc-description-short: "Domains to serve"
x-f5xc-description-medium: "List of domains for which the load balancer accepts traffic"

Tipo: any (corresponde ao tipo do campo)

Fornece exemplos concretos de campos para documentação e ferramentas.

name:
type: string
x-f5xc-example: "example-app"
domains:
type: array
x-f5xc-example: ["example.com", "www.example.com"]

Tipo: array of strings

Indica requisitos específicos de contexto usando flags: minimum_config, create, update, read.

metadata.name:
type: string
x-f5xc-required-for: ["minimum_config", "create"]
metadata.uid:
type: string
x-f5xc-required-for: ["read"]
ArquivoConteúdo
docs/specifications/api/virtual.jsonTodos os esquemas do http_loadbalancer com enriquecimentos
docs/specifications/api/openapi.jsonEspecificação mesclada com todos os esquemas
ArquivoFinalidade
config/minimum_configs.yamlFonte dos metadados de configuração mínima
config/constraint_patterns.yamlDefinições de padrões de restrição
config/guided_workflows.yamlDefinições de etapas dos fluxos de trabalho guiados
config/domain_descriptions.yamlMetadados de descrição no nível do domínio
  • viewshttp_loadbalancerCreateSpecType - Esquema da operação de criação
  • viewshttp_loadbalancerReplaceSpecType - Esquema da operação de atualização
  • viewshttp_loadbalancerGetSpecType - Esquema da operação de leitura
VersãoDataAlterações
2.0.462026-04-18Adicionados padrões aplicados pelo servidor, integração com fluxos de trabalho guiados e seção expandida de configuração mínima
2.0.452026-01-20Documentação inicial dos enriquecimentos do http_loadbalancer