订阅内容

敏感数据不得存储在 Git 中。这给 GitOps 带来了一个难题,因为您需要 Git 中的机密,但又不想公开这些敏感数据!为解决此问题,您可以将机密存储在 HashiCorp Vault 等工具中,然后检索该数据并将其注入 红帽 OpenShift中。 

本文是使用 Argo CD Vault 插件部署 OpenShift GitOps 的指南,以从 Hashicorp Vault 实例检索机密并将它们注入到 Kubernetes 资源中。本指南以 2021 年的上一篇红帽博客等工作为基础,并进行了更新,以使用更现代的自定义插件边车方法。

前提条件

在本文中,我假设您运行的是 OpenShift 4.10 或更高版本,并且具有该集群的管理特权。我正在运行通过红帽演示系统置备的 AWS 上的红帽 OpenShift 4.13 集群。

此外,在继续执行以下任何步骤之前,请确保您已在终端环境中登录集群,并提供 ochelm 二进制文件。使用以下命令来确认这些二进制文件。

首先,检查前提条件,您应该会看到类似于下文的输出:

$ oc version && helm version
Client Version: 4.11.13
Kustomize Version: v4.5.4
Kubernetes Version: v1.27.4
version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}

1.部署 Vault

在本文中,我以 dev 模式使用 Vault,这种模式不适合生产环境。如果您已在运行 Vault 实例,则可以跳过此步骤。部署 Hashicorp Vault的实例:

$ helm upgrade --install vault vault \
    --repo https://helm.releases.hashicorp.com \
    --namespace vault \
    --create-namespace \
    --set "global.openshift=true" \
    --set "server.dev.enabled=true" \
    --set "injector.enabled=false"

2.配置 Vault

部署了 Vault 实例后,对 Vault pod 运行 shell 脚本,以使用出色的 vault CLI 快速配置本演示。

该配置脚本为 Vault 设置 Kubernetes 身份验证方法 ,启用 kv-v2 机密存储,创建一个测试机密,并为该机密创建访问策略。

克隆源:

$ git clone https://github.com/jmhbnz/openshift-gitops-vault-plugin 

将您的配置脚本复制到 Vault pod:

$ oc --namespace vault cp 1-vault/configure-vault.sh vault-0:/tmp/configure-vault.sh

然后,在 vault pod 中远程运行脚本:

$ oc --namespace vault exec vault-0 -t -- sh -c 'cd /tmp && ./configure-vault.sh'

3.将 argocd-vault-plugin-auth 配置到 Vault

部署和配置了 Vault 后,我们必须启用即将部署的 Argo CD Vault 插件,以使用 Kubernetes 服务帐户对 Vault 进行身份验证。

为 ArgoCD 创建命名空间:

$ oc new-project vplugindemo

创建用于 Argo Vault 插件身份验证的服务帐户:

$ oc create serviceaccount vplugin

在 Vault 中创建一个角色,以将您的服务帐户绑定到策略:

$ oc --namespace vault exec vault-0 -- vault write auth/kubernetes/role/vplugin \
    bound_service_account_names=vplugin \
    bound_service_account_namespaces=vplugindemo \
    policies=vplugin \
    ttl=1h

最后,创建一个机密 ,供 Argo Vault 插件在配置 Vault 连接时使用。

$ oc --namespace vplugindemo create \
-f 2-argocd/secret-vault-configuration.yaml

4.配置 argocd-vault-plugin 处理

配置了身份验证后,您现在需要定义 Argo CD Vault Plugin sidecar 的用途。此过程包含两个步骤。首先,您必须指定 discover 命令,然后指定 generate 命令。请参考这些记录的示例,包括基于 helmkustomize的应用的场景。我的示例采用最基本的方法来发现包含注释的文件,然后使用 argocd-vault-plugin generate 。 以模板化文件。

$ oc --namespace vplugindemo create \
-f 2-argocd/configmap-plugin.yaml

5.部署 OpenShift GitOps

部署和配置 Vault 并配置 argocd-vault-plugin 后,部署 OpenShift GitOps operator:

$ oc --namespace openshift-operators create -f 2-argocd/subscription-gitops.yaml

操作器安装成功后,使用自定义资源创建您的 Argo CD 实例:

$ oc --namespace vplugindemo create \
-f 2-argocd/crd-argocd.yaml

6.创建 Argo CD 应用

Argo CD 运行后,创建此基准示例应用。这会在集群上创建一个机密资源,其默认占位符值替换为来自 Vault 的值。

$ oc --namespace vplugindemo create \
-f 2-argocd/application-example.yaml

摘要

通过使用 Hashicorp Vault 以及作为边车运行的红帽 OpenShift GitOps 和 Argo CD Vault 插件,您已成功在 Git 中的机密内使用了占位符值。这是保护敏感数据的好方法。


关于作者

James Blair is a Specialist Architect at Red Hat. James is a vivid open source advocate and hands-on engineer. He has a deep technical background in automation, DevSecOps and cloud-native platform engineering across several sectors and is passionate about growing cloud-native in Aotearoa, New Zealand.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

按频道浏览

automation icon

自动化

有关技术、团队和环境 IT 自动化的最新信息

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

open hybrid cloud icon

开放混合云

了解我们如何利用混合云构建更灵活的未来

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Original series icon

原创节目

关于企业技术领域的创客和领导者们有趣的故事