Configurer des plages d'adresses IP publiques utilisées en mode privé

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Cette page explique comment utiliser des plages d'adresses IP publiques utilisées en mode privé dans votre environnement d'adresse IP privée. Pour obtenir des informations générales sur la création d'environnements d'adresse IP privée, consultez la page Configurer un environnement d'adresse IP privée.

À propos des plages d'adresses IP publiques utilisées en mode privé dans Cloud Composer

Google Kubernetes Engine nécessite de nombreuses adresses IP pour ses ressources : chaque nœud, pod et service doit posséder une adresse IP unique. Cela peut entraîner une situation dans laquelle les plages d'adresses IP privées existantes ne peuvent pas gérer suffisamment d'adresses IP.

Les environnements Cloud Composer peuvent utiliser certaines plages d'adresses IP de l'espace d'adressage non-RFC 1918 sans configuration supplémentaire.

Si vous souhaitez utiliser davantage d'adresses IP, votre environnement peut utiliser en mode privé certaines plages d'adresses IP publiques en tant que plages d'adresses IP de sous-réseau internes pour les pods et les services. Ces plages sont appelées plages d'adresses IP publiques utilisées en mode privé (PUPI).

Vous pouvez utiliser n'importe quelle adresse IP publique en mode privé, à l'exception de certaines plages restreintes.

Avant de commencer

  • Vous ne pouvez spécifier des plages d'adresses IP publiques que lorsque vous créez un environnement. Il n'est pas possible de modifier les plages d'adresses IP d'un environnement existant.

  • Votre environnement doit être un environnement d'adresse IP privée.

  • Vous pouvez créer des environnements avec des plages PUPI uniquement à l'aide de gcloud, de Terraform et de l'API REST.

  • Seuls les pods et les services GKE peuvent utiliser des plages d'adresses IP publiques. D'autres composants d'environnement tels que Cloud SQL, le serveur Web et le plan de contrôle GKE ne peuvent pas utiliser des plages d'adresses IP publiques dans un environnement d'adresse IP privée.

  • Le cluster GKE est créé avec la configuration SNAT par défaut désactivée.

Activer les plages PUPI lors de la création d'un environnement

gcloud

Pour créer un environnement avec des plages PUPI, utilisez l'argument --enable-privately-used-public-ips lorsque vous créez un environnement d'adresse IP privée. Spécifiez ensuite des plages d'adresses IP publiques pour les pods et les services.

Plages de sous-réseaux gérées par GKE

Pour créer des plages de sous-réseaux gérées par GKE :

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-ipv4-cidr POD_IP_RANGE \
    --services-ipv4-cidr SERVICES_IP_RANGE

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région dans laquelle se trouve l'environnement.
  • POD_IP_RANGE par une plage d'adresses IP au format CIDR. Cette plage est ajoutée en tant que plage d'adresses IP secondaire au sous-réseau de votre environnement et sert de plage d'adresses IP pour les pods.
  • SERVICES_IP_RANGE par une plage d'adresses IP au format CIDR. Cette plage correspond à la plage d'adresses IP secondaire des services situés dans le sous-réseau de votre environnement.

Exemple :

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-ipv4-cidr 10.3.192.0/20 \
    --services-ipv4-cidr 172.16.194.0/23

Plages de sous-réseaux gérées par l'utilisateur

Pour créer des plages gérées par l'utilisateur :

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-secondary-range-name POD_IP_RANGE_NAME \
    --services-secondary-range-name SERVICES_IP_RANGE_NAME

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région dans laquelle se trouve l'environnement.
  • POD_IP_RANGE_NAME par le nom d'une plage d'adresses IP secondaire existante dans le sous-réseau spécifié. Cette plage est utilisée par les pods.
  • SERVICES_IP_RANGE_NAME par le nom d'une plage d'adresses IP secondaire existante dans le sous-réseau spécifié. Cette plage est utilisée par les services.

Exemple :

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-secondary-range-name "public-1" \
    --services-secondary-range-name "public-2"

API

Rédigez une requête API environments.create. Dans la ressource Environnement, spécifiez les paramètres de configuration d'un environnement avec des plages PUPI.

Plages de sous-réseaux gérées par GKE

