GCP GKE не может получить доступ к Redis Memorystore - PullRequest
1 голос
/ 07 мая 2020

У меня есть кластер Kubernetes в GCP (GKE), который не может подключиться к Memorystore (Redis).

Все ресурсы, связанные с проектом, находятся в выделенной сети.

сетевой модуль:

resource "google_compute_network" "my_project" {
  name = "my_project"
  auto_create_subnetworks = true
}

output "my_project_network_self_link" {
  value = google_compute_network.my_project_network.self_link
}

Я использую сеть в кластере GKE (network = "${var.network_link}"):

resource "google_container_cluster" "my_project" {
  name     = "my_project-cluster"
  location = "us-central1"
  node_locations = ["us-central1-a", "us-central1-b"]

  network = "${var.network_link}"

  # We can't create a cluster with no node pool defined, but we want to only use
  # separately managed node pools. So we create the smallest possible default
  # node pool and immediately delete it.
  remove_default_node_pool = true
  initial_node_count       = 1

  master_auth {
    username = ""
    password = ""

    client_certificate_config {
      issue_client_certificate = false
    }
  }
}

Пулы узлов опущены.

и я установил сеть как authorized_network в конфигурации хранилища памяти:

resource "google_redis_instance" "cache" {
  name           = "my_project-redis"
  tier           = "STANDARD_HA"
  memory_size_gb = 1
  authorized_network = "${var.network_link}"

  # location_id             = "us-central1-a"

  redis_version     = "REDIS_4_0"
  display_name      = "my_project Redis cache"
}

variable "network_link" {
  description = "The link of the network instance is in"
  type        = string
}

Я предполагаю, что проблема связана с сетью, потому что ранее при использовании сети по умолчанию это работало нормально.

В настоящее время узлы GKE находятся в us-central1-a и us-central1-b (указано в сценарии TF), а хранилище памяти находится в us-central1-c. Таким образом, кластер и Redis находятся в одном VP C, но в разных подсетях. Не в этом ли проблема?

1 Ответ

1 голос
/ 08 мая 2020

Мне пришлось добавить следующий раздел в модуль кластера в терраформе:

  ip_allocation_policy {
    cluster_ipv4_cidr_block = ""
    services_ipv4_cidr_block = ""
  }

Кажется, это активирует свойство VPC-native (alias IP) кластера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...