Aller au contenu

Améliorations du LoadBalancer HTTP

Métadonnées d’enrichissement pour les schémas d’équilibreur de charge HTTP. Consultez Extensions OpenAPI pour les définitions des extensions.

Tous les schémas correspondant à viewshttp_loadbalancer.*SpecType reçoivent des enrichissements :

  • viewshttp_loadbalancerCreateSpecType
  • viewshttp_loadbalancerReplaceSpecType
  • viewshttp_loadbalancerGetSpecType

L’extension x-f5xc-minimum-configuration fournit des métadonnées CLI complètes pour créer des équilibreurs de charge HTTP minimaux viables.

ChampContrainteDescription
metadata.nameFormat DNS label : [a-z0-9]([-a-z0-9]*[a-z0-9])?Nom de la ressource
metadata.namespaceFormat DNS labelEspace de noms
spec.domainsTableau, min_items : 1Domaines à servir

L’un des types d’équilibreur de charge suivants doit être spécifié :

VarianteDescription
spec.httpHTTP uniquement
spec.httpsHTTPS avec certificat manuel
spec.https_auto_certHTTPS avec certificat automatique
spec.http_httpsHTTP et HTTPS simultanément

Remarque : Le groupe OneOf du type d’équilibreur de charge est désigné par :

  • lb_type dans les fichiers de configuration (forme abrégée dans config/minimum_configs.yaml)
  • loadbalancer_type dans les extensions natives de la spécification OpenAPI (nom de champ natif)

Référence du schéma 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"}}]
}
}

Les champs marqués avec x-f5xc-server-default: true voient leur valeur default appliquée par le serveur API F5 XC lorsqu’ils sont omis des requêtes. L’équilibreur de charge HTTP possède un grand nombre de valeurs par défaut appliquées par le serveur, car la plupart des fonctionnalités de sécurité et des options de protocole sont désactivées ou dans un état sécurisé par défaut.

Lorsque https_auto_cert est spécifié, le serveur applique ces valeurs par défaut pour les champs omis :

ChampValeur par défautTypeDescription
port443entierPort d’écoute HTTPS
http_redirectfalsebooléenRedirection HTTP vers HTTPS
add_hstsfalsebooléenEn-tête HTTP Strict Transport Security
tls_config.default_security{}objetTLS 1.2+ avec chiffrements forts
no_mtls{}objetTLS mutuel désactivé
default_header{}objetGestion par défaut de l’en-tête du nom de serveur
enable_path_normalize{}objetNormalisation du chemin activée
default_loadbalancer{}objetParamètres par défaut de l’équilibreur de charge
header_transformation_type.legacy_header_transformation{}objetTransformation d’en-tête héritée
connection_idle_timeout120000entierDélai d’inactivité de connexion en millisecondes (2 minutes)
http_protocol_options.http_protocol_enable_v1_v2{}objetHTTP/1.1 et HTTP/2 activés
coalescing_options.default_coalescing{}objetCoalescence de connexion HTTP/2 par défaut

Valeurs par défaut des fonctionnalités de sécurité

Section intitulée « Valeurs par défaut des fonctionnalités de sécurité »

Toutes les fonctionnalités de sécurité sont désactivées par défaut lorsqu’elles sont omises :

ChampValeur par défautDescription
disable_waf{}Pare-feu applicatif (WAF) désactivé
disable_bot_defense{}Défense Bot désactivée
disable_rate_limit{}Limitation du débit désactivée
disable_api_discovery{}Découverte d’API désactivée
disable_api_testing{}Test d’API désactivé
disable_api_definition{}Définition d’API désactivée
disable_malware_protection{}Protection contre les logiciels malveillants désactivée
disable_client_side_defense{}Défense côté client désactivée
disable_ip_reputation{}Réputation IP désactivée
disable_threat_mesh{}Maillage de menaces désactivé
disable_malicious_user_detection{}Détection d’utilisateurs malveillants désactivée

Valeurs par défaut de la Protection DDoS et du contrôle d’accès

