Terraform - Как создать кластер GKE и установить схемы руля? - PullRequest
1 голос
/ 28 марта 2020

Цель

У меня есть определенный c рабочий процесс для настройки кластера fre sh Kubernetes в Google Cloud. И я хочу автоматизировать процесс с помощью Terraform. Это следующие шаги:

  1. Создание кластера
    gcloud beta container --project "my-google-project" clusters create "cluster-name" --zone "europe-west3-b"
    
  2. Установки репозитория Helm
    helm repo add stable https://kubernetes-charts.storage.googleapis.com/
    helm repo add jetstack https://charts.jetstack.io/
    helm repo update
    
  3. Установка NGINX Вход
    kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user $(gcloud config get-value account)
    helm install nginx-ingress stable/nginx-ingress
    
  4. Установите Cert-Manager
    kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/v0.13.0/deploy/manifests/00-crds.yaml
    kubectl create namespace cert-manager
    helm install cert-manager jetstack/cert-manager --namespace cert-manager
    

Идеи

Первый шаг, вероятно, будет выглядеть так:

resource "google_container_cluster" "primary" {
  name               = "cluster-name"
  location           = "europe-west3-b"
  initial_node_count = 3

  master_auth {
    username = ""
    password = ""

    client_certificate_config {
      issue_client_certificate = false
    }
  }

  node_config {
    oauth_scopes = [
      "https://www.googleapis.com/auth/logging.write",
      "https://www.googleapis.com/auth/monitoring",
    ]

    metadata = {
      disable-legacy-endpoints = "true"
    }
  }
}

Но я понятия не имею, как подойти шаги 2 - 4.

1 Ответ

2 голосов
/ 28 марта 2020

Хотя Terraform имеет смысл для создания и предоставления облачной инфраструктуры для таких вещей, как Kubernetes, не обязательно имеет смысл использовать ее для настройки инфраструктуры после развертывания. Я думаю, что в большинстве проектов инфраструктуры приложения, развернутые на подготовленном кластере, будут рассматриваться как конфигурации для указанного кластера. Семантика здесь, конечно, немного нюансирована, но я утверждаю, что такой инструмент, как Ansible, лучше подходит для развертывания приложений в кластере после инициализации.

Поэтому мой совет - определить несколько Ansible ролей. , Возможно:

create_cluster
deploy_helm
install_nginx_ingress
install_cert_manager

В каждой соответствующей роли определите задачи и переменные, которые должны использоваться согласно схеме Galaxy . Наконец, определите Playbook , который Ansible использует для include или import этих ролей. Это позволит вам подготовить инфраструктуру и развернуть все необходимые приложения в ней одной командой:

ansible-playbook playbook.yml

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