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

ycl3bljg  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(2)|浏览(109)

我想写一个通用的 Helm 图,它可以在所有的Kubernetes平台提供商- Azure aks,AWS eks上工作。至少有一个区别需要处理- AWS eks不支持sessionAffinity作为服务规范的一部分。
什么是最好的方法来(自动)检测kubernetes平台,以便可以处理这样的差异?我总是可以要求用户提供作为输入,但我想避免这种情况。

zkure5ic

zkure5ic1#

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

nzkunb0c

nzkunb0c2#

对于EKS,您可以使用Helm Capabilities,因为EKS似乎将-eks附加到Kubernetes集群的GitVersion。
你可以通过kubectl version看到这一点。
在Helm中,这里记录了如何读取GitVersion值:
https://helm.sh/docs/chart_template_guide/builtin_objects/
模板代码应如下所示:

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

{{- end }}

GKE也是如此:

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

{{- end }}

对于AKS,您不能这样做,因为kubectl version返回的GitVersion是标准SemVer版本,例如:v1.25.2

相关问题