Section intitulée « Valeurs par défaut de la Protection DDoS et du contrôle d’accès »
ChampValeur par défautDescription
l7_ddos_protection.mitigation_block{}Bloquer le trafic DDoS (action d’atténuation par défaut)
l7_ddos_protection.default_rps_threshold{}Utiliser le seuil RPS par défaut
l7_ddos_protection.clientside_action_none{}Aucune validation DDoS côté client
l7_ddos_protection.ddos_policy_none{}Aucune référence de politique DDoS
no_challenge{}Aucun défi client
user_id_client_ip{}Identifier les utilisateurs par IP client
disable_trust_client_ip_headers{}Ne pas faire confiance aux en-têtes IP client

Autres valeurs par défaut appliquées par le serveur

Section intitulée « Autres valeurs par défaut appliquées par le serveur »
ChampValeur par défautTypeDescription
advertise_on_public_default_vip{}objetAnnoncer sur le VIP public par défaut
round_robin{}objetAlgorithme d’équilibrage de charge round-robin
add_locationtruebooléenAjouter l’en-tête de localisation aux réponses
system_default_timeouts{}objetUtiliser les délais d’expiration système par défaut
service_policies_from_namespace{}objetHériter des politiques de service de l’espace de noms
default_sensitive_data_policy{}objetUtiliser la politique de données sensibles par défaut

Les champs marqués avec x-f5xc-conflicts-with indiquent des modèles OneOf. Un seul champ de chaque groupe peut être spécifié.

Nom du groupeChampsDescription
lb_typehttp, https, https_auto_cert, http_httpsType de protocole de l’équilibreur de charge
advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseModalité d’annonce de l’équilibreur de charge
load_balancing_algorithmround_robin, least_request, ring_hash, randomAlgorithme de distribution du trafic
Nom du groupeChampsDescription
tls_configdefault_security, medium_security, low_security, custom_securityNiveau de sécurité TLS
mtlsno_mtls, use_mtlsTLS mutuel activé ou désactivé
Nom du groupeChampsDescription
http_protocolhttp_protocol_enable_v1_only, http_protocol_enable_v1_v2, http_protocol_enable_v2_onlyVersions du protocole HTTP
header_transformationlegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationType de transformation des en-têtes HTTP
server_name_headerdefault_header, append_server_name_header, pass_through_server_name_headerGestion de l’en-tête du nom de serveur
Nom du groupeChampsDescription
path_normalizeenable_path_normalize, disable_path_normalizeNormalisation du chemin activée ou désactivée
loadbalancer_choicenon_default_loadbalancer, default_loadbalancerÉquilibreur de charge par défaut ou non
coalescingdefault_coalescing, disable_coalescing, enable_for_same_originOptions de coalescence de connexion HTTP/2

Groupes de fonctionnalités de sécurité (11 groupes)

Section intitulée « Groupes de fonctionnalités de sécurité (11 groupes) »
Nom du groupeChampsDescription
wafdisable_waf, enable_wafPare-feu applicatif (WAF)
bot_defensedisable_bot_defense, enable_bot_defenseDétection et atténuation des bots
rate_limitdisable_rate_limit, enable_rate_limitLimitation du débit
api_discoverydisable_api_discovery, enable_api_discoveryDécouverte d’API
api_testingdisable_api_testing, enable_api_testingTest d’API
api_definitiondisable_api_definition, enable_api_definitionDéfinition d’API
malware_protectiondisable_malware_protection, enable_malware_protectionProtection contre les logiciels malveillants
client_side_defensedisable_client_side_defense, enable_client_side_defenseDéfense côté client
ip_reputationdisable_ip_reputation, enable_ip_reputationRéputation IP
threat_meshdisable_threat_mesh, enable_threat_meshMaillage de menaces
malicious_user_detectiondisable_malicious_user_detection, enable_malicious_user_detectionDétection d’utilisateurs malveillants
Nom du groupeChampsDescription
ddos_mitigationmitigation_block, mitigation_challenge, mitigation_noneAction d’atténuation DDoS
ddos_rps_thresholddefault_rps_threshold, custom_rps_thresholdSeuil de requêtes par seconde
ddos_clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaAction de validation DDoS côté client
ddos_policyddos_policy_none, ddos_policy_refRéférence de politique DDoS ou aucune
Nom du groupeChampsDescription
challengeno_challenge, js_challenge, captcha_challengeType de défi client pour la détection de bots
user_identificationuser_id_client_ip, user_identificationMéthode d’identification des utilisateurs
client_ip_headersdisable_trust_client_ip_headers, enable_trust_client_ip_headersFaire confiance ou non aux en-têtes IP client
timeoutssystem_default_timeouts, custom_timeoutsUtiliser les délais système par défaut ou personnalisés
service_policies_sourceservice_policies_from_namespace, active_service_policiesPolitiques de service depuis l’espace de noms ou liste active
sensitive_data_policydefault_sensitive_data_policy, custom_sensitive_data_policyUtiliser la politique de données sensibles par défaut ou personnalisée

