我想写一个通用的 Helm 图,它可以在所有的Kubernetes平台提供商- Azure aks,AWS eks上工作。至少有一个区别需要处理- AWS eks不支持sessionAffinity作为服务规范的一部分。
什么是最好的方法来(自动)检测kubernetes平台,以便可以处理这样的差异?我总是可以要求用户提供作为输入,但我想避免这种情况。
我想写一个通用的 Helm 图,它可以在所有的Kubernetes平台提供商- Azure aks,AWS eks上工作。至少有一个区别需要处理- AWS eks不支持sessionAffinity作为服务规范的一部分。
什么是最好的方法来(自动)检测kubernetes平台,以便可以处理这样的差异?我总是可以要求用户提供作为输入,但我想避免这种情况。
2条答案
按热度按时间zkure5ic1#
根据Kubernetes上的cloud providers文档,“树内云提供商通常需要在命令行中为kube-apiserver、kube-controller-manager和kubelet指定--cloud-provider和--cloud-config”。因此,如果您可以查询这些值,您就能够实现您想要的结果。
nzkunb0c2#
对于EKS,您可以使用Helm Capabilities,因为EKS似乎将
-eks
附加到Kubernetes集群的GitVersion。你可以通过
kubectl version
看到这一点。在Helm中,这里记录了如何读取GitVersion值:
https://helm.sh/docs/chart_template_guide/builtin_objects/
模板代码应如下所示:
GKE也是如此:
对于AKS,您不能这样做,因为
kubectl version
返回的GitVersion
是标准SemVer版本,例如:v1.25.2