首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在EKS上使用Istio操作符和Terraform安装Istio

在EKS上使用Istio操作符和Terraform安装Istio
EN

Stack Overflow用户
提问于 2021-04-14 06:10:38
回答 1查看 1.6K关注 0票数 2

我对Terraform很陌生。我需要在AWS EKS集群上设置Istio。我想用Istio操作符和Terraform一起来做同样的事情。

下面是使用Istio操作符在EKS上安装Istio的shell脚本:

install-istio.sh

代码语言:javascript
复制
# Download and install the Istio istioctl client binary

# Specify the Istio version that will be leveraged throughout these instructions
ISTIO_VERSION=1.7.3

curl -sL "https://github.com/istio/istio/releases/download/$ISTIO_VERSION/istioctl-$ISTIO_VERSION-linux-amd64.tar.gz" | tar xz

sudo mv ./istioctl /usr/local/bin/istioctl
sudo chmod +x /usr/local/bin/istioctl

# Install the Istio Operator on EKS
istioctl operator init

# The Istio Operator is installed into the istio-operator namespace. Query the namespace.
kubectl get all -n istio-operator

# Install Istio components
istioctl profile dump default

# Create the istio-system namespace and deploy the Istio Operator Spec to that namespace.
kubectl create ns istio-system
kubectl apply -f istio-operator.yaml

# Validate the Istio installation
kubectl get all -n istio-system

下面是install-istio.sh使用的istio-operator.yaml文件

代码语言:javascript
复制
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-control-plane
spec:
  # Use the default profile as the base
  # More details at: https://istio.io/docs/setup/additional-setup/config-profiles/
  profile: default
  # Enable the addons that we will want to use
  addonComponents:
    grafana:
      enabled: true
    prometheus:
      enabled: true
    tracing:
      enabled: true
    kiali:
      enabled: true
  values:
    global:
      # Ensure that the Istio pods are only scheduled to run on Linux nodes
      defaultNodeSelector:
        beta.kubernetes.io/os: linux
    kiali:
      dashboard:
        auth:
          strategy: anonymous

下面是执行脚本的main.tf文件

代码语言:javascript
复制
resource "null_resource" "install_istio" {

 provisioner "local-exec" {

    command = "/bin/bash install-istio.sh"
  }
}

我请求你帮我解决几个问题:

  1. 如何利用上面的脚本以及Terraform在EKS集群上安装Istio。在上面的脚本中,我需要包含的地形部分是什么?

  1. ,脚本中是否有遗漏的部分。我会遇到使用上述脚本更新Istio的任何问题吗?
  2. ,我需要包括哪些其他参数,以便脚本可以在EKS集群上安装Istio?
  3. ,如何使用上面的脚本创建Terraform模块?

非常感谢你抽出时间。感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-15 13:27:03

我相信你会遇到问题,如果使用这样的本地-exec供应程序。

Terraform并不善用它无法调和的资源。尤其是在CRD方面。而且,每次运行terraform apply时,您都会一次又一次地运行istioctl init,这可能不是您想要的。

你能做的就是

  1. 使用

将istio运算符转换为标准kubernetes清单。

代码语言:javascript
复制
mkdir -p istio-operator
istio-operator dump > istio-operator/manifests.yaml

  1. 使用

创建istio-operator/kustomization.yaml文件

代码语言:javascript
复制
#istio-operator/kustomization.yaml

resources:
- manifests.yaml

  1. 安装terraform kustomization provider

代码语言:javascript
复制
# terraform.tf

terraform {
  required_providers {
    kustomization = {
      source  = "kbst/kustomization"
      version = "0.4.3"
    }
  }
}

provider "kustomization" {
  // See online documentation on how to configure this
}

  1. 安装istio-operator与terraform kustomization provider

代码语言:javascript
复制
# istio-operator.tf

data "kustomization" "istio_operator" {
  path     = "./istio-operator"
}

resource "kustomization_resource" "istio_operator" {
  for_each = data.kustomization.istio_operator.ids
  manifest = data.kustomization.istio_operator.manifests[each.value]
}

istio/manifest.yaml

  1. 创建IstioOperator清单

代码语言:javascript
复制
# istio/manifest.yaml

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  name: istio-control-plane
...

  1. 使用

创建istio/kustomization.yaml

代码语言:javascript
复制
# istio/kustomization.yaml

resources:
- manifest.yaml

  1. 使用terraform.

使用第二个kustomization资源安装IstioOperator

代码语言:javascript
复制
# istio.tf

data "kustomization" "istio" {
  path     = "./istio"
}

resource "kustomization_resource" "istio" {
  for_each = data.kustomization.istio.ids
  manifest = data.kustomization.istio.manifests[each.value]
  depends_on = [kustomization_resource.istio_operator]
}

我建议把这整件事放在一个单独的文件夹中,比如

代码语言:javascript
复制
/home
  /project
    /terraform
      /istio
        terraform.tf
        istio_operator.tf
        istio.tf
        /istio
          kustomization.yaml
          manifest.yaml
        /istio-operator
          kustomization.yaml
          manifest.yaml
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67086365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档