Recommandations de variantes OneOf (extension future)

Section intitulée « Recommandations de variantes OneOf (extension future) »

Statut : Non encore appliqué aux schémas http_loadbalancer.

Contrairement au healthcheck, qui inclut x-f5xc-recommended-oneof-variant pour indiquer le choix le plus courant pour les groupes OneOf, http_loadbalancer ne dispose pas encore de cette extension.

Healthcheck (implémenté) :

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

HTTP LoadBalancer (non encore implémenté) :

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

Pour ajouter cette extension à http_loadbalancer :

  1. Observer les sélections par défaut de la console F5 XC (par ex., quel lb_type est présélectionné dans l’interface)
  2. Ajouter la configuration dans config/discovered_defaults.yaml
  3. Relancer le pipeline d’enrichissement pour appliquer l’extension

Structure attendue une fois ajoutée :

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

Cette extension permettrait aux outils en aval de présélectionner la variante la plus couramment utilisée lors de la présentation des options de configuration aux utilisateurs.

Les champs marqués avec x-f5xc-constraints incluent des contraintes de validation découvertes à partir de l’analyse de l’API.

ChampminItemsmaxItemsuniqueItems
spec.domains1-false
spec.routes1256false
spec.blocked_clients1128true
spec.trusted_clients1128true
spec.data_guard_rules1256true
ChampMinimumMaximumDéfautDescription
spec.https_auto_cert.port165535443Numéro de port HTTPS
spec.https_auto_cert.connection_idle_timeout10003600000120000Délai d’inactivité de connexion (millisecondes, 1s à 1h)
ChampValeursDéfautDescription
spec.https_auto_cert.tls_configdefault_security, medium_security, low_security, custom_securitydefault_securityNiveau de sécurité TLS
spec.https_auto_cert.header_transformation_typelegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationlegacy_header_transformationTransformation des en-têtes 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_v2Versions du protocole HTTP
spec.https_auto_cert.coalescing_optionsdefault_coalescing, disable_coalescing, enable_for_same_origindefault_coalescingCoalescence de connexion HTTP/2
spec.load_balancing_algorithmround_robin, least_request, ring_hash, randomround_robinAlgorithme d’équilibrage de charge
spec.l7_ddos_protection.mitigationmitigation_block, mitigation_challenge, mitigation_nonemitigation_blockAction d’atténuation DDoS de couche 7
spec.l7_ddos_protection.rps_thresholddefault_rps_threshold, custom_rps_thresholddefault_rps_thresholdSeuil RPS pour la détection DDoS
spec.l7_ddos_protection.clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaclientside_action_noneValidation DDoS côté client
spec.challengeno_challenge, js_challenge, captcha_challengeno_challengeType de défi client
spec.advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseadvertise_on_public_default_vipAnnonce de l’équilibreur de charge

Le pipeline d’enrichissement ajoute des métadonnées x-f5xc-guided-workflows au niveau de la spécification. Ces workflows fournissent des conseils de déploiement étape par étape, consommés par les assistants IA et les outils CLI.

Un workflow en 5 étapes pour créer un équilibreur de charge HTTP entièrement configuré avec un pool d’origine backend (défini dans config/guided_workflows.yaml) :

ÉtapeActionRessourceChamps requisOptionnel
1Créer le pool d’origineorigin_poolname, origin_servers, portNon
2Configurer le contrôle de santéhealthcheckname, http_health_checkOui
3Attacher le contrôle de santé--Oui
4Créer l’équilibreur de charge HTTPhttp_loadbalancername, domains, http.portNon
5Vérifier le déploiement--Non

