Как настроить средство автомасштабирования AWS EKS с Terraform?

Я использую поставщика AWS EKS (github.com/terraform-aws-modules/terraform-aws-eks). Я следую руководству по https://learn.hashicorp.com/terraform/aws/eks-intro

Однако, похоже, что автоматическое масштабирование не включено ... Кажется, отсутствует cluster-autoscaler pod / daemon?

Может ли Terraform предоставить эту функцию? Или мне нужно настроить это, следуя руководству, например: https://eksworkshop.com/scaling/deploy_ca/ < / а>


person Chris Stryczynski    schedule 13.09.2019    source источник
comment
Я настоятельно рекомендую использовать это: github.com/terraform-aws-modules/terraform- aws-eks   -  person Matt Schuchard    schedule 13.09.2019
comment
Это то, что я использую (то, что используется в учебнике)   -  person Chris Stryczynski    schedule 13.09.2019


Ответы (2)


Вы можете развернуть ресурсы Kubernetes с помощью Terraform. Есть как провайдер Kubernetes, так и провайдер Helm.

data "aws_eks_cluster_auth" "authentication" {
  name = "${var.cluster_id}"
}

provider "kubernetes" {
  # Use the token generated by AWS iam authenticator to connect as the provider does not support exec auth
  # see: https://github.com/terraform-providers/terraform-provider-kubernetes/issues/161
  host = "${var.cluster_endpoint}"

  cluster_ca_certificate = "${base64decode(var.cluster_certificate_authority_data)}"
  token                  = "${data.aws_eks_cluster_auth.authentication.token}"
  load_config_file       = false
}

provider "helm" {
  install_tiller  = "true"
  tiller_image    = "gcr.io/kubernetes-helm/tiller:v2.12.3"
}

resource "helm_release" "cluster_autoscaler" {
  name       = "cluster-autoscaler"
  repository = "stable"
  chart      = "cluster-autoscaler"
  namespace  = "kube-system"
  version    = "0.12.2"

  set {
    name  = "autoDiscovery.enabled"
    value = "true"
  }

  set {
    name  = "autoDiscovery.clusterName"
    value = "${var.cluster_name}"
  }

  set {
    name  = "cloudProvider"
    value = "aws"
  }

  set {
    name  = "awsRegion"
    value = "${data.aws_region.current_region.name}"
  }

  set {
    name  = "rbac.create"
    value = "true"
  }

  set {
    name  = "sslCertPath"
    value = "/etc/ssl/certs/ca-bundle.crt"
  }
}

person Blokje5    schedule 13.09.2019
comment
Честно говоря, кажется странным, что этого не было в учебнике. Я попробую! - person Chris Stryczynski; 13.09.2019
comment
Учебники hashicorp в основном сосредоточены на развертывании EKS, а не конкретно на получении полностью запущенного и работающего кластера kubernetes. Сервер метрик все еще находится в стадии инкубации в проекте kubernetes. - person Blokje5; 13.09.2019
comment
По какой-то странной причине он дает мне эту ошибку: `` * helm_release.cluster_autoscaler: error installation: Post ABB06A6EE62F55C039BB284DD4BB2DB3.gr7.us-west-2.eks.amazonaws.co: наберите tcp: lookup ABB06A6EE62F284D039. 2.eks.amazonaws.com: нет такого хоста `` Но я вообще не узнаю эту конечную точку? Его тоже нет в файле tfstate. - person Chris Stryczynski; 19.09.2019
comment
Произошла ошибка helm_release.cluster_autoscaler: context deadline exceeded ... Не уверен, связана ли она с github. com / terraform-provider / terraform-provider-helm / issues / - person Chris Stryczynski; 19.09.2019
comment
Хм, раньше не сталкивался с этой проблемой. - person Blokje5; 19.09.2019

Этот ответ ниже все еще не завершен ... Но, по крайней мере, он частично помогает мне ...

1.

kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
helm install stable/cluster-autoscaler --name my-release --set "autoscalingGroups[0].name=demo,autoscalingGroups[0].maxSize=10,autoscalingGroups[0].minSize=1" --set rbac.create=true

А затем вручную исправить путь к сертификату:

kubectl edit deployments my-release-aws-cluster-autoscaler 

замените следующее:

path: /etc/ssl/certs/ca-bundle.crt

С участием

path: /etc/ssl/certs/ca-certificates.crt

2.

В консоли AWS назначьте политику AdministratorAccess роли terraform-eks-demo-node.

3.

Обновите параметр nodes на (kubectl edit deployments my-release-aws-cluster-autoscaler)

        - --nodes=1:10:terraform-eks-demo20190922124246790200000007

person Chris Stryczynski    schedule 22.09.2019