使用 Terraform 和 Helm 在 EKS 集群上安装 Istio

Swe*_*rma 6 kubernetes terraform kubernetes-helm istio amazon-eks

我是 Terraform 和 Helm 世界的新手!我需要在 AWS EKS 集群上设置 Istio。我正在尝试使用 Terraform 和 Helm 作为提供程序在 EKS 集群之上安装 Istio:以下是相同的 terraform 代码:

resource "kubernetes_namespace" "istio-system" {
  metadata {
    annotations = {
      name = "istio-namespace"
    }

    labels = {
      mylabel = "label-value"
    }

    name = "istio-namespace"
  }
}

resource "helm_release" "istio_base" {
  name       = "istio-base"
  chart      = "./manifests/charts/base"
  namespace  = "istio-system"
}

resource "helm_release" "istiod" {
  name       = "istiod"
  chart      = "./manifests/charts/istio-control/istio-discovery"
  namespace  = "istio-system"
}

resource "helm_release" "istio-ingress" {
  name       = "istio-ingress"
  chart      = "./manifests/charts/gateways/istio-ingress"
  namespace  = "istio-system"
}

resource "helm_release" "istio-egress" {
  name       = "istio-ingress"
  chart      = "./manifests/charts/gateways/istio-egress"
  namespace  = "istio-system"
}


Run Code Online (Sandbox Code Playgroud)

有人可以帮我回答我的几个疑问:

  1. 我是否需要 Istio 和 helm 的服务帐户才能在 EKS 集群上安装 Istio?

  2. 我是否需要创建特定的 IAM 角色才能在 EKS 集群上安装 Istio?

  3. 在 EKS 集群上安装 Istio 需要进行哪些安全检查?

  4. 假设将来我需要更改 helm chart 提供的一些默认值如何更改这些值?假设将内存从 3072Mi 更改为 4000Mi

  5. 如何在 Istio 中使用 helm chart 启用 mTLS?

  6. 使用 helm chart 安装附加组件,例如 Kiali?

Har*_*var 5

是的,您还必须创建 IAM 角色,如果您想为工作人员创建它,您也可以为其创建 IAM。

resource "aws_iam_role" "eksproject-cluster" {
  name = "terraform-eks-eksproject-cluster"

  assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
POLICY
}
Run Code Online (Sandbox Code Playgroud)

https://github.com/prabhatpankaj/eks-terraform-istio

但如果您是 EKS 的管理员,则不需要创建 IAM,您可以直接设置 istio

helm template istio-1.1.4/install/kubernetes/helm/istio --name istio --namespace istio-system  --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true --set kiali.dashboard.secretName=kiali --set kiali.dashboard.usernameKey=username --set kiali.dashboard.passphraseKey=passphrase | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

假设将来我需要更改 helm chart 提供的一些默认值如何更改这些值?假设将内存从 3072Mi 更改为 4000Mi

你可以使用头盔做同样的事情

将值更新为values.yaml并运行命令

helm upragde istio -f values.yaml

如何在 Istio 中使用 helm chart 启用 mTLS?

对于服务之间或命名空间级别的 mTLS,您可能需要配置其他 YAML,或者您编辑图表应用这些新 YAML 作为 helm 的一部分。

spec:
  mtls:
    mode: STRICT
Run Code Online (Sandbox Code Playgroud)

使用舵图安装插件,例如 Kali?

它已经是掌舵的一部分

helm template istio-1.1.4/install/kubernetes/helm/istio --name istio --namespace istio-system  --set grafana.enabled=true --set tracing.enabled=true --set kiali.enabled=true --set kiali.dashboard.secretName=kiali --set kiali.dashboard.usernameKey=username --set kiali.dashboard.passphraseKey=passphrase | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

--set kiali.enabled=true覆盖命令中的默认值。