Prérequis : Espace de noms valide dans le tenant cible, application backend accessible via IP ou DNS, certificat SSL (optionnel pour HTTPS).

Déployer un équilibreur de charge HTTPS avec TLS

Section intitulée « Déployer un équilibreur de charge HTTPS avec TLS »

Un workflow en 7 étapes pour créer un équilibreur de charge HTTPS avec terminaison SSL/TLS :

ÉtapeActionRessourceChamps requisOptionnel
1Téléverser le certificat SSLcertificatename, certificate_chain, private_keyNon
2Créer le pool d’origineorigin_poolname, origin_serversNon
3Configurer le contrôle de santéhealthcheck-Oui
4Configurer la politique WAFapp_firewall-Oui
5Créer l’équilibreur de charge HTTPShttp_loadbalancername, domains, https.tls_parametersNon
6Attacher la politique WAF--Oui
7Vérifier le déploiement HTTPS--Non

Prérequis : Espace de noms valide dans le tenant cible, certificat SSL et clé privée, application backend accessible.

Les outils en aval utilisent ces workflows pour guider les utilisateurs à travers des déploiements en plusieurs étapes :

  • CLI xcsh : Présente les workflows sous forme de commandes guidées interactives (par ex., xcsh deploy http-lb)
  • Extension VS Code : Affiche les étapes du workflow dans un panneau latéral avec suivi de la progression
  • Assistants IA : Suivent les étapes du workflow de manière séquentielle, créant chaque ressource et validant les dépendances

Ces extensions fournisseur sont ajoutées au schéma OpenAPI standard pour véhiculer les métadonnées spécifiques à F5 XC.

Type : string

Indique la classification de domaine pour l’organisation des CLI et des outils.

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

Type : object

Fournit des métadonnées complètes pour créer des configurations minimales viables. Comprend :

  • Description
  • Champs requis avec contraintes
  • Groupes mutuellement exclusifs
  • Exemples de configurations (YAML, JSON)
  • Exemples de commandes 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: |
...

Type : boolean

Lorsque la valeur est true, indique que la valeur default associée est appliquée par le serveur API F5 XC. Les champs portant cette extension peuvent être omis en toute sécurité des requêtes API — le serveur applique automatiquement la valeur par défaut.

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

Type : tableau de chaînes

Répertorie les noms de champs mutuellement exclusifs avec le champ courant, indiquant des modèles OneOf.

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

Type : object

Fournit des contraintes de validation incluant les limites de taille de tableau, les plages d’entiers, les exigences d’unicité et les métadonnées de découverte.

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 et x-f5xc-description-medium

Section intitulée « x-f5xc-description-short et x-f5xc-description-medium »

Type : string

Fournit des longueurs de description alternatives pour différents cas d’utilisation :

  • x-f5xc-description-short : 60 caractères maximum (colonnes CLI, badges)
  • x-f5xc-description-medium : 150 caractères maximum (infobulles, résumés)
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"

Type : any (correspond au type du champ)

Fournit des exemples de champs concrets pour la documentation et les outils.

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

Type : tableau de chaînes

Indique les exigences spécifiques au contexte à l’aide d’indicateurs : 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"]
FichierContenu
docs/specifications/api/virtual.jsonTous les schémas http_loadbalancer avec enrichissements
docs/specifications/api/openapi.jsonSpécification fusionnée avec tous les schémas
FichierObjectif
config/minimum_configs.yamlSource des métadonnées de configuration minimale
config/constraint_patterns.yamlDéfinitions des modèles de contraintes
config/guided_workflows.yamlDéfinitions des étapes de workflow guidé
config/domain_descriptions.yamlMétadonnées de description au niveau du domaine
  • viewshttp_loadbalancerCreateSpecType - Schéma de l’opération de création
  • viewshttp_loadbalancerReplaceSpecType - Schéma de l’opération de mise à jour
  • viewshttp_loadbalancerGetSpecType - Schéma de l’opération de lecture
VersionDateModifications
2.0.462026-04-18Ajout des valeurs par défaut appliquées par le serveur, de l’intégration des workflows guidés et de la section de configuration minimale étendue
2.0.452026-01-20Documentation initiale des enrichissements http_loadbalancer