Ошибка при установке диаграммы управления рулем с помощью поставщика terraform helm `Пользователь" client "не может создать deployments.extensions в пространстве имен" kube-system "` - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь установить helm, используя Helm Provider, используя следующий скрипт terraform

data "google_client_config" "current" {}

provider "helm" {
  tiller_image = "gcr.io/kubernetes-helm/tiller:${var.helm_version}"
  max_history  = 250

  kubernetes {
    host                   = "${google_container_cluster.eu.endpoint}"
    token                  = "${data.google_client_config.current.access_token}"
    client_certificate     = "${base64decode(google_container_cluster.eu.master_auth.0.client_certificate)}"
    client_key             = "${base64decode(google_container_cluster.eu.master_auth.0.client_key)}"
    cluster_ca_certificate = "${base64decode(google_container_cluster.eu.master_auth.0.cluster_ca_certificate)}"
  }
}

resource "helm_release" "mydatabase" {
  name  = "mydatabase"
  chart = "stable/mariadb"

  set {
    name  = "mariadbUser"
    value = "foo"
  }

  set {
    name  = "mariadbPassword"
    value = "qux"
  }
}

но я получаю следующую ошибку

* helm_release.mydatabase: 1 error(s) occurred:

* helm_release.mydatabase: error installing: deployments.extensions is forbidden: User "client" cannot create deployments.extensions in the namespace "kube-system"

Я думаю, что это происходит, когда провайдер terraform helm пытается установить румпель, может кто-нибудь помочь

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Хорошо, вы на правильном пути, но .. здесь я согласен с @hk '.

helm_release.mydatabase: ошибка установки: deployments.extensions is запрещено: пользователь «клиент» не может создавать развертывания. расширения в Пространство имен "kube-system

Вышеуказанная ошибка относится только к авторизации. Многие люди сталкиваются с трудностями при установке и настройке провайдера Helm. Например, github, открытый выпуск . Там есть пара идей, которые могут вам помочь.

Что может работать для вас, описано в этой статье: провайдер руля - Pain . В нем есть решение, которое работает для людей.

Попробуйте следующее:

resource "kubernetes_service_account" "tiller" {
  metadata {
    name      = "tiller"
    namespace = "kube-system"
  }

  automount_service_account_token = true
}

resource "kubernetes_cluster_role_binding" "tiller" {
  metadata {
    name = "tiller"
  }

  role_ref {
    kind      = "ClusterRole"
    name      = "cluster-admin"
    api_group = "rbac.authorization.k8s.io"
  }

  subject {
    kind = "ServiceAccount"
    name = "tiller"

    api_group = ""
    namespace = "kube-system"
  }
}

provider "helm" {
  version = "~> 0.7"

  debug           = true
  install_tiller  = true
  service_account = "${kubernetes_service_account.tiller.metadata.0.name}"
  namespace       = "${kubernetes_service_account.tiller.metadata.0.namespace}"
  tiller_image    = "gcr.io/kubernetes-helm/tiller:v2.11.0"

  kubernetes {
    config_path = "~/.kube/${var.env}"
  }
}

или

resource "kubernetes_service_account" "tiller" {
  metadata {
    name = "tiller"
    namespace = "kube-system"
  }
}
resource "kubernetes_cluster_role_binding" "tiller" {
  metadata {
        name = "tiller"
  }
  subject {
    api_group = "rbac.authorization.k8s.io"
    kind      = "User"
    name      = "system:serviceaccount:kube-system:tiller"
  }

  role_ref {
    api_group = "rbac.authorization.k8s.io"
    kind  = "ClusterRole"
    name = "cluster-admin"
  }
  depends_on = ["kubernetes_service_account.tiller"]
}

provider "helm" {
    tiller_image = "gcr.io/kubernetes-helm/tiller:v2.12.3"
    install_tiller = true
    service_account = "tiller"
    namespace = "kube-system"
}
0 голосов
/ 22 марта 2019

Это вопрос, связанный с ролью и авторизацией.сбросьте helm, используя «helm reset», затем выполните приведенную ниже команду для решения вашей проблемы.

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get> get_helm.sh

chmod 700 get_helm.sh

./get_helm.sh

kubectl create serviceaccount --namespace kube-system tiller

kubectl create clusterrolebinding tiller-cluster-rule --clusterrole = cluster-admin --serviceaccount = kube-system:tiller

helm init

развертывание патча kubectl - пространство имен kube-system tiller-deploy -p '{"spec": {"template": {"spec": {"serviceAccount":"земледелец"}}}} '

...