当 vault 部署在专用集群上时,如何从另一个 kubernetes 集群访问 vault secret?

     2023-03-27     43

关键词:

【中文标题】当 vault 部署在专用集群上时,如何从另一个 kubernetes 集群访问 vault secret?【英文标题】:How to access vault secrets from another kubernetes cluster when vault is deployed on a dedicated cluster? 【发布时间】:2019-10-01 04:02:36 【问题描述】:

我在 AWS 的同一区域中的同一 VPC 中创建了 2 个 kubernetes 集群。

第一个集群专门用于我的微服务。我们将其命名为“MS” 第二个专门用于保管库及其高可用性存储(consul)。我们把它命名为“V”

问题是如何从“MS”集群中的容器访问我在“V”集群中创建的秘密?

到目前为止我已经尝试过:

    我首先在“MS”集群中创建了一个新的服务帐户,该帐户使用审查令牌 API 进行身份验证。

    然后我必须从“MI”集群中提取令牌审查者 JWT、Kuberenetes CA 证书和 Kubernetes 主机

    然后我切换到“V”集群上下文以启用并创建一个附加到该服务帐户的新 kubernetes 身份验证方法。

从那里我不知道该怎么做,我不确定该方法在使用 2 个不同的集群时是否真的有效?

服务帐号:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: consul
  labels:
    app: consul
rules:
  - apiGroups: [""]
    resources:
      - pods
    verbs:
      - get
      - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: consul
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: consul
subjects:
  - kind: ServiceAccount
    name: consul
    namespace: default
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: consul
  labels:
    app: consul

从“MI”集群导出令牌审查变量

export VAULT_SA_NAME=$(kubectl get sa postgres-vault -o jsonpath=".secrets[*]['name']")

export SA_JWT_TOKEN=$(kubectl get secret $VAULT_SA_NAME -o jsonpath=".data.token" | base64 --decode; echo)

export SA_CA_CRT=$(kubectl get secret $VAULT_SA_NAME -o jsonpath=".data['ca\.crt']" | base64 --decode; echo)

export K8S_HOST=$(kubectl exec consul-consul-0 -- sh -c 'echo $KUBERNETES_SERVICE_HOST')

创建 kubernetes 身份验证方法


vault auth enable kubernetes
vault write auth/kubernetes/config \
  token_reviewer_jwt="$SA_JWT_TOKEN" \
  kubernetes_host="https://$K8S_HOST:443" \
  kubernetes_ca_cert="$SA_CA_CRT"

我希望通过我的 micros 服务访问存储在保险库中的机密。虽然我不确定当保管库部署在专用集群中时该方法是否有效。

我想可能还有其他东西可以加入这两个集群?可能正在使用领事?

【问题讨论】:

【参考方案1】:

你占了 80%。接下来的步骤是: 1. 使用正确的服务帐户运行部署 2. 使用 Kubernetes 身份验证方法登录/验证 vault 并获取相关 vault 令牌。 3. 检索秘密。

这是将服务帐户添加到您的部署的示例:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: xxx
  labels:
    app: xxx
spec:
  replicas: 1
  template:
    metadata:
      ...
    spec:
      serviceAccountName: vault-auth
  ...

要使用 kube auth 登录,请参阅 here。我建议你看看这个project 的具体例子。

一旦您获得具有正确权限的令牌,您就可以使用 vault cli/rest api 访问机密。

【讨论】:

