从已弃用的 AmazonIngress Controller 迁移应用程序 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

从已弃用的 AmazonIngress Controller 迁移应用程序

本主题介绍如何从已弃用的控制器版本迁移。更具体地说,它描述了如何移除 Amazon Load Balancer Controller 的已弃用版本。

  • 已弃用的版本无法升级。必须先将其移除,然后再安装当前版本。

  • 已弃用的版本包括:

    • Kubernetes 的 Amazon ALB 入口控制器(“入口控制器”),是 Amazon Load Balancer Controller 的前身。

    • Amazon Load Balancer Controller 的任何 0.1.x 版本控制

移除已弃用的控制器版本

注意

您可能已经使用 Helm 安装了已弃用的版本,或者使用 Kubernetes 清单手动安装了该版本。使用原来安装它的工具完成该过程。

使用 Helm 移除入口控制器
  1. 如果您安装了 incubator/aws-alb-ingress-controller Helm 图表,请将其卸载。

    $ helm delete aws-alb-ingress-controller -n kube-system
  2. 如果安装了 eks-charts/aws-load-balancer-controller 图表的 0.1.x 版本,请将其卸载。由于与 Webhook API 版本不兼容,从 0.1.x 升级到版本 1.0.0 不起作用。

    $ helm delete aws-load-balancer-controller -n kube-system
使用 Kubernetes 清单移除入口控制器
  1. 检查当前是否安装了该控制器。

    $ kubectl get deployment -n kube-system alb-ingress-controller

    这是未安装控制器情况下的输出。

    服务器错误(未找到):未找到 deployments.apps “alb-ingress-controller”

    这是安装了控制器情况下的输出。

    NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
  2. 输入以下命令以删除控制器。

    $ kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml

迁移到 Amazon Load Balancer Controller

要从 Kubernetes 的 ALB 入口控制器迁移到 Amazon Load Balancer Controller,您需要:

  1. 移除 ALB 入口控制器(请参阅上述内容)。

  2. 安装 Amazon Load Balancer Controller。

  3. 向 Amazon Load Balancer Controller 使用的 IAM 角色添加其他策略。此策略允许 LBC 管理由 Kubernetes 的 ALB 入口控制器创建的资源。

将迁移策略添加到 Amazon Load Balancer Controller IAM 角色。
  1. 下载该 IAM 策略。此策略允许 Amazon Load Balancer Controller 管理由 Kubernetes 的 ALB Ingress Controller 创建的资源。您还可以查看策略

    $ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_v1_to_v2_additional.json
  2. 将文件中的 arn:aws: 替换为 arn:aws:

    $ sed -i.bak -e 's|arn:aws:|arn:aws:|' iam_policy_v1_to_v2_additional.json
  3. 创建 IAM 策略并记下返回的 ARN。

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \ --policy-document file://iam_policy_v1_to_v2_additional.json
  4. 将 IAM 策略附加到 Amazon Load Balancer Controller 使用的 IAM 角色。将 your-role-name 替换为角色的名称,例如 AmazonEKSLoadBalancerControllerRole

    如果您使用 eksctl 创建该角色,请找到已创建的角色名称,打开 Amazon CloudFormation 控制台并选择 eksctl-my-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller 堆栈。选择资源选项卡。角色名称位于 Physical ID(物理 ID)列。

    $ aws iam attach-role-policy \ --role-name your-role-name \ --policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy