Privat genutzte öffentliche IP-Bereiche konfigurieren

Cloud Composer 1 Cloud Composer 2

Auf dieser Seite wird erläutert, wie Sie privat verwendete öffentliche IP-Bereiche in Ihrer privaten IP-Umgebung verwenden. Allgemeine Informationen zum Erstellen privater IP-Umgebungen finden Sie unter Private IP-Umgebung konfigurieren.

Privat genutzte öffentliche IP-Bereiche in Cloud Composer

Google Kubernetes Engine benötigt viele IP-Adressen für seine Ressourcen: Jeder Knoten, Pod und Dienst muss eine eindeutige IP-Adresse haben. Dies kann dazu führen, dass vorhandene private IP-Bereiche nicht genügend IP-Adressen aufnehmen können.

Cloud Composer-Umgebungen können einige IP-Bereiche aus dem Adressbereich außerhalb RFC 1918 ohne zusätzliche Konfiguration verwenden.

Wenn Sie mehr IP-Adressen verwenden möchten, kann Ihre Umgebung bestimmte öffentliche IP-Adressbereiche privat als interne Subnetz-IP-Adressbereiche für Pods und Dienste verwenden. Solche Bereiche werden privat verwendete öffentliche IP-Bereiche (PUPI) genannt.

Sie können jede öffentliche IP-Adresse privat verwenden, mit Ausnahme bestimmter eingeschränkter Bereiche.

Hinweise

  • Sie können öffentliche IP-Bereiche nur angeben, wenn Sie eine neue Umgebung erstellen. Es ist nicht möglich, die IP-Bereiche einer vorhandenen Umgebung zu ändern.

  • Die Umgebung muss eine private IP-Umgebung sein.

  • Umgebungen mit PUPI-Bereichen können Sie nur mit gcloud, Terraform und der REST API erstellen.

  • Nur GKE-Pods und -Dienste können öffentliche IP-Bereiche verwenden. Andere Umgebungskomponenten wie Cloud SQL, Webserver und GKE-Steuerungsebene können in einer privaten IP-Umgebung keine öffentlichen IP-Bereiche verwenden.

  • Der GKE-Cluster wird mit deaktiviertem Standard-SNAT erstellt.

PUPI-Bereiche beim Erstellen einer Umgebung aktivieren

gcloud

Verwenden Sie zum Erstellen einer Umgebung mit PUPI-Bereichen das Argument --enable-privately-used-public-ips, wenn Sie eine private IP-Umgebung erstellen. Geben Sie dann öffentliche IP-Bereiche für Pods und Dienste an.

Von GKE verwaltete Subnetzbereiche

So erstellen Sie Subnetzbereiche, die von GKE verwaltet werden:

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

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • POD_IP_RANGE durch einen IP-Adressbereich in der CIDR-Notation. Dieser Bereich wird als sekundärer IP-Adressbereich dem Subnetzwerk Ihrer Umgebung hinzugefügt und als IP-Adressbereich für Pods verwendet.
  • SERVICES_IP_RANGE durch einen IP-Adressbereich in der CIDR-Notation. Dieser Bereich ist der sekundäre IP-Adressbereich für Dienste im Subnetzwerk Ihrer Umgebung.

Beispiel:

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

Von Nutzern verwaltete Subnetzbereiche

So erstellen Sie nutzerverwaltete Bereiche:

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

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • POD_IP_RANGE_NAME durch den Namen eines vorhandenen sekundären IP-Adressbereichs im angegebenen Subnetzwerk. Dieser Bereich wird von Pods verwendet.
  • SERVICES_IP_RANGE_NAME durch den Namen eines vorhandenen sekundären IP-Adressbereichs im angegebenen Subnetzwerk. Dieser Bereich wird von Diensten verwendet.

Beispiel:

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

Erstellen Sie eine API-Anfrage environments.create. Geben Sie in der Ressource Umgebung die Konfigurationsparameter für eine Umgebung mit PUPI-Bereichen an.

Von GKE verwaltete Subnetzbereiche

So erstellen Sie Subnetzbereiche, die von GKE verwaltet werden:

// 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
    }
  }
}

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • POD_IP_RANGE durch einen IP-Adressbereich in der CIDR-Notation. Dieser Bereich wird als sekundärer IP-Adressbereich dem Subnetzwerk Ihrer Umgebung hinzugefügt und als IP-Adressbereich für Pods verwendet.
  • SERVICES_IP_RANGE durch einen IP-Adressbereich in der CIDR-Notation. Dieser Bereich ist der sekundäre IP-Adressbereich für Dienste im Subnetzwerk Ihrer Umgebung.

Beispiel:

// 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
    }
  }
}

Von Nutzern verwaltete Subnetzbereiche

So erstellen Sie nutzerverwaltete Bereiche:

// 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
    }
  }
}

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • POD_IP_RANGE_NAME durch den Namen eines vorhandenen sekundären IP-Adressbereichs im angegebenen Subnetzwerk. Dieser Bereich wird von Pods verwendet.
  • SERVICES_IP_RANGE_NAME durch den Namen eines vorhandenen sekundären IP-Adressbereichs im angegebenen Subnetzwerk. Dieser Bereich wird von Diensten verwendet.

Beispiel:

// 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

Wenn Sie eine Umgebung erstellen, ermöglicht das Feld enable_privately_used_public_ips im Block private_environment_config die Verwendung von PUPI-Bereichen. Außerdem müssen Sie PUPI-Bereiche für Pods und Dienste angeben.

Von GKE verwaltete Subnetzbereiche

So erstellen Sie Subnetzbereiche, die von GKE verwaltet werden:

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
    }

  }
}

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • POD_IP_RANGE durch einen IP-Adressbereich in der CIDR-Notation. Dieser Bereich wird als sekundärer IP-Adressbereich dem Subnetzwerk Ihrer Umgebung hinzugefügt und als IP-Adressbereich für Pods verwendet.
  • SERVICES_IP_RANGE durch einen IP-Adressbereich in der CIDR-Notation. Dieser Bereich ist der sekundäre IP-Adressbereich für Dienste im Subnetzwerk Ihrer Umgebung.

Beispiel:

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
    }

  }
}

Von Nutzern verwaltete Subnetzbereiche

So erstellen Sie nutzerverwaltete Bereiche:

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
    }

  }

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • POD_IP_RANGE_NAME durch den Namen eines vorhandenen sekundären IP-Adressbereichs im angegebenen Subnetzwerk. Dieser Bereich wird von Pods verwendet.
  • SERVICES_IP_RANGE_NAME durch den Namen eines vorhandenen sekundären IP-Adressbereichs im angegebenen Subnetzwerk. Dieser Bereich wird von Diensten verwendet.

Beispiel:

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
    }

  }
}

Nächste Schritte