对于第 2 步和第 3 步,我可以将身份验证和导出命令添加到“initContainer”吗?然后我就可以在我的应用程序中做一个 process.env.secret 对吗?谢谢 我正在将秘密写入共享卷上的文件并在运行我的应用程序之前记录它们。 (源 /env/variables

使用 terraform 在活动集群中部署 Vault

】使用terraform在活动集群中部署Vault【英文标题】:Vaultdeploymentinaliveclusterusingterraform【发布时间】:2021-08-0214:21:32【问题描述】:我想使用包含微服务的集群部署保管库,并且我的保管库不应具有外部访问权限,并且应使用terraf... 查看详情

部署期间如何使用 Azure Key Vault 传递安全参数值?

】部署期间如何使用AzureKeyVault传递安全参数值?【英文标题】:HowtouseAzureKeyVaulttopasssecureparametervalueduringdeployment?【发布时间】:2020-10-0210:28:46【问题描述】:我有一个用于在Azure管道中部署ServiceFabric集群的ARM模板:-task:AzureResou... 查看详情

当网站部署在主机上时,MySql Insert 不起作用!

】当网站部署在主机上时,MySqlInsert不起作用!【英文标题】:MySqlInsertdoesn\'tworkwhenthewebsitedeployedonthehost!【发布时间】:2010-10-1604:21:30【问题描述】:我在windows下使用XAPP,我的网站运行良好!当我部署在宿主服务器上时,它似... 查看详情

在kubernetes上部署secret加密系统vault(代码片段)

...lt的用武之地。我们可以使用官方HashiCorpVaultHelmChart将Vault部署到Kubernetes中。https://github.com/hashicorp/Vault-helmHelmChart允许用户以各种配置部署Vault:Dev:用于测试Vault的单个内存Vault服务器独立(默认):单个Vault... 查看详情

从远程机器将文件放在 HDFS 上时如何指定用户名?

...发布时间】:2012-07-0710:33:11【问题描述】:我有一个Hadoop集群设置并在一个常见的默认用户名“user1”下工作。我想从不属于hadoop集群的远程机器将文件放入hadoop。我在远程机器上配置了hadoop文件,当hadoopd 查看详情

在kubernetes上部署secret加密系统vault(代码片段)

...lt的用武之地。我们可以使用官方HashiCorpVaultHelmChart将Vault部署到Kubernetes中。https://github.com/hashicorp/Vault-helmHelmChart允许用户以各种配置部署Vault:Dev:用于测试Vault的单个内存Vault服务器独立(默认):单个Vault... 查看详情

如何在专用网络中部署 Java Web 服务

】如何在专用网络中部署JavaWeb服务【英文标题】:HowtoDeployaJavaWebServiceinaPrivateNetwork【发布时间】:2020-09-0814:17:57【问题描述】:我能够使用SpringBoot创建一个JAVARestAPIWeb服务。如何部署它,不仅我的本地主机可以访问它,而且私... 查看详情

当组件安装在 React 上时,如何播放音频?

】当组件安装在React上时,如何播放音频?【英文标题】:HowcanIplayanaudiowhenacomponentismountedonReact?【发布时间】:2021-06-2123:16:04【问题描述】:我有一个简单的通知组件,如下所示:exportconstNotification=(props)=>return(blahblah);当来自... 查看详情

当视图控制器呈现在另一个视图控制器上时如何获取屏幕截图?

】当视图控制器呈现在另一个视图控制器上时如何获取屏幕截图?【英文标题】:Howtogetthescreenshotwhenaviewcontrollerispresentedoveranotherviewcontroller?【发布时间】:2013-08-2611:37:04【问题描述】:我想获取当前屏幕的屏幕截图。但每当MFMa... 查看详情

当我们从另一个活动返回时如何刷新活动的数据?

】当我们从另一个活动返回时如何刷新活动的数据?【英文标题】:Howtorefreshtheactivity\'sdatawhenwereturnfromanotheractivity?【发布时间】:2018-03-1704:56:36【问题描述】:在这里,我想制作一个具有profileactivity的应用程序,用户可以在其... 查看详情

在 vault.yml 中更改密码后,格状结构中的部署失败

】在vault.yml中更改密码后,格状结构中的部署失败【英文标题】:Afterchangingpaswordsinvault.yml,deploymentfailsintrellis【发布时间】:2019-05-3107:19:26【问题描述】:我有一个使用Trellis的wordpress网站设置。最初,我设置了服务器并在没有... 查看详情

javascript 从另一个页面更改元素

...除文本点击链接可以改变文字吗?当它们同时在一个页面上时,它可以工作。否则不会。【问题讨论】:是的,可以,但你需要更清楚并提供代码示例。如果元素在其他页面上,这个其他 查看详情

当用户将鼠标悬停在列表项上时,如何将光标变为手形?

】当用户将鼠标悬停在列表项上时,如何将光标变为手形?【英文标题】:Howtochangethecursorintoahandwhenauserhoversoveralistitem?【发布时间】:2011-03-0612:04:40【问题描述】:我有一个列表,并且我有一个用于其项目的点击处理程序:<u... 查看详情

当 Push Notification AlertView 出现在视图上时如何突出显示特定的视图区域?

】当PushNotificationAlertView出现在视图上时如何突出显示特定的视图区域?【英文标题】:HowtoHighlighttheparticularareaofviewwhenPushNotificationAlertViewAppearsonView?【发布时间】:2016-06-2110:30:04【问题描述】:我是iOS应用程序开发的新手...我有... 查看详情

UICollectionView 没有完全填满页面,当它们应该在一个页面上时,如何阻止它将项目推送到下一页?

...UICollectionView没有完全填满页面,当它们应该在一个页面上时,如何阻止它将项目推送到下一页?【英文标题】:UICollectionViewdoesn\'tfilluppageentirely,howdoIstopitfrompushingitemstothenextpagewhentheyshouldbeonone?【发布时间】:2014-06-1208:27:19【问... 查看详情

当部署在 Docker 上时,Spring Cloud Config Server 在 Url -http://localhost:8888 上给出连接超时异常

】当部署在Docker上时,SpringCloudConfigServer在Url-http://localhost:8888上给出连接超时异常【英文标题】:SpringCloudConfigServergivesConnectTimeoutExceptiononUrl-http://localhost:8888WhendeployedonDockers【发布时间】:2020-10-2904:52:21【问题描述】:我正在尝... 查看详情

当鼠标悬停在没有css的标题上时,如何使缩略图消失?

】当鼠标悬停在没有css的标题上时,如何使缩略图消失?【英文标题】:howcanImakethumbnailimagedisappearwhenthemousehoversoverthetitlewithoutcss?【发布时间】:2013-09-2510:07:08【问题描述】:当我将鼠标悬停在图片的div上时,我有一个简单的jQu... 查看详情

当鼠标在图形线或刻度点上时如何显示 LinePlot JPGraph 的值

】当鼠标在图形线或刻度点上时如何显示LinePlotJPGraph的值【英文标题】:HowtodisplayvalueofLinePlotJPGraphwhenthemouseisoverthegraphlineortickpoint【发布时间】:2013-04-1209:41:50【问题描述】:我有一个项目要制作一个具有许多x轴值的图形,它... 查看详情