首页 > 解决方案 > 在 AWS 上部署 Terraform Kubernestes 集群

问题描述

我有以下用于 AWS 上的 Kubernestes 集群部署的 Terraform 脚本。部署后,所有资源都在 AWS 上看到,包括 EKS,但没有看到 nginx、varnish、percona 的 kubernetes_deployment。我一直在调试问题,但找不到解决方案。

provider "kubernetes" {
  load_config_file       = "false"
  host                   = data.aws_eks_cluster.cluster.endpoint
  token                  = data.aws_eks_cluster_auth.cluster.token
  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
}



resource "kubernetes_deployment" "nginx" {
  metadata {
    name = "scalable-nginx"
    labels = {
      App = "ScalableNginx"
    }
  }

  spec {
    replicas = 4
    selector {
      match_labels = {
        App = "ScalableNginx"
      }
    }
    template {
      metadata {
        labels = {
          App = "ScalableNginx"
        }
      }
      spec {
        container {
          image = "markoshust/magento-nginx:1.18-2"
          name  = "magento-nginx"

          port {
            container_port = 81
          }

          resources {
            limits {
              cpu    = "0.5"
              memory = "512Mi"
            }
            requests {
              cpu    = "250m"
              memory = "50Mi"
            }
          }
        }
      }
    }
  }
}

resource "kubernetes_service" "nginx" {
  metadata {
    name = "nginx"
  }
  spec {
    selector = {
      App = kubernetes_deployment.nginx.spec.0.template.0.metadata[0].labels.App
    }
    port {
      node_port   = 30201
      port        = 81
      target_port = 81
    }

    type = "NodePort"
  }
}




resource "kubernetes_deployment" "magento2-php" {
  metadata {
    name = "scalable-magento2-php"
    labels = {
      App = "Scalablemagento2-php"
    }
  }

  spec {
    replicas = 4
    selector {
      match_labels = {
        App = "Scalablemagento2-php"
      }
    }
    template {
      metadata {
        labels = {
          App = "Scalablemagento2-php"
        }
      }
      spec {
        container {
          image = "markoshust/magento-php:7.4-fpm-0"
          name  = "magento2-php"

          port {
            container_port = 80
          }

          resources {
            limits {
              cpu    = "0.5"
              memory = "512Mi"
            }
            requests {
              cpu    = "250m"
              memory = "50Mi"
            }
          }
        }
      }
    }
  }
}

resource "kubernetes_service" "magento2-php" {
  metadata {
    name = "magento2-php"
  }
  spec {
    selector = {
      App = kubernetes_deployment.nginx.spec.0.template.0.metadata[0].labels.App
    }
    port {
      node_port   = 30201
      port        = 80
      target_port = 80
    }

    type = "NodePort"
  }
}



resource "kubernetes_deployment" "redis" {
  metadata {
    name = "scalable-redis"
    labels = {
      App = "Scalableredis"
    }
  }

  spec {
    replicas = 4
    selector {
      match_labels = {
        App = "Scalableredis"
      }
    }
    template {
      metadata {
        labels = {
          App = "Scalableredis"
        }
      }
      spec {
        container {
          image = "redis"
          name  = "redis"

          port {
            container_port = 80
          }

          resources {
            limits {
              cpu    = "0.5"
              memory = "512Mi"
            }
            requests {
              cpu    = "250m"
              memory = "50Mi"
            }
          }
        }
      }
    }
  }
}

resource "kubernetes_service" "redis" {
  metadata {
    name = "redis"
  }
  spec {
    selector = {
      App = kubernetes_deployment.nginx.spec.0.template.0.metadata[0].labels.App
    }
    port {
      node_port   = 30201
      port        = 80
      target_port = 80
    }

    type = "NodePort"
  }
}



resource "kubernetes_deployment" "varnish" {
  metadata {
    name = "scalable-varnish"
    labels = {
      App = "Scalablevarnish"
    }
  }

  spec {
    replicas = 4
    selector {
      match_labels = {
        App = "Scalablevarnish"
      }
    }
    template {
      metadata {
        labels = {
          App = "Scalablevarnish"
        }
      }
      spec {
        container {
          image = "varnish"
          name  = "varnish"

          port {
            container_port = 80
          }

          resources {
            limits {
              cpu    = "0.5"
              memory = "512Mi"
            }
            requests {
              cpu    = "250m"
              memory = "50Mi"
            }
          }
        }
      }
    }
  }
}

resource "kubernetes_service" "varnish" {
  metadata {
    name = "redis"
  }
  spec {
    selector = {
      App = kubernetes_deployment.nginx.spec.0.template.0.metadata[0].labels.App
    }
    port {
      node_port   = 30201
      port        = 80
      target_port = 80
    }

    type = "NodePort"
  }
}




resource "kubernetes_deployment" "mysqlpercona" {
  metadata {
    name = "scalable-mysqlpercona"
    labels = {
      App = "Scalablemysqlpercona"
    }
  }

  spec {
    replicas = 4
    selector {
      match_labels = {
        App = "Scalablemysqlperconah"
      }
    }
    template {
      metadata {
        labels = {
          App = "Scalablemysqlpercona"
        }
      }
      spec {
        container {
          image = "percona"
          name  = "percona"

          port {
            container_port = 3306
          }

          resources {
            limits {
              cpu    = "0.5"
              memory = "512Mi"
            }
            requests {
              cpu    = "250m"
              memory = "50Mi"
            }
          }
        }
      }
    }
  }
}

resource "kubernetes_service" "mysqlpercona" {
  metadata {
    name = "redis"
  }
  spec {
    selector = {
      App = kubernetes_deployment.nginx.spec.0.template.0.metadata[0].labels.App
    }
    port {
      node_port   = 30201
      port        = 3306
      target_port = 3306
    }

    type = "NodePort"
  }
}
    

脚本未部署,我可以在 AWS CLUSTER 中找到该图像。真的需要社区帮助来解决这个问题。谢谢。

标签: amazon-web-servicesdeploymentterraform

解决方案


推荐阅读