ArgoCD Vault Plugin 使用教程
项目介绍
ArgoCD Vault Plugin 是一个开源工具,旨在简化在 ArgoCD 中使用 Vault 进行秘密管理的流程。该插件允许用户在 Kubernetes 资源中引用 Vault 中的秘密,并在部署过程中自动替换这些引用。
项目快速启动
安装 ArgoCD Vault Plugin
首先,确保你已经安装了 ArgoCD 和 Vault。然后,按照以下步骤安装 ArgoCD Vault Plugin:
-
克隆项目仓库:
git clone https://github.com/argoproj-labs/argocd-vault-plugin.git cd argocd-vault-plugin
-
构建插件:
make build
-
将生成的二进制文件复制到 ArgoCD 插件目录:
cp dist/argocd-vault-plugin /usr/local/bin/
-
配置 ArgoCD 以使用该插件。编辑 ArgoCD 配置文件(通常位于
/etc/argocd/argocd-cm.yaml
),添加以下内容:data: configManagementPlugins: | - name: argocd-vault-plugin init: command: [sh, -c, "argocd-vault-plugin generate -s $ARGOCD_APP_NAME"] generate: command: [sh, -c, "argocd-vault-plugin generate -s $ARGOCD_APP_NAME"]
使用 ArgoCD Vault Plugin
假设你有一个 Kubernetes 资源文件 deployment.yaml
,其中包含对 Vault 秘密的引用:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
spec:
replicas: 1
template:
spec:
containers:
- name: example-app
image: example-image
env:
- name: SECRET_KEY
value: <vault:secret/data/example-app#SECRET_KEY>
在 ArgoCD 中创建一个应用,并指定使用 argocd-vault-plugin
插件:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: example-app
spec:
project: default
source:
repoURL: 'https://github.com/your-repo.git'
targetRevision: HEAD
path: path-to-your-manifests
plugin:
name: argocd-vault-plugin
destination:
server: 'https://kubernetes.default.svc'
namespace: default
应用案例和最佳实践
应用案例
假设你有一个多租户的 Kubernetes 集群,每个租户都有自己的命名空间和秘密。使用 ArgoCD Vault Plugin,你可以轻松地在不同命名空间中部署应用,并确保每个应用只能访问其对应的秘密。
最佳实践
- 秘密管理:确保所有秘密都存储在 Vault 中,并通过 ArgoCD Vault Plugin 引用。
- 命名空间隔离:为每个租户创建独立的命名空间,并使用命名空间级别的秘密。
- 权限控制:确保只有授权的应用和服务可以访问特定的秘密。
典型生态项目
ArgoCD Vault Plugin 通常与其他生态项目一起使用,以构建完整的 CI/CD 流水线。以下是一些典型的生态项目:
- Argo Workflows:用于定义和执行复杂的 CI/CD 工作流。
- Vault:用于安全地存储和管理秘密。
- Kubernetes:用于部署和管理容器化应用。
- Helm:用于打包和部署 Kubernetes 应用。
通过结合这些工具,你可以构建一个强大且安全的 CI/CD 流水线,确保应用的持续交付和秘密的安全管理。