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

Install Istio on EKS cluster using Terraform and Helm

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

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"
}


谁能帮我解答几个问题:

  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?

是的,如果您想为工作人员创建 IAM 角色,您也必须创建 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
}

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 -

Let's say in the future I need to change some default value provided by helm chart How can I change those values? Let's say changing memory from 3072Mi to 4000Mi

你也可以使用头盔

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

helm upragde istio -f values.yaml

How can I enable mTLS using helm chart in Istio?

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

spec:
  mtls:
    mode: STRICT

Installing add-on for example Kali using helm chart?

它已经是 helm 的一部分

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 -

--设置kiali.enabled=true覆盖命令中的默认值