aws EKS fargate 安装aws load balance controller

AWS Load Balancer Controller

0x00 目标

接前篇:  https://www.jianshu.com/p/3e5de636fee8
当我们有一个集群后,首先要做的就是安装一个 ingress controller,
这里采用官方推荐的 aws load balance contrller
参考:  https://aws.amazon.com/cn/premiumsupport/knowledge-center/eks-alb-ingress-controller-fargate/

0x01 前置条件

.aws/config 默认区域选定us-west-2  (看自己实际情况进行选择
.kube/config  默认的 k8s集群为目标集群 ( 多集群情况下, 可能会串掉, 特别注意 

0x02 安装过程


export CLUSTER=集群名称
export ACCOUNT=aws账号12位数字
export VPCID=vpc-xxxx
export REGION=us-west-2

# 安装集群访问控制策略
eksctl utils associate-iam-oidc-provider --cluster $CLUSTER --approve

curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/install/iam_policy.json

aws iam create-policy --policy-name AWSLoadBalancerControllerIAMPolicy --policy-document file://iam_policy.json

eksctl create iamserviceaccount \
--cluster=$CLUSTER \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=arn:aws:iam::$ACCOUNT:policy/AWSLoadBalancerControllerIAMPolicy \
--override-existing-serviceaccounts \
--approve

# 安装 controller
kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller//crds?ref=master"

helm repo add eks https://aws.github.io/eks-charts

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
--set clusterName=$CLUSTER \
--set serviceAccount.create=false \
--set region=$REGION \
--set vpcId=$VPCID \
--set serviceAccount.name=aws-load-balancer-controller \
-n kube-system

0x03 确认

kubectl get po -A -o wide
# 看到下图状态, 表示安装成功
安装完成

0x04 关于多端口Ingress

除了一般的 80, 443 端口对外提供服务以外, 我们还可能用到 nacos之类的 特殊端口,
应该如何处理呢?
重点是 下面两个参数:
alb.ingress.kubernetes.io/group.name: sit
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
不同的ingress yml, 只要配置相同的 group name, 和不同的 监听端口, 就可以实现上述功能.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-80
  namespace: sit
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/target-type: ip

    # 指定 ALB Listener 的端口,默认为80
    # 参考链接:https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/annotations/#traffic-listening
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'

    # 指定IngressGroup。使用相同IngressGroup的Ingress会被合并到同一个ALB
    # 参考链接:https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/annotations/#ingressgroup
    alb.ingress.kubernetes.io/group.name: sit

spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: nginx
              servicePort: 80

完~

你可能感兴趣的:(aws EKS fargate 安装aws load balance controller)