关于AWS负载均衡器控制器v2.3.0中引入的优化安全组规则的功能
我将介绍AWS负载均衡器控制器v2.3.0中引入的”optimized security group rules”功能。
直译过来就是”最优化的安全组规则”。
这是什么东西?虽然有点奇怪,但是当将自己创建的安全组分配给ALB时,过去必须另外管理允许来自ALB的入站流量到集群安全组的权限。然而,通过引入这个功能,控制器将自动进行管理。
太长没看
如果先写结论的话,如下所示。
前提 – 必要条件
-
- v2.3.0+
Kubernetes 1.16+ (v2.3.0時点)
cert-manager v1.5.3+ (v2.3.0時点)
最新バージョンは下記参照
https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases
设置步骤
在Ingress的注释中进行以下设置。
metadata:
annotations:
alb.ingress.kubernetes.io/security-groups: sg-xxxx, nameOfSg1, nameOfSg2
alb.ingress.kubernetes.io/manage-backend-security-group-rules: "true"
参考:https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/ingress/annotations/#security-groups
请为我在中国做原生语言的释义:
ref. https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/ingress/annotations/#security-groups
请提供一个选项。
到目前为止
默认情况下,ALB会由控制器自动生成并自动添加允许来自ALB的入站流量的设置到集群安全组中。然而,如果您希望将自定义的安全组分配给ALB,在v2.3.0之前的版本中,您可以使用`alb.ingress.kubernetes.io/security-groups`注解来设置您自己的安全组,但是您还需要单独管理允许来自ALB的入站流量的设置到集群安全组中。
v2.3.0有哪些变化?
由于引入了优化的安全组规则,现在我们可以将独立的SG分配给ALB,同时控制器也会自动管理允许来自ALB的入站流量的集群SG。
发布说明:https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/tag/v2.3.0
功能问题:https://github.com/kubernetes-sigs/aws-load-balancer-controller/issues/2118
具體的更改項目 de
ALB上的SG现在有两种。
-
- フロントエンドSG
インバウンドルールを管理するもの
ALBごとに付与されるSG
デフォルトでは自動生成
独自SGはingressのannotationsで設定することができる
バックエンドSG (New!)
アウトバウンドルールを管理するもの
クラスタ内のALB共通のSG
デフォルトでは自動生成
现在,即使将独立的SG分配给ALB,集群SG也会自动管理来自ALB的入站流量许可。
虽然我在之前的描述中提到了独立的前端SG,但严格来说,即使设置了独立的前端SG,控制器也会自动将后端SG应用到集群SG的入站规则中,因此不需要单独管理后端SG。
这个功能的根本目的是为了避免随着ALB的增加,集群的SG规则也增加,并且受到配额限制。过去,为集群SG分配从ALB发出的入站流量规则是按照ALB的数量设置的每个SG(之后成为前端SG)。现在,我们改为为后端SG分配共同的SG,这样即使ALB增加,SG规则也只需要一个,不再需要担心配额限制的问题。
设置方式
我們將記述如何進行設定。
前提 tí)
由于这是从v2.3.0版本开始的功能,所以需要使用v2.3.0或更高版本。
截至目前(2022/08/03),v2.4.2是最新版本,因此在此之前的条件已被记录。
请参考以下发布说明获取最新版本。
ref. https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases
-
- v2.3.0
Kubernetes 1.16+
cert-manager v1.5.3+
v2.4.2
Kubernetes 1.19+
设定
在 ingress 的注释中设置如下:
metadata:
annotations:
alb.ingress.kubernetes.io/security-groups: sg-xxxx, nameOfSg1, nameOfSg2
alb.ingress.kubernetes.io/manage-backend-security-group-rules: "true"
在alb.ingress.kubernetes.io/security-groups中写入安全组的ID或名称。
将alb.ingress.kubernetes.io/manage-backend-security-group-rules设为true,以便控制器管理后端安全组规则。
请参阅AWS负载均衡器控制器文档以获取更详细信息。
请参考链接https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/ingress/annotations/#security-groups。
升级至v2.3.0以上时需要注意的事项
需注意以下事项, 如要升级至v2.3.0或更高版本,请参阅发布说明。
该版本引入了针对ALB的优化安全组规则。控制器在群集中的多个ALB之间使用共享安全组,以允许访问您的应用程序Pod。因此,在控制器升级时,现有的ALB会得到更新。在重新配置过程中可能存在一个时间窗口,会影响您的客户端流量。我们建议在维护窗口期间升级控制器。
- コントローラのアップグレード時に既存のALBが更新されます。再構成中に、クライアントトラフィックが影響を受ける可能性のある時間枠があります。メンテナンス期間中にコントローラをアップグレードすることをお勧めします。
考虑到上述所述的更改,基于添加ALB的后端SG设置以及更改集群SG的入站规则,可能会影响客户端流量。
总结
我在AWS负载均衡控制器v2.3.0中写了关于优化后安全组规则功能的内容。以前,当为ALB分配了独立的安全组时,我们需要单独管理来自ALB的入站流量在集群的安全组中的许可。然而,通过引入这个功能,控制器现在可以自动为我们进行管理。
如果能对要优化的安全组规则有所帮助,那就太好了。