En tant qu'administrateur d'organisation, vous pouvez créer des contraintes personnalisées pour les services et les jobs Cloud Run. Les règles d'administration appliquent ces contraintes personnalisées au niveau du projet, du dossier ou de l'organisation.
Cette page explique comment créer des contraintes personnalisées pour les services et les jobs, et comment les appliquer au niveau du projet. Pour en savoir plus sur les règles d'administration personnalisées, consultez la page Créer et gérer des règles d'administration personnalisées.
Cloud Run vous permet d'écrire un nombre illimité de contraintes personnalisées à l'aide de la plupart des champs configurés par l'utilisateur dans l'API Cloud Run Admin. Par exemple, vous pouvez créer une contrainte personnalisée qui empêche les services ou les jobs de définir la phase de lancement sur "Alpha" ou "Bêta".
Une fois appliquées, les requêtes qui ne respectent pas une règle imposant une contrainte personnalisée affichent un message d'erreur dans gcloud CLI et dans les journaux Cloud Run. Le message d'erreur contient l'ID et la description de la contrainte personnalisée enfreinte.
Avant de commencer
- Vous devez disposer du rôle Administrateur des règles d'administration
roles/orgpolicy.policyAdmin
pour créer et afficher les règles d'administration du client. Consultez la section Rôles requis.
Limites
- Les contraintes personnalisées Cloud Run doivent être définies à l'aide des spécifications de champ de l'API Cloud Run Admin v1.
- Les libellés et les champs de premier niveau ne sont pas acceptés.
Personnaliser les contraintes courantes
Les exemples suivants montrent comment spécifier des contraintes personnalisées pour des cas d'utilisation courants à l'aide de gcloud CLI. Pour obtenir des instructions sur la console Google Cloud, consultez Créer et gérer des règles d'administration personnalisées.
- Restreindre les paramètres d'entrée
- Exiger une limite de mémoire maximale
- Empêcher les étapes de lancement hors disponibilité générale
- Exiger l'autorisation binaire
- Exiger une vérification de l'activité pour chaque conteneur
- Exiger un sidecar via un préfixe et un port d'image de conteneur
Restreindre les paramètres d'entrée
Créez une contrainte personnalisée qui restreint le paramètre d'entrée des services Cloud Run nouveaux ou révisés, puis appliquez la contrainte personnalisée au niveau du projet.
Pour spécifier une contrainte personnalisée qui nécessite qu'un service soit défini sur "Interne" à l'aide de Google Cloud CLI, procédez comme suit :
Créez un fichier
ingressConstraint.yaml
avec le contenu suivant :name: organizations/ORGANIZATION_ID/customConstraints/custom.ingressInternal resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "'run.googleapis.com/ingress' in resource.metadata.annotations && resource.metadata.annotations['run.googleapis.com/ingress'] == 'internal'" actionType: ALLOW displayName: IngressInternal description: Require ingress to be set to internal
Remplacez ORGANIZATION_ID par l'ID de votre organisation.
Ajoutez la contrainte personnalisée en exécutant la commande suivante :
gcloud org-policies set-custom-constraint /ingressConstraint.yaml
Spécifiez une nouvelle règle qui applique la contrainte personnalisée créée à l'étape précédente en créant un fichier
enforceIngressConstraint.yaml
avec le contenu suivant :name: projects/PROJECT_ID/policies/ingressInternal spec: rules: - enforce: true
Remplacez PROJECT_ID par l'ID de votre projet.
Définissez la nouvelle règle en exécutant la commande suivante :
gcloud org-policies set-policy /enforceIngressConstraint.yaml
Exiger une limite de mémoire maximale
Exigez que tous les conteneurs de services Cloud Run nouveaux ou révisés aient une limite de mémoire inférieure à une valeur spécifique.
Pour appliquer une limite de mémoire personnalisée au conteneur du service à l'aide de Google Cloud CLI, procédez comme suit :
Créez un fichier
memorylimitConstraint.yaml
avec le contenu suivant :name: organizations/ORGANIZATION_ID/customConstraints/custom.memoryLimit resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "resource.spec.template.spec.containers.all(container, 'memory' in container.resources.limits && container.resources.limits['memory'] <= 'MEMORY_LIMIT')" actionType: ALLOW displayName: memoryLimitCap description: Require the container memory limit to be set to <= MEMORY_LIMIT
Remplacez :
- ORGANIZATION_ID par l'ID de votre organisation.
- MEMORY_LIMIT par la limite de mémoire que vous souhaitez définir.
Ajoutez la contrainte personnalisée en exécutant la commande suivante :
gcloud org-policies set-custom-constraint /memorylimitConstraint.yaml
Spécifiez une nouvelle règle qui applique la contrainte personnalisée créée à l'étape précédente en créant un fichier
enforceMemorylimitConstraint.yaml
avec le contenu suivant :name: projects/PROJECT_ID/policies/custom.memoryLimit spec: rules: - enforce: true
Remplacez PROJECT_ID par l'ID de votre projet.
Définissez la nouvelle règle en exécutant la commande suivante :
gcloud org-policies set-policy /enforceMemorylimitConstraint.yaml
Empêcher les étapes de lancement hors disponibilité générale
Empêchez la phase de lancement de Cloud Run de passer de la version DG par défaut à une version "Alpha" ou "Bêta".
Pour empêcher l'étape de lancement d'être définie sur une étape de lancement hors disponibilité générale, procédez comme suit :
Créez un fichier
launchstageConstraint.yaml
avec le contenu suivant :name: organizations/ORGANIZATION_ID/customConstraints/custom.launchStage resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "!('run.googleapis.com/launch-stage' in resource.metadata.annotations)" actionType: ALLOW displayName: launchStage description: Only allow unset launch stage (default is GA).
Remplacez ORGANIZATION_ID par l'ID de votre organisation.
Ajoutez la contrainte personnalisée en exécutant la commande suivante :
gcloud org-policies set-custom-constraint /launchstageConstraint.yaml
Spécifiez une nouvelle règle qui applique la contrainte personnalisée créée à l'étape précédente en créant un fichier
enforceLaunchstageConstraint.yaml
avec le contenu suivant :name: projects/PROJECT_ID/policies/launchStage spec: rules: - enforce: true
Remplacez PROJECT_ID par l'ID de votre projet.
Définissez la nouvelle règle en exécutant la commande suivante :
gcloud org-policies set-policy /enforceLaunchstageConstraint.yaml
Exiger l'autorisation binaire
Exigez que l'autorisation binaire soit définie sur default
.
Pour exiger que l'autorisation binaire soit définie sur default
, procédez comme suit :
Créez un fichier
binaryauthorizationConstraint.yaml
avec le contenu suivant :name: organizations/ORGANIZATION_ID/customConstraints/custom.binaryAuthorization resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "'run.googleapis.com/binary-authorization' in resource.metadata.annotations && resource.metadata.annotations['run.googleapis.com/binary-authorization'] == 'default'" actionType: ALLOW displayName: binaryAuthorization description: Require binaryAuthorization to be set to default.
Remplacez ORGANIZATION_ID par l'ID de votre organisation.
Ajoutez la contrainte personnalisée en exécutant la commande suivante :
gcloud org-policies set-custom-constraint /binaryauthorizationConstraint.yaml
Spécifiez la nouvelle règle qui applique la contrainte personnalisée créée à l'étape précédente en créant un fichier
enforceBinaryauthorizationConstraint.yaml
avec le contenu suivant :name: projects/PROJECT_ID/policies/binaryAuthorization spec: rules: - enforce: true
Remplacez PROJECT_ID par l'ID de votre projet.
Définissez la nouvelle règle en exécutant la commande suivante :
gcloud org-policies set-policy /enforceBinaryauthorizationConstraint.yaml
Exiger une vérification de l'activité pour chaque conteneur
Exigez que les services disposent d'une vérification de l'activité pour chaque conteneur en demandant que le champ livenessProbe.initialDelaySeconds
soit défini sur une valeur.
Pour exiger une vérification de l'activité pour chaque conteneur, procédez comme suit :
Créez un fichier
livenessprobeConstraint.yaml
avec le contenu suivant :name: organizations/ORGANIZATION_ID/customConstraints/custom.livenessProbe resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "resource.spec.template.spec.containers.all(container, has(container.livenessProbe.initialDelaySeconds))" actionType: ALLOW displayName: livenessProbe description: Require all containers to have a liveness probe configured with initialDelaySeconds.
Remplacez ORGANIZATION_ID par l'ID de votre organisation.
Ajoutez la contrainte personnalisée en exécutant la commande suivante :
gcloud org-policies set-custom-constraint /livenessprobeConstraint.yaml
Spécifiez une nouvelle règle qui applique la contrainte personnalisée créée à l'étape précédente en créant un fichier
enforceLivenessprobeConstraint.yaml
avec le contenu suivant :name: projects/PROJECT_ID/policies/livenessProbe spec: rules: - enforce: true
Remplacez PROJECT_ID par l'ID de votre projet.
Définissez la nouvelle règle en exécutant la commande suivante :
gcloud org-policies set-policy /enforceLivenessprobeConstraint.yaml
Exiger un sidecar via un préfixe et un port d'image de conteneur
Exigez qu'un service dispose d'au moins un conteneur side-car qui utilise une image commençant par un préfixe spécifié et un port égal à un nombre spécifié.
Pour exiger qu'un conteneur commence par un préfixe défini et utilise PORT = 8081
, procédez comme suit :
Créez un fichier
requireSidecarConstraint.yaml
avec le contenu suivant :name: organizations/ORGANIZATION_ID/customConstraints/custom.requireSidecar resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "resource.spec.template.spec.containers.exists(container, container.image.startsWith('us-docker.pkg.dev/cloud-ops-agents-artifacts/cloud-run-gmp-sidecar/') && container.ports.exists(port, port.containerPort == 8081))" actionType: ALLOW displayName: requireSidecar description: Require at least one container with an image that starts with "us-docker.pkg.dev/cloud-ops-agents-artifacts/cloud-run-gmp-sidecar/" and uses port 8081
Remplacez ORGANIZATION_ID par l'ID de votre organisation.
Ajoutez la contrainte personnalisée en exécutant la commande suivante :
gcloud org-policies set-custom-constraint /requireSidecarConstraint.yaml
Spécifiez une nouvelle règle qui applique la contrainte personnalisée créée à l'étape précédente en créant un fichier
enforceRequireSidecarConstraint.yaml
avec le contenu suivant :name: projects/PROJECT_ID/policies/requireSidecar spec: rules: - enforce: true
Remplacez PROJECT_ID par l'ID de votre projet.
Définissez la nouvelle règle en exécutant la commande suivante :
gcloud org-policies set-policy /enforceRequireSidecarConstraint.yaml