Terraform 部署 EKS 集群时 ALB 未创建的解决方案

50次阅读
没有评论

问题描述

在使用 Terraform 部署 EKS 集群时,遇到了 ALB(Application Load Balancer)未被创建的问题。尽管已经成功运行了 terraform apply 命令,并且配置的 Pods、Deployments 和 Services 也都已经创建成功,但在 EC2 负载均衡器(ALB)列表中却没有看到 ALB 的存在。用户猜测这可能与权限问题有关,但已经在 IAM 策略中提供了相应的权限。

解决方案

以下是解决此问题的步骤,具体的操作指导已经按照 Markdown 格式进行了编写。

注意:如果存在版本差异或者操作可能带来风险,请在执行步骤前仔细阅读并备份相关配置。

问题定位与分析

  1. 首先,确认 Terraform 代码和配置是否正确,确保所需的资源已经成功创建。
  2. 接着,检查是否存在与 ALB 创建相关的权限问题。

检查 IAM 策略

  1. 打开 terraform/k8s/resources/node-ingress-policy.json 文件,确认策略是否包含 acm:ListCertificates 权限。
  2. 确保这个策略已经成功附加到了正确的 IAM 角色。

检查错误日志

  1. 执行以下命令,查看 ALB 控制器的错误日志:

bash
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller

  1. 根据日志中的错误信息,找到对应的权限问题。

解决权限问题

根据日志中的错误信息,你的 IAM 角色似乎缺少了 acm:ListCertificates 权限。下面是如何解决这个问题的步骤:

  1. 打开 ./terraform/k8s/resources/node-ingress-policy.json 文件,确保其中包含 acm:ListCertificates 权限。
  2. 如果已经在策略文件中提供了此权限,检查是否已经成功附加了这个策略到 IAM 角色。
  3. 如果仍然存在问题,可以尝试执行以下步骤来修复权限问题。

修复权限问题

  1. 打开 AWS 控制台,导航到 IAM 服务。
  2. 找到你的 IAM 角色 alb-controller-role
  3. 确保策略 alb-controller-policy 被正确附加。
  4. 如果策略已正确附加但问题仍然存在,可以尝试移除策略并重新附加,确保正确的权限生效。

检查 OpenID Connect 配置

  1. 确保 OpenID Connect 配置中的 URL 和 ARN 是否正确。
  2. 检查是否有其他配置出错导致 OpenID Connect 无法正常工作。

重新部署 ALB 控制器

  1. 如果上述步骤都没有解决问题,可以尝试重新部署 ALB 控制器。
  2. 使用适当的命令重新部署 ALB 控制器相关的 Kubernetes 资源。

结论

通过仔细检查 IAM 策略、错误日志和权限配置,你应该能够定位并解决 ALB 未创建的问题。确保 IAM 角色具有正确的权限,并确保相关配置正确,这样应该能够让 ALB 成功被创建并运行。

注意:在执行任何操作前,请务必备份你的配置,以免意外情况导致数据丢失。

希望以上解决方案能够帮助你解决 ALB 未创建的问题。如果你仍然遇到困难,可以进一步检查和调试相关配置和日志,以确保每个步骤都正确执行。

正文完