如何在 helm 图表中检测 kubernetes 集群提供程序(eks、aks)?

问题描述 投票:0回答:2

我想编写一个通用的 helm 图表,该图表可以在 kubernetes 平台的所有提供商(Azure aks、AWS eks)上使用。我至少需要处理一个差异 - AWS eks 不支持将 sessionAffinity 作为服务规范的一部分。

(自动)检测 kubernetes 平台以便处理此类差异的最佳方法是什么?我总是可以要求用户提供该信息作为输入,但我想避免这种情况。

kubernetes google-kubernetes-engine azure-aks amazon-eks kubernetes-helm
2个回答
1
投票

对于 EKS,您可以使用 Helm 功能,因为 EKS 似乎将

-eks
附加到 Kubernetes 集群的 GitVersion。

您可以使用

kubectl version
看到这一点。

Helm 中记录了如何读取 GitVersion 值:

https://helm.sh/docs/chart_template_guide/builtin_objects/

您的模板代码应如下所示:

{{- if (.Capabilities.KubeVersion.GitVersion | contains "-eks") }}
       
( specific EKS lines here )     

{{- end }}

GKE 也是如此:

{{- if (.Capabilities.KubeVersion.GitVersion | contains "-gke") }}
       
( specific GKE lines here )     

{{- end }}

对于 AKS,您不能执行此操作,因为

kubectl version
返回
GitVersion
,即标准 SemVer 版本,例如:
v1.25.2


0
投票

根据 Kubernetes 上的云提供商文档,“树内云提供商通常需要在命令行中为 kube-apiserver、kube-controller-manager 和 kube-controller-manager 指定 --cloud-provider 和 --cloud-config kubelet”。因此,如果您可以查询这些值,您就可以实现您想要的。

© www.soinside.com 2019 - 2024. All rights reserved.