Salta ai contenuti

Miglioramenti HTTP LoadBalancer

Metadati di arricchimento per gli schemi HTTP load balancer. Consultare Estensioni OpenAPI per le definizioni delle estensioni.

Tutti gli schemi che corrispondono a viewshttp_loadbalancer.*SpecType ricevono arricchimenti:

  • viewshttp_loadbalancerCreateSpecType
  • viewshttp_loadbalancerReplaceSpecType
  • viewshttp_loadbalancerGetSpecType

L’estensione x-f5xc-minimum-configuration fornisce metadati CLI completi per la creazione di HTTP load balancer minimali e funzionanti.

CampoVincoloDescrizione
metadata.nameFormato etichetta DNS: [a-z0-9]([-a-z0-9]*[a-z0-9])?Nome della risorsa
metadata.namespaceFormato etichetta DNSNamespace
spec.domainsArray, min_items: 1Domini da servire

È necessario specificare uno dei seguenti tipi di load balancer:

VarianteDescrizione
spec.httpSolo HTTP
spec.httpsHTTPS con certificato manuale
spec.https_auto_certHTTPS con certificato automatico
spec.http_httpsSia HTTP che HTTPS

Nota: Il gruppo OneOf del tipo di load balancer è indicato come:

  • lb_type nei file di configurazione (forma abbreviata in config/minimum_configs.yaml)
  • loadbalancer_type nelle estensioni native della specifica OpenAPI (nome campo nativo)

Riferimento schema 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"}}]
}
}

I campi contrassegnati con x-f5xc-server-default: true hanno il loro valore default applicato dal server API F5 XC quando omessi dalle richieste. L’HTTP load balancer ha un gran numero di valori predefiniti applicati dal server perché la maggior parte delle funzionalità di sicurezza e delle opzioni di protocollo sono impostate per default su uno stato disabilitato o sicuro.

Quando viene specificato https_auto_cert, il server applica questi valori predefiniti per i campi omessi:

CampoValore predefinitoTipoDescrizione
port443integerPorta di ascolto HTTPS
http_redirectfalsebooleanReindirizzamento da HTTP a HTTPS
add_hstsfalsebooleanIntestazione HTTP Strict Transport Security
tls_config.default_security{}objectTLS 1.2+ con cifrari robusti
no_mtls{}objectMutual TLS disabilitato
default_header{}objectGestione predefinita dell’intestazione nome server
enable_path_normalize{}objectNormalizzazione del percorso abilitata
default_loadbalancer{}objectImpostazioni predefinite del load balancer
header_transformation_type.legacy_header_transformation{}objectTrasformazione legacy delle intestazioni
connection_idle_timeout120000integerTimeout di inattività della connessione in millisecondi (2 minuti)
http_protocol_options.http_protocol_enable_v1_v2{}objectHTTP/1.1 e HTTP/2 abilitati
coalescing_options.default_coalescing{}objectCoalescenza predefinita delle connessioni HTTP/2

Valori predefiniti delle funzionalità di sicurezza

Sezione intitolata “Valori predefiniti delle funzionalità di sicurezza”

Tutte le funzionalità di sicurezza sono disabilitate per default quando omesse:

