kubeasz/docs/guide/argocd.md

149 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# argocd 使用小记
## 背景
使用argocd实现应用基于gitops的持续部署。
企业内部应用都以helm charts方式部署charts托管在内部git仓库具体应用配置helm values根据不同环境也托管在内部git仓库。所以可以简单理解部署方式如下
**应用部署=应用chart+应用values**
## 安装
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
## 登陆
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
argocd login ${nodeIp}:${nodePort}
argocd account update-password
## 添加新集群
- 1、配置多个集群的 CONTEXT
export KUBECONFIG=$HOME/.kube/config.1:$HOME/.kube/config.2
kubectl config get-contexts
- 2、添加新集群根据上面get-contexts结果添加
argocd cluster add 2xxx104401xxxx7-cxxxxxxxxxxxxxa74afabbf --kubeconfig $HOME/.kube/kubeconfig.1 --name test
## 添加项目
kubectl apply -f project.yaml
```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
name: myproject
namespace: argocd
spec:
clusterResourceWhitelist:
- group: '*'
kind: '*'
description: '测试环境myproject'
destinations:
- name: myproject
namespace: '*'
server: https://121.xx.xx.xx:6443
namespaceResourceWhitelist:
- group: '*'
kind: '*'
# 建议不要开启孤岛资源监控很可能会引起大量非必要应用同步造成cpu满载
#orphanedResources:
# warn: false
sourceRepos:
- '*'
sourceNamespaces:
- '*'
```
## 添加git仓库
UI 界面添加即可
## 添加应用
- 使用git管理的charts仓库git@172.16.1.1:git-charts.git
- 使用git管理的values仓库git@172.16.1.1:git-values.git
### 添加单应用
```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: test-app
namespace: argocd
spec:
syncPolicy:
# 一般建议禁用自动应用同步
#automated: {}
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
project: myproject
destination:
server: https://121.xx.xx.xx:6443
namespace: default
sources:
- repoURL: 'git@172.16.1.1:git-charts.git'
targetRevision: master
path: charts/test-app
helm:
valueFiles:
- values.yaml
- $values/myproject-test/global.yaml
- $values/myproject-test/test-app.yaml
- repoURL: 'git@172.16.1.1:git-values.git'
targetRevision: master
ref: values
```
### 添加批次应用
```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: test-appset
namespace: argocd
spec:
generators:
- git:
repoURL: 'git@172.16.1.1:git-charts.git'
revision: master
directories:
- path: charts/*
- path: charts/extras
exclude: true
template:
metadata:
name: '{{path.basename}}'
spec:
project: myproject
sources:
- repoURL: 'git@172.16.1.1:git-charts.git'
targetRevision: master
path: charts/{{path.basename}}
helm:
valueFiles:
- values.yaml
- $values/myproject-test/global.yaml
- $values/myproject-test/{{path.basename}}.yaml
- repoURL: 'git@172.16.1.1:git-values.git'
targetRevision: master
ref: values
destination:
server: https://121.xx.xx.xx:6443
namespace: default
syncPolicy:
#automated: {}
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
```
## 其他
- 允许argocd应用在任意命名空间创建
https://argo-cd.readthedocs.io/en/stable/operator-manual/app-any-namespace/