如何在terraform中创建nginx入口- aks

ie3xauqp  于 2023-10-17  发布在  Nginx
关注(0)|答案(5)|浏览(163)

如何使用terraformazure kubernetes中创建nginx ingress,在此link的前面,我记得看到一些步骤作为所有设置的强制安装,现在它似乎被删除,并且在此link中有一种特定的aks安装方式,我应该重写所有这些来适应terraform,或者有任何其他聪明的方法来安装nginx ingress,从aksterraform

chhqkbe1

chhqkbe11#

您可以尝试使用Terraform的 Helm 提供商。

provider "helm" {
    kubernetes {
        host     = azurerm_kubernetes_cluster.your_cluster.kube_config.0.host
        client_key             = base64decode(azurerm_kubernetes_cluster.your_cluster.kube_config.0.client_key)
        client_certificate     = base64decode(azurerm_kubernetes_cluster.your_cluster.kube_config.0.client_certificate)
        cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.your_cluster.kube_config.0.cluster_ca_certificate)
    }  
}

data "helm_repository" "stable" {
  name = "stable"
  url  = "https://kubernetes-charts.storage.googleapis.com"
}

resource "helm_release" "nginix_ingress" {
    name      = "nginx_ingress"
    repository = data.helm_repository.stable.metadata.0.name
    chart     = "stable/nginx-ingress"
    namespace = "kube-system"
}

如果您的集群已经创建,您还必须使用数据源导入它。helm_release也支持自定义值。Here是链接,如果您需要更多信息。

ovfsdjhp

ovfsdjhp2#

有一个很好的教程Create an Application Gateway ingress controller in Azure Kubernetes Service。你可以在GitHub上查看Application Gateway Ingress Controller
如果您使用的是Terraform版本0.12或更高版本,则可以使用terraform provider kubernetes example
至于Terraform文档,您应该检查Data source kubernetes_ingressResource kubernetes_ingress
如果你提供更多细节,我会更新答案。

oknrviil

oknrviil3#

更新答案

resource "helm_release" "nginix-ingress" {
  name      = "nginix-ingress"    
  repository = "https://charts.bitnami.com/bitnami"    
  chart     = "nginx"
  namespace = "kube-system"
}
kognpnkq

kognpnkq4#

我提供了一种替代方法,在我看来更好,使用Terraform提供Kubernetes服务,如Nginx ingress。
我的基于kustomize的模块比使用基于helm的模块有两个主要好处:
1.修补而不是模板化使得跨新的上游版本更容易维护自定义配置
1.我的kustomization provider与helm提供程序不同,在terraform plan期间显示详细的差异,甚至销毁/重新创建
如果你感兴趣,这里有一个detailed comparison between my kustomize based Nginx ingress Terraform module和一个基于helm的模块。
使用该模块非常简单:

# require and configure provider
terraform {
  required_providers {
    kustomization = {
      source = "kbst/kustomization"
    }
  }
}

provider "kustomization" {
  alias = "example"

  kubeconfig_path = "~/.kube/config"
}
# call module
module "example_nginx" {
  providers = {
    # we're using the alias provider we configured above
    kustomization = kustomization.example
  }

  source  = "kbst.xyz/catalog/nginx/kustomization"
  version = "1.2.1-kbst.0" # find the latest version on https://www.kubestack.com/catalog/nginx

  # the configuration here assumes you're using Terraform's default workspace
  # use `terraform workspace list` to see the workspaces
  configuration_base_key = "default"
  configuration = {
    default = {
      replicas = [{
        name  = "ingress-nginx-controller"
        count = 5
      }]
    }
  }
}

示例模块调用使用kustomize的replicas属性来更改Nginx入口控制器的副本。
模块的(我有他们不仅仅是Nginx)允许定义kustomization作为模块调用的一部分。它们还捆绑了一个上游版本,您可以使用version属性来控制版本。
所有可用的kustomization属性的文档都可以在Kubestack网站上找到。
我将这些模块作为Kubestack, my open-source framework for platform teams working with Terraform and Kubernetes的一部分进行维护。

ct2axkht

ct2axkht5#

我认为使用true添加http_application_routing_enabled应该为您的集群创建nginx ingress。

相关问题