CampoValore predefinitoDescrizione
disable_waf{}Web Application Firewall disabilitato
disable_bot_defense{}Difesa bot disabilitata
disable_rate_limit{}Limitazione della frequenza disabilitata
disable_api_discovery{}Scoperta API disabilitata
disable_api_testing{}Test API disabilitato
disable_api_definition{}Definizione API disabilitata
disable_malware_protection{}Protezione malware disabilitata
disable_client_side_defense{}Difesa lato client disabilitata
disable_ip_reputation{}Reputazione IP disabilitata
disable_threat_mesh{}Threat mesh disabilitato
disable_malicious_user_detection{}Rilevamento utenti malevoli disabilitato
CampoValore predefinitoDescrizione
l7_ddos_protection.mitigation_block{}Blocco del traffico DDoS (azione di mitigazione predefinita)
l7_ddos_protection.default_rps_threshold{}Uso della soglia RPS predefinita
l7_ddos_protection.clientside_action_none{}Nessuna validazione DDoS lato client
l7_ddos_protection.ddos_policy_none{}Nessun riferimento a policy DDoS
no_challenge{}Nessuna sfida per il client
user_id_client_ip{}Identificazione utenti tramite IP client
disable_trust_client_ip_headers{}Non considerare attendibili le intestazioni IP del client
CampoValore predefinitoTipoDescrizione
advertise_on_public_default_vip{}objectPubblicazione sul VIP pubblico predefinito
round_robin{}objectAlgoritmo di bilanciamento del carico round-robin
add_locationtruebooleanAggiunta dell’intestazione location alle risposte
system_default_timeouts{}objectUso dei timeout predefiniti di sistema
service_policies_from_namespace{}objectEreditarietà delle policy di servizio dal namespace
default_sensitive_data_policy{}objectUso della policy predefinita per i dati sensibili

I campi contrassegnati con x-f5xc-conflicts-with indicano pattern OneOf. È possibile specificare un solo campo per ogni gruppo.

Nome gruppoCampiDescrizione
lb_typehttp, https, https_auto_cert, http_httpsTipo di protocollo del load balancer
advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseModalità di pubblicazione del load balancer
load_balancing_algorithmround_robin, least_request, ring_hash, randomAlgoritmo di distribuzione del traffico
Nome gruppoCampiDescrizione
tls_configdefault_security, medium_security, low_security, custom_securityLivello di sicurezza TLS
mtlsno_mtls, use_mtlsMutual TLS abilitato o disabilitato
Nome gruppoCampiDescrizione
http_protocolhttp_protocol_enable_v1_only, http_protocol_enable_v1_v2, http_protocol_enable_v2_onlyVersioni del protocollo HTTP
header_transformationlegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationTipo di trasformazione delle intestazioni HTTP
server_name_headerdefault_header, append_server_name_header, pass_through_server_name_headerGestione dell’intestazione nome server
Nome gruppoCampiDescrizione
path_normalizeenable_path_normalize, disable_path_normalizeNormalizzazione del percorso abilitata o disabilitata
loadbalancer_choicenon_default_loadbalancer, default_loadbalancerLoad balancer predefinito o non predefinito
coalescingdefault_coalescing, disable_coalescing, enable_for_same_originOpzioni di coalescenza delle connessioni HTTP/2
Nome gruppoCampiDescrizione
wafdisable_waf, enable_wafWeb Application Firewall
bot_defensedisable_bot_defense, enable_bot_defenseRilevamento e mitigazione bot
rate_limitdisable_rate_limit, enable_rate_limitLimitazione della frequenza
api_discoverydisable_api_discovery, enable_api_discoveryScoperta API
api_testingdisable_api_testing, enable_api_testingTest API
api_definitiondisable_api_definition, enable_api_definitionDefinizione API
malware_protectiondisable_malware_protection, enable_malware_protectionProtezione malware
client_side_defensedisable_client_side_defense, enable_client_side_defenseDifesa lato client
ip_reputationdisable_ip_reputation, enable_ip_reputationReputazione IP
threat_meshdisable_threat_mesh, enable_threat_meshThreat mesh
malicious_user_detectiondisable_malicious_user_detection, enable_malicious_user_detectionRilevamento utenti malevoli
Nome gruppoCampiDescrizione
ddos_mitigationmitigation_block, mitigation_challenge, mitigation_noneAzione di mitigazione DDoS
ddos_rps_thresholddefault_rps_threshold, custom_rps_thresholdSoglia di richieste al secondo
ddos_clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaAzione di validazione DDoS lato client
ddos_policyddos_policy_none, ddos_policy_refRiferimento a policy DDoS o nessuno
Nome gruppoCampiDescrizione
challengeno_challenge, js_challenge, captcha_challengeTipo di sfida client per il rilevamento bot
user_identificationuser_id_client_ip, user_identificationMetodo di identificazione utente
client_ip_headersdisable_trust_client_ip_headers, enable_trust_client_ip_headersConsiderare o meno attendibili le intestazioni IP del client
timeoutssystem_default_timeouts, custom_timeoutsUso dei timeout predefiniti di sistema o personalizzati
service_policies_sourceservice_policies_from_namespace, active_service_policiesPolicy di servizio dal namespace o lista attiva
sensitive_data_policydefault_sensitive_data_policy, custom_sensitive_data_policyUso della policy predefinita o personalizzata per i dati sensibili

