我正在尝试在Kubernetes AWS中设置ALB负载均衡器而不是默认的ELB负载均衡器。该负载均衡器必须连接到istio Ingressgateway。我在寻找解决方案,但仅找到one。 但是提到的istio版本是V1,现在istio发生了很多更改。我试图将服务类型更改为图表中的nodeport(根据博客),但是该服务还是作为Loadbalancer提供的。
有人可以提及为istio Ingressgateway配置ALB的步骤吗?
感谢阅读
答案 0 :(得分:5)
第1步:将istioingresssgateway服务类型更改为nodeport
第2步:安装ALB入口控制器
第3步:为istioingressgateway编写ingress.yaml,如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: istio-system
name: ingress
labels:
app: ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/subnets: <subnet1>,<subnet2>
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: istio-ingressgateway
servicePort: 80
如果用:p标记vpc的子网,则可以避免alb.ingress.kubernetes.io/subnets批注。
kubernetes.io/cluster/:拥有
kubernetes.io/role/internal-elb:1(用于内部ELB)
kubernetes.io/role/elb:1(用于外部ELB)
否则,您可以提供两个子网值,并且每个子网应位于上述yaml中的不同可用区域中
它在Istio 1.6中起作用
答案 1 :(得分:3)
当前接受的答案是正确的。但是,我想对其进行一些更新。 安装并配置好 AWS alb 控制器后,需要执行几个步骤才能使其工作并可用:
ProductID Name SerialNo
-------------------------------------
P1001 NOKIA 1001
命令生成清单列表istioctl manifest generate
服务配置istio-ingressgateway
NodePortstatus-port
命令安装/更新 istio。在某些情况下,尽管依赖 istio helm 安装可能会更好istioctl install
答案 2 :(得分:0)
我可以通过tibin_tomy在Istio 1.7.4上为我工作的解决方案来确认解决方案。另外,我在第1步中使用了ClusterIP而不是NodePort。
第一步-将istioingresssgateway服务类型更改为ClusterIP(使用IstioOperator安装Istio):
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
namespace: istio-system
name: istio
spec:
profile: default
components:
ingressGateways:
- name: istio-ingressgateway
k8s:
service:
type: ClusterIP # Disable classic load balancer creation (default), routing to here will be done via Kubernetes Ingress resource
注意:在与istio-ingressgateway相同的名称空间中部署“ Ingress”(默认为istio-system)。 例如,如果istio-ingressgateway在命名空间istio-system中,而Ingress在命名空间系统中,则aws-alb-ingress-controller错误出现:
“ kubebuilder / controller” msg“ =”协调器错误“” error“ =”失败 由于无法加载serviceAnAnnotation而协调targetGroups 本地存储中没有与键“ system / istio-ingressgateway”匹配的对象” “控制器” =“ alb-ingress-controller” “ request” = {“命名空间”:“系统”,“名称”:“奏鸣曲”}“