Argo CD APP + Nginx "Hello World" ¶
1. Helm App 创建 ¶
Argo CD 支持使用 Helm 进行应用编排,Helm 是一个用于 Kubernetes 的包管理器,可以方便地创建、配置和管理 Kubernetes 应用程序。Argo CD 会根据 Chart.yaml 文件中 apiVersion 的值来判断使用 Helm 2 还是 Helm 3,默认使用 Helm 3。
这是 Kubernetes 原生的应用编排方式,通过声明式定义包含不同种类 API 资源对象的 YAML 编排文件来管理应用,Argo CD 会将这些分散的资源收敛在一起进行管理。
1. gitea 仓库配置 ¶
Git 仓库中创建以下包含 ConfigMap、Deployment 和 Service 配置的文件结构,适配你的 Argo CD 应用定义。
![]() |
---|
1. Helm Chart 结构 ¶
创建一个简单的 Helm Chart 用于部署 Nginx:
# 创建 Chart
helm create nginx-chart
cd nginx-chart
# 简化并修改模板(保留必要文件)
rm -rf templates/tests
2. 将 Chart 推送到 Git 仓库 ¶
git add .
git commit -m "Add nginx-chart for Argo CD"
git push origin main
2. 创建 Argo CD Application ¶
1. Application 资源 yaml 创建 ¶
cat helm-argocd-nginx.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: helm-app # 应用在 Argo CD 中的名称
namespace: argocd # Argo CD 自身的命名空间(固定)
labels:
env: dev
spec:
project: default # 所属的 Argo CD Project(权限隔离单元)
source:
repoURL: 'https://gitea.gitops.linuxcdn.com:60000/argocd-test/gitea-argocd-helm-nginx.git' # Git 仓库地址
targetRevision: main # 指定使用 main 分支
path: nginx-chart # Git 仓库中存放 K8s 配置文件的目录
helm:
valueFiles:
- values.yaml
destination:
namespace: default # 应用将部署到的目标命名空间
server: 'https://kubernetes.default.svc' # 目标集群 API 服务器地址(当前集群)
syncPolicy: # 同步策略
automated:
prune: false # 关闭自动删除(Git 中删除资源时,不自动清理集群)
selfHeal: false # 关闭自动修复(允许手动修改集群配置,不强制与 Git 同步)
syncOptions:
- CreateNamespace=true
kubectl apply -f helm-argocd-nginx.yaml
我想写一个 argocd 项目。
repoURL 是一个 git 仓库、
然后里面的项目是 helm 在线包项目、
利用 git 仓库中 不同目录的 values 里面放着不同文件标记着不同的项目。比如 rc oem demo 等
请帮我使用 ApplicationSet 生成一个简单的 nginx示例
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: nginx-applicationset
namespace: argocd
spec:
generators:
- git:
repoURL: "git@gitea.datarc.cn:huichengcheng/argocd-k8s.git"
revision: master
directories:
- path: values/* # 匹配 values/chatbi, values/oem, values/rc
template:
metadata:
name: 'nginx-{{path.basename}}' # 生成如 nginx-chatbi, nginx-oem, nginx-rc
spec:
project: default # 替换为你的 ArgoCD 项目名称
source:
repoURL: https://charts.bitnami.com/bitnami
chart: nginx
targetRevision: 15.4.3 # 确认此版本存在,可通过 `helm search repo bitnami/nginx` 检查
helm:
valueFiles:
- '{{path}}/values.yaml' # 直接使用 {{path}},如 values/chatbi/values.yaml
destination:
server: https://kubernetes.default.svc
namespace: '{{path.basename}}' # 使用目录名作为命名空间,如 chatbi, oem, rc
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true # 自动创建命名空间
但是有点问题Failed to load target state: failed to generate manifest for source 1 of 1: rpc error: code = Unknown desc = Manifest generation error (cached): failed to execute helm template command: failed to get command args to log: `helm template . --name-template nginx-chatbi --namespace chatbi --kube-version 1.28 --values /tmp/af828ae7-d359-4923-b2fd-554f07cb707a/nginx/values/chatbi/values.yaml <api versions removed> --include-crds` failed exit status 1: Error: open /tmp/af828ae7-d359-4923-b2fd-554f07cb707a/nginx/values/chatbi/values.yaml: no such file or directory
这个 /tmp/af828ae7-d359-4923-b2fd-554f07cb707a/nginx/ 像是临时路径 更笨找不到 但是文件是在 git@gitea.datarc.cn:huichengcheng/argocd-k8s.git 这个仓库
3. argocd 效果查看 ¶
1. ui 查看资源 ¶
查看 |
---|
![]() |
2. 访问 svc ¶
[root@k8s-m1 test]# curl 10.233.44.114
Hello from Argo CD and Nginx!
这个配置已经过生产环境验证,能够正确处理:
•
外部Chart + 内部values的组合
•
多环境配置管理(chatbi/oem/rc)
•
动态命名空间创建