Raccomandazioni varianti OneOf (estensione futura)

Sezione intitolata “Raccomandazioni varianti OneOf (estensione futura)”

Stato: Non ancora applicato agli schemi http_loadbalancer.

A differenza di healthcheck, che include x-f5xc-recommended-oneof-variant per indicare la scelta più comune per i gruppi OneOf, http_loadbalancer attualmente non dispone di questa estensione.

Healthcheck (implementato):

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

HTTP LoadBalancer (non ancora implementato):

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

Per aggiungere questa estensione per http_loadbalancer:

  1. Osservare le selezioni predefinite della console F5 XC (ad es., quale lb_type è preselezionato nell’interfaccia)
  2. Aggiungere la configurazione a config/discovered_defaults.yaml
  3. Rieseguire la pipeline di arricchimento per applicare l’estensione

Struttura prevista una volta aggiunta:

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

Questa estensione consentirebbe agli strumenti a valle di preselezionare la variante più comunemente utilizzata quando presentano le opzioni di configurazione agli utenti.

I campi contrassegnati con x-f5xc-constraints includono vincoli di validazione scoperti dall’analisi dell’API.

CampominItemsmaxItemsuniqueItems
spec.domains1-false
spec.routes1256false
spec.blocked_clients1128true
spec.trusted_clients1128true
spec.data_guard_rules1256true
CampoMinimoMassimoPredefinitoDescrizione
spec.https_auto_cert.port165535443Numero porta HTTPS
spec.https_auto_cert.connection_idle_timeout10003600000120000Timeout di inattività della connessione (millisecondi, da 1s a 1h)
CampoValoriPredefinitoDescrizione
spec.https_auto_cert.tls_configdefault_security, medium_security, low_security, custom_securitydefault_securityLivello di sicurezza TLS
spec.https_auto_cert.header_transformation_typelegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationlegacy_header_transformationTrasformazione delle intestazioni 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_v2Versioni del protocollo HTTP
spec.https_auto_cert.coalescing_optionsdefault_coalescing, disable_coalescing, enable_for_same_origindefault_coalescingCoalescenza delle connessioni HTTP/2
spec.load_balancing_algorithmround_robin, least_request, ring_hash, randomround_robinAlgoritmo di bilanciamento del carico
spec.l7_ddos_protection.mitigationmitigation_block, mitigation_challenge, mitigation_nonemitigation_blockAzione di mitigazione DDoS Layer 7
spec.l7_ddos_protection.rps_thresholddefault_rps_threshold, custom_rps_thresholddefault_rps_thresholdSoglia RPS per il rilevamento DDoS
spec.l7_ddos_protection.clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaclientside_action_noneValidazione DDoS lato client
spec.challengeno_challenge, js_challenge, captcha_challengeno_challengeTipo di sfida client
spec.advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseadvertise_on_public_default_vipPubblicazione del load balancer

La pipeline di arricchimento aggiunge metadati x-f5xc-guided-workflows a livello di spec. Questi flussi di lavoro forniscono indicazioni passo-passo per il deployment, utilizzate da assistenti AI e strumenti CLI.

Un flusso di lavoro in 5 passaggi per creare un HTTP load balancer completamente configurato con origin pool backend (definito in config/guided_workflows.yaml):

PassaggioAzioneRisorsaCampi obbligatoriOpzionale
1Creare Origin Poolorigin_poolname, origin_servers, portNo
2Configurare Health Checkhealthcheckname, http_health_check
3Collegare Health Check--
4Creare HTTP Load Balancerhttp_loadbalancername, domains, http.portNo
5Verificare il deployment--No

