我们使用Terraform将AKS集群部署到VPN代理后的环境中。当没有代理的离网时,集群的部署工作正常,但是在网络上创建Helm部署时出错。
当集群在网络上运行时,我们可以在检索集群上下文后使用下面的命令连接到它。
kubectl config set-cluster <cluster name> --certificate-authority=<path to organization's root certificate in PEM format>在创建集群之后,还使用Terraform创建了Helm部署。这似乎需要部署certificate-authority数据,而且我们还没有找到一种方法在这个过程中的正确步骤中实现自动化。因此,apply由于错误而失败:
x509:由身份不明的机构签署的证书
知道我们如何才能将certificate-authority数据放在正确的位置,这样Helm部署就不再失败了吗?还是有一种方法可以让集群隐式地信任根证书?我们尝试了几种不同的方法:
az aks get-credentials --name <cluster name> --resource-group <cluster RG>)时,是否可以自动获得这些数据?**无法找到一种简单的方法来完成这一任务。kubectl命令时利用。我们知道这是可行的,但这意味着我们无法找到通过Terraform实现自动化的方法。cluster_ca_certificate尝试了几种不同的方法,即提供根CA的PEM风格的证书。 provider "kubernetes" {
host = module.aks.kube_config.0.host
client_certificate = base64decode(module.aks.kube_config.0.client_certificate)
client_key = base64decode(module.aks.kube_config.0.client_key)
cluster_ca_certificate = base64decode(module.aks.kube_config.0.cluster_ca_certificate)
}
provider "helm" {
version = ">= 1.2.4"
kubernetes {
host = module.aks.kube_config.0.host
client_certificate = base64decode(module.aks.kube_config.0.client_certificate)
client_key = base64decode(module.aks.kube_config.0.client_key)
cluster_ca_certificate = base64decode(module.aks.kube_config.0.cluster_ca_certificate)
}
}提前感谢您的帮助!如果你需要更多的信息,请告诉我。我对这个项目还不熟悉,所以我可能没有正确地解释过一切。
发布于 2021-03-06 03:01:23
如果以后有人发现了这一点,我们最终只需将项目分成两部分:集群创建和引导。这就让我们在中间添加一个local-exec块来运行kubectl config set-cluster...命令。因此,现在的操作顺序是:
因为我们使用的是Terragrunt,所以我们可以使用它的apply-all函数来执行这两个操作,设置描述的这里的依赖关系。
https://stackoverflow.com/questions/66386152
复制相似问题