Contraintes applicables aux règles d'administration pour Cloud Load Balancing

Cette page fournit des informations supplémentaires sur les contraintes liées aux règles d'administration qui s'appliquent à Cloud Load Balancing. Utilisez des contraintes de règle d'administration pour appliquer des paramètres d'équilibreur de charge à l'ensemble d'un projet, d'un dossier ou d'une organisation.

Utilisez une règle d'administration pour limiter les types Cloud Load Balancing pouvant être créés dans votre organisation. Définissez la contrainte de règle d'administration suivante :

constraints/compute.restrictLoadBalancerCreationForTypes

Lorsque vous définissez la contrainte compute.restrictLoadBalancerCreationForTypes, vous spécifiez les types Cloud Load Balancing qui ne sont pas autorisés. Pour obtenir la liste des types disponibles, consultez la section Restreindre la création d'un équilibreur de charge.

Configurer une règle d'administration

Console

Pour définir la règle d'administration Cloud Load Balancing depuis la console, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Règles d'administration.

    Accéder à la page "Règles d'administration"

  2. Dans le champ Filtre, saisissez load, puis sélectionnez constraints/compute.restrictLoadBalancerCreationForTypes.
  3. Cliquez sur Restreindre la création d'équilibreurs de charge en fonction de leurs types.
  4. Cliquez sur Modifier pour modifier vos contraintes liées aux règles Cloud Load Balancing existantes.
  5. Pour créer une règle personnalisée, sélectionnez Personnaliser.
  6. Une fois les modifications effectuées, cliquez sur Enregistrer pour appliquer les paramètres de contrainte.

gcloud

Pour définir la règle d'administration d'OS Login, exécutez la commande gcloud resource-manager org-policies enable-enforce.

  1. Trouvez l'ID de votre organisation.

    gcloud organizations list
  2. Créez le fichier de règle, comme indiqué dans les exemples suivants.

    Répertorier les valeurs à refuser

    {
     "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
     "listPolicy": {
       "deniedValues": [
         "INTERNAL_TCP_UDP",
         "INTERNAL_HTTP_HTTPS",
         "EXTERNAL_NETWORK_TCP_UDP",
         "EXTERNAL_TCP_PROXY",
         "EXTERNAL_SSL_PROXY",
         "EXTERNAL_HTTP_HTTPS"
       ]
     }
    }
    

    Refuser tous les équilibreurs de charge externes

    {
     "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
     "listPolicy": {
       "deniedValues": [
         "EXTERNAL"
       ]
     }
    }
    

    Refuser tous les équilibreurs de charge

    {
      "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
      "listPolicy": {
        "allValues": "DENY"
      }
    }
    
  3. Définissez la contrainte dans votre organisation. Remplacez ORGANIZATION_ID par votre ID d'organisation.

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --organization=ORGANIZATION_ID
    

    Vous pouvez également appliquer les règles d'administration d'OS Login à un dossier ou à un projet avec respectivement les options --folder ou --project, ainsi que l'ID de dossier et de projet.

    Pour les dossiers, exécutez la commande suivante :

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --folder=FOLDER_ID
    

    Pour les projets, exécutez la commande suivante :

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --project=PROJECT_ID
    

    Remplacez les éléments suivants :

Une fois la règle définie, elle est appliquée lorsque vous ajoutez les règles de transfert Google Cloud correspondantes.

La contrainte n'est pas appliquée aux configurations Cloud Load Balancing existantes.

Si vous tentez de créer une configuration Cloud Load Balancing d'un type qui ne respecte pas la contrainte, la tentative échoue et un message d'erreur est généré. Le message d'erreur s'affiche au format suivant :

Constraint constraints/compute.restrictLoadBalancerCreationForTypes
violated for projects/PROJECT_NAME. Forwarding Rule projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME
of type SCHEME is not allowed.

Si vous définissez plusieurs contraintes restrictLoadBalancerCreationForTypes pour différents niveaux de ressources, elles sont appliquées de manière hiérarchique. Pour cette raison, il est recommandé de définir le champ inheritFromParent sur true, ce qui garantit que les règles des niveaux supérieurs sont également prises en compte.

Pour en savoir plus sur la définition des règles d'administration, y compris la description des options disponibles, consultez les pages Créer et gérer des règles d'administration et Utiliser des contraintes.

Messages d'erreur GKE

Si vous utilisez des objets Service et Ingress de Google Kubernetes Engine (GKE), utilisez cette règle d'administration pour restreindre la création d'un équilibreur de charge dans un message d'erreur semblable à ce qui suit :

Warning  Sync    28s   loadbalancer-controller  Error during sync: error running
load balancer syncing routine: loadbalancer FORWARDING_RULE_NAME
does not exist: googleapi: Error 412:
Constraint constraints/compute.restrictLoadBalancerCreationForTypes violated for
projects/PROJECT_ID. Forwarding Rule
projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME
of type LOAD_BALANCER_TYPE is not allowed, conditionNotMet

Vous pouvez afficher les messages d'erreur GKE en exécutant les commandes suivantes :

kubectl get events -w
kubectl describe RESOURCE_KIND NAME

Remplacez les éléments suivants :

  • RESOURCE_KIND : genre de l'équilibreur de charge, ingress ou service
  • NAME : nom de l'équilibreur de charge

Étape suivante