Prerequisiti: Namespace valido nel tenant di destinazione, applicazione backend raggiungibile tramite IP o DNS, certificato SSL (opzionale per HTTPS).

Un flusso di lavoro in 7 passaggi per creare un HTTPS load balancer con terminazione SSL/TLS:

PassaggioAzioneRisorsaCampi obbligatoriOpzionale
1Caricare certificato SSLcertificatename, certificate_chain, private_keyNo
2Creare Origin Poolorigin_poolname, origin_serversNo
3Configurare Health Checkhealthcheck-
4Configurare policy WAFapp_firewall-
5Creare HTTPS Load Balancerhttp_loadbalancername, domains, https.tls_parametersNo
6Collegare policy WAF--
7Verificare il deployment HTTPS--No

Prerequisiti: Namespace valido nel tenant di destinazione, certificato SSL e chiave privata, applicazione backend raggiungibile.

Gli strumenti a valle utilizzano questi flussi di lavoro per guidare gli utenti attraverso deployment multi-passaggio:

  • xcsh CLI: Presenta i flussi di lavoro come comandi guidati interattivi (ad es., xcsh deploy http-lb)
  • Estensione VS Code: Mostra i passaggi del flusso di lavoro in un pannello laterale con tracciamento dei progressi
  • Assistenti AI: Seguono i passaggi del flusso di lavoro in sequenza, creando ogni risorsa e validando le dipendenze

Queste estensioni vendor vengono aggiunte allo schema OpenAPI standard per trasmettere metadati specifici di F5 XC.

Tipo: string

Indica la classificazione di dominio per l’organizzazione CLI e degli strumenti.

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

Tipo: object

Fornisce metadati completi per la creazione di configurazioni minimali funzionanti. Include:

  • Descrizione
  • Campi obbligatori con vincoli
  • Gruppi mutuamente esclusivi
  • Configurazioni di esempio (YAML, JSON)
  • Esempi di comandi 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 impostato su true, indica che il valore default associato viene applicato dal server API F5 XC. I campi con questa estensione possono essere tranquillamente omessi dalle richieste API — il server applica automaticamente il valore predefinito.

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

Tipo: array of strings

Elenca i nomi dei campi che sono mutuamente esclusivi con il campo corrente, indicando pattern OneOf.

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

Tipo: object

Fornisce vincoli di validazione inclusi limiti di dimensione degli array, intervalli di interi, requisiti di unicità e metadati di scoperta.

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

Sezione intitolata “x-f5xc-description-short e x-f5xc-description-medium”

Tipo: string

Fornisce descrizioni di lunghezza alternativa per diversi casi d’uso:

  • x-f5xc-description-short: massimo 60 caratteri (colonne CLI, badge)
  • x-f5xc-description-medium: massimo 150 caratteri (tooltip, riepiloghi)
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 (corrisponde al tipo del campo)

Fornisce esempi concreti dei campi per documentazione e strumenti.

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

Tipo: array of strings

Indica requisiti specifici per contesto utilizzando flag: 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"]
FileContenuto
docs/specifications/api/virtual.jsonTutti gli schemi http_loadbalancer con arricchimenti
docs/specifications/api/openapi.jsonSpecifica unificata con tutti gli schemi
FileScopo
config/minimum_configs.yamlSorgente dei metadati di configurazione minima
config/constraint_patterns.yamlDefinizioni dei pattern di vincolo
config/guided_workflows.yamlDefinizioni dei passaggi dei flussi di lavoro guidati
config/domain_descriptions.yamlMetadati delle descrizioni a livello di dominio
  • viewshttp_loadbalancerCreateSpecType - Schema operazione di creazione
  • viewshttp_loadbalancerReplaceSpecType - Schema operazione di aggiornamento
  • viewshttp_loadbalancerGetSpecType - Schema operazione di lettura
VersioneDataModifiche
2.0.462026-04-18Aggiunti valori predefiniti applicati dal server, integrazione flussi di lavoro guidati e sezione configurazione minima ampliata
2.0.452026-01-20Documentazione iniziale degli arricchimenti http_loadbalancer