Pour créer des plages de sous-réseaux gérées par GKE :

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterIpv4CidrBlock":"POD_IP_RANGE",
        "servicesIpv4CidrBlock":"SERVICES_IP_RANGE"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • POD_IP_RANGE par une plage d'adresses IP au format CIDR. Cette plage est ajoutée en tant que plage d'adresses IP secondaire au sous-réseau de votre environnement et sert de plage d'adresses IP pour les pods.
  • SERVICES_IP_RANGE par une plage d'adresses IP au format CIDR. Cette plage correspond à la plage d'adresses IP secondaire des services situés dans le sous-réseau de votre environnement.

Exemple :

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterIpv4CidrBlock":"10.3.192.0/20",
        "servicesIpv4CidrBlock":"172.16.194.0/23"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

Plages de sous-réseaux gérées par l'utilisateur

Pour créer des plages gérées par l'utilisateur :

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterSecondaryRangeName":"POD_IP_RANGE",
        "servicesSecondaryRangeName": "SERVICES_IP_RANGE"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • POD_IP_RANGE_NAME par le nom d'une plage d'adresses IP secondaire existante dans le sous-réseau spécifié. Cette plage est utilisée par les pods.
  • SERVICES_IP_RANGE_NAME par le nom d'une plage d'adresses IP secondaire existante dans le sous-réseau spécifié. Cette plage est utilisée par les services.

Exemple :

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterSecondaryRangeName":"public-1",
        "servicesSecondaryRangeName": "public-2"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

Terraform

Lorsque vous créez un environnement, le champ enable_privately_used_public_ips du bloc private_environment_config permet l'utilisation de plages PUPI. Vous devez également spécifier des plages PUPI pour les pods et les services.

Plages de sous-réseaux gérées par GKE

Pour créer des plages de sous-réseaux gérées par GKE :

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {

      ip_allocation_policy = [{
        
        use_ip_aliases = true
        cluster_ipv4_cidr_block = "POD_IP_RANGE"
        services_ipv4_cidr_block = "SERVICES_IP_RANGE"
        cluster_secondary_range_name = null
        services_secondary_range_name = null
      }]
    }

    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private ip environment parameters
    }

  }
}

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région dans laquelle se trouve l'environnement.
  • POD_IP_RANGE par une plage d'adresses IP au format CIDR. Cette plage est ajoutée en tant que plage d'adresses IP secondaire au sous-réseau de votre environnement et sert de plage d'adresses IP pour les pods.
  • SERVICES_IP_RANGE par une plage d'adresses IP au format CIDR. Cette plage correspond à la plage d'adresses IP secondaire des services situés dans le sous-réseau de votre environnement.

Exemple :

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {

      // Specify your network and subnetwork
      network    = google_compute_network.example_network.id
      subnetwork = google_compute_subnetwork.example_subnet.id

      ip_allocation_policy = [{
        
        use_ip_aliases = true
        // Specify PUPI addresses
        cluster_ipv4_cidr_block = "10.3.192.0/20"
        services_ipv4_cidr_block = "172.16.194.0/23"
        cluster_secondary_range_name = null
        services_secondary_range_name = null
      }]
    }

    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private environment parameters
    }

  }
}

Plages de sous-réseaux gérées par l'utilisateur

Pour créer des plages gérées par l'utilisateur :

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {

      ip_allocation_policy = [{
        
        use_ip_aliases = true
        cluster_ipv4_cidr_block = null
        services_ipv4_cidr_block = null
        cluster_secondary_range_name = POD_IP_RANGE_NAME
        services_secondary_range_name = SERVICES_IP_RANGE_NAME
      }]
    }

    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private ip environment parameters
    }

  }

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région où se trouve l'environnement.
  • POD_IP_RANGE_NAME par le nom d'une plage d'adresses IP secondaire existante dans le sous-réseau spécifié. Cette plage est utilisée par les pods.
  • SERVICES_IP_RANGE_NAME par le nom d'une plage d'adresses IP secondaire existante dans le sous-réseau spécifié. Cette plage est utilisée par les services.

Exemple :

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {

      // Specify your network and subnetwork
      network    = google_compute_network.example_network.id
      subnetwork = google_compute_subnetwork.example_subnet.id

      ip_allocation_policy = [{
        
        use_ip_aliases = true
        cluster_ipv4_cidr_block = null
        services_ipv4_cidr_block = null
        // Specify existing ranges
        cluster_secondary_range_name = "public-1"
        services_secondary_range_name = "public-2"
      }]
    }
    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private environment parameters
    }

  }
}

Étape suivante