小编mt1*_*165的帖子

在使用Terraform启动GKE集群时如何引导RBAC特权

我将Terraform与GKE集群结合使用,效果很好。然后,我希望Terraform在群集上执行一些Kubernetes级别的操作(使用k8s提供程序)-规模不大,只需安装几个Deployments等。

我遇到的问题是权限。我希望使用一种整洁,整洁,声明式的方法来创建集群,并拥有一组凭据,以便我可以使用短期凭据对其进行“管理”操作,包括引导其他用户。我知道如何使运行TF的google用户成为群集的管理员(这个问题经常出现),但这似乎不是很好。尤其重要的是,k8s TF提供程序不支持clusterolebinding(Issue部分PR),因此您必须先使用配置程序“淘汰” ,然后再local-exec运行。gcloud container clusters get-credentialskubectl create clusterrolebinding ...

同样,我不想设置主密码,因为我不想在HTTP基本身份验证上运行。最好的选项似乎是TF GKE资源返回的密钥/证书对,但是其CN为“ client”,并且该用户没有权限。因此,再次使用它的唯一方法是将其封装到kubectl中,将其传递给gcloud服务帐户凭据,并为其添加一个用于“客户端”的clusterrolebinding,这时我也可以像服务帐户一样做所有事情像上面一样。

相比之下,在EKS上,创建集群的(AWS IAM)用户具有开箱即用的cluster-admin(我假设AWS authn提供程序声称该用户位于“ system:masters”中)。

我在这里的实际问题是:Terraform中是否有一种整洁的,完全声明性的方式来建立集群并提供(最好作为输出使用)一组有效的凭据,然后使用它们删除?(是的,我知道他们会留在tfstate中)

我的选择似乎是:

  • “掏空”以提供TF的Google ID(理想情况下是服务帐户)cluster-admin(这是特权升级,但由于gcloud authz插件而有效)
  • 启用HTTP基本身份验证并为管理员帐户提供密码,然后让别名为k8s的供应商使用该服务以最小程度地引导另一个服务帐户。
  • 启用ABAC,以使“客户端”(输出密钥/证书的CN)具有无限的力量-这是我目前正在使用的功能,请不要判断我!

而且我不喜欢任何一个!

google-compute-engine kubernetes google-kubernetes-engine terraform

6
推荐指数
1
解决办法
586
查看次数

各种Envoy RESPONSE_FLAGS的原因是什么

我正在尝试调试服务网格,Envoy 位于中间。访问日志显示了很多 503,它们的%RESPONSE_FLAGS%. 除了access logging docs 之外,我找不到关于标志实际含义的任何解释。

例如,简洁的NR意思是“我向下游发送了 404,但不是因为上游向我发送了一个,而是因为我没有匹配的路由,所以我,特使生成了 404”。我会喜欢像这样的单衬线用于其他一些。特别是我在苦苦挣扎(这些都出现在我们的日志中......)

  • URvs UC- 我认为这些是“我向下游发送了 503,因为我连接了上游,但随后出现了问题”。什么问题?具体来说,remote resetvsconnection termination是什么意思?
  • LR connection local reset- 这是什么意思?特使向下游发送了 503,因为它决定停止与上游对话,中途?为什么会那样做?
  • <no flag>- 我是否正确地假设,如果有像404or503和 no这样的错误代码RESPONSE_FLAGS,那个代码是由上游发送的,只是被转发了?

envoyproxy

6
推荐指数
1
解决办法
640
查看次数