https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.3.1/docs/install/iam_policy_cn.json
https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.3.1/docs/install/iam_policy_v1_to_v2_additional.json
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/name: aws-load-balancer-controller
name: aws-load-balancer-controller
namespace: kube-system
annotations:
eks.amazonaws.com/role-arn: <IAM Roel ARN>
注意:请将上述yaml文件中 字段替换为步骤4中您所创建的IAM Role的ARN
b. 创建ServiceAccount。
kubectl apply -f aws-load-balancer-controller-service-account.yaml
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml --validate=false
b. 下载控制器规范。
curl -Lo v2_4_0_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.4.0/v2_4_0_full.yaml
c. 对步骤7.b中下载下来的v2_4_0_full.yaml文件进行编辑。
(1)删除文件的 ServiceAccount 部分。删除此部分可防止在部署控制器时覆盖带有 IAM 角色的注释,并在删除控制器时保留您在第 3 步中创建的服务账户。
(2)将文件 Deployment spec 部分的 your-cluster-name 替换为您的集群的名称,然后在 --ingress-class=alb 下添加 following parameters。
...
spec:
containers:
- args:
- --cluster-name=your-cluster-name
- --ingress-class=alb
- --enable-shield=false
- --enable-waf=false
- --enable-wafv2=false
...
d. 应用文件。
kubectl apply -f v2_4_0_full.yaml
e. 验证aws elb controller是否安装。
kubectl get deployment -n kube-system aws-load-balancer-controller
apiVersion: v1
kind: Service
metadata:
name: aws-service
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "instance"
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
注意: aws-service应替换为您自定义的Service名称,spec下的参数需要调整为您所要提供服务的端口或Pod标签
b. 验证Service。
kubectl get svc |grep
注意: 输出结果中EXTERNAL-IP所展示的字段信息为NLB DNS字段信息
AWS ELB Controller Annotations扩展:
官网地址:https://kubernetes-sigs.github.io/aws-load-balancer-controller