ArgoCD + ArgoCD Image Updater 部署实现

news/2024/10/11 11:19:22

部署思路踩坑整理

1ArgoCDArgoCD Image Updater2个不同的程序。"ArgoCD Image Updater小工具"没有集成在ArgoCD中需要单独部署。

2、单独的ArgoCD能够实现基于git仓库变更作为应用部署的事实来源 [参考子页:argocd根据镜像tag变化实现自动发布的2种方式];

ArgoCD +"ArgoCD Image Updater小工具"能够实现以镜像仓库中镜像tag变更作为应用部署的事实来源。

3、"ArgoCD Image Updater小工具"部署略显繁琐,并不只是apply官方提供的yaml让pod运行就可以了,需要打通和argocd的认证操作。

4ArgoCD 或"ArgoCD Image Updater小工具"按照官方提供的install.yaml 部署后,如果修改其中的cm或者参数,不要采取在原yaml修改后再提交的方式,应该 用命令修改。因为yaml太长太复杂了!

5、其它

5.1argocd 配置gitlabhttp用户名密码方式可以实现认证并回写。

5.2harbor公开仓库配置的时候不需要用户名和密码,可以使用http请求。

6、配置了回写时,ArgoCD Image Updater 并不会直接修改git仓库yaml 文件的tag,而是会创建一个.开头的yaml 文件(此例为".argocd-source-dev-smart-doc.yaml

",每次更新都会覆盖此文件的images内容。

   

   

   

ArgoCD + ArgoCD Image Updater 部署步骤

1、安装ArgoCD

略,在线安装离线安装均可,yaml文件很长。可参考本节其它。

   

登录argocd UI 会强制修改密码。

   

安装 Argo CD CLI

要与 Argo CD API Server 进行交互,我们需要安装 CLI 命令:

# wget https://github.com/argoproj/argo-cd/releases/download/v1.7.10/argocd-linux-amd64

或者用win访问 https://github.com/argoproj/argo-cd/releases 选择合适的版本下载 argocd-linux-amd64 文件

# cp argocd-linux-amd64 /usr/local/bin/argocd

# chmod +x /usr/local/bin/argocd

# argocd version

   

2、部署"ArgoCD Image Updater小工具"部署略显繁琐

==================== 2.1、在argocd中创建本地用户并为用户创建访问令牌 ======================

# kubectl -n argocd edit cm argocd-cm

data:

accounts.image-updater: apiKey

   

##打开后没有data字段,在最后顶格补入以上字段。注意:apiKey中的K为大写!!!

##修改保存后,再查看格式大概如下,验证多了data字段

=================== 2.1.1 为用户创建访问令牌,保存备用(下面配置API访问令牌秘钥会用到此处生成的令牌)===============

argocd命令登录认证argocd(地址为argocd-server SVC暴露的端口),需要交互输入y,忽略tls证书。

# argocd login 10.244.10.55:15471 --username admin --password argocd123

WARNING: server certificate had error: tls: failed to verify certificate: x509: cannot validate certificate for 10.244.10.55 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y

'admin:login' logged in successfully

Context '10.244.10.55:15471' updated

   

执行下面命令的前提是上面已经用argocd命令登录了argocd

# argocd account generate-token --account image-updater --id image-updater

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcmdvY2QiLCJzdWIiOiJpbWFnZS11cGRhdGVyOmFwaUtleSIsIm5iZiI6MTcyODUyNDUyMCwiaWF0IjoxNzI4NTI0NTIwLCJqdGkiOiJpbWFnZS11cGRhdGVyIn0.QecneA-yvcbU7Eoyi8egWwiAxN4zrf9FCWJXPeu0ick

   

=================== 2.2、在Argo CD中授予RBAC权限 =====================

# kubectl -n argocd edit cm argocd-rbac-cm

data:

policy.default: role:readonly

policy.csv: |

p, role:image-updater, applications, get, */*, allow

p, role:image-updater, applications, update, */*, allow

g, image-updater, role:image-updater

   

##打开后没有data字段,在最后顶格补入以上字段。

##修改保存后,再查看验证多了data字段。

================= 2.3、安装Argo CD Image Update =====================

建议在运行 Argo CD 的同一个 Kubernetes 命名空间集群中运行 Argo CD Image Updater,但这不是必需的。事实上,甚至不需要在 Kubernetes 集群中运行 Argo CD Image Updater 或根本不需要访问任何 Kubernetes 集群。但如果不访问 Kubernetes,某些功能可能无法使用,所以强烈建议使用第一种安装方法。

运行镜像更新程序的最直接方法是将其作为 Kubernetes 工作负载安装到运行 Argo CD 的命名空间中。这样就不需要任何配置,也不会对你的工作负载产生任何影响。

# kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-image-updater/stable/manifests/install.yaml

或者地址:https://github.com/argoproj-labs/argocd-image-updater/tree/master/manifests

   

================= 2.4、配置镜像仓库(此例为harbor,之前ecr有过实践) ===============

即使您不打算使用私有镜像仓库,您也需要至少配置一个empty registries.conf

   

# kubectl -n argocd edit cm argocd-image-updater-config

data:

registries.conf: ""

   

##没有此条目argocd-image-updater pod将无法启动。

   

如果使用私有镜像仓库可参考以下配置,以harbor镜像仓库为例:

   

data:

argocd.insecure: "true"

log.level: debug

registries.conf: |

registries:

- name: harbor

api_url: http://reg1.ka.zkj.com

prefix: reg1.ka.zkj.com

ping: yes

insecure: yes

   

##打开后没有data字段,在最后顶格补入以上字段。

##修改保存后,再查看验证多了data字段。

   

================= 2.5、配置API访问令牌秘钥 ============

根据上面生成的令牌设置变量

#YOUR_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcmdvY2QiLCJzdWIiOiJpbWFnZS11cGRhdGVyOmFwaUtleSIsIm5iZiI6MTcyODUyNDUyMCwiaWF0IjoxNzI4NTI0NTIwLCJqdGkiOiJpbWFnZS11cGRhdGVyIn0.QecneA-yvcbU7Eoyi8egWwiAxN4zrf9FCWJXPeu0ick

   

创建并应用于现有资源,特别注意:命令中的命名空间要修改为服务实际部署的NS

# kubectl create secret generic argocd-image-updater-secret \

> --from-literal argocd.token=$YOUR_TOKEN --dry-run -o yaml |

> kubectl -n argocd apply -f -

W1010 09:48:58.532655 3478 helpers.go:703] --dry-run is deprecated and can be replaced with --dry-run=client.

secret/argocd-image-updater-secret configured

   

更改后必须重启服务

# kubectl -n argocd rollout restart deployment argocd-image-updater

deployment.apps/argocd-image-updater restarted

   

   

3、在gitlab仓库中建立编排文件

   

说明:gitlab仓里有4个文件。

回写文件

.argocd-source-dev-smart-doc.yaml 是argocd 回写后的文件,这个是argocd image updater 应用建立后才会生成的!

编排文件:

dp-smart-doc.yaml

svc-smart-doc.yaml

Kustomize工具文件:

kustomization.yaml

   

---------文件内容如下 -------------------

kustomization.yaml

 

namePrefix: kustomize-

apiVersion: kustomize.config.k8s.io/v1beta1

kind: Kustomization

resources:

- dp-smart-doc.yaml

- svc-smart-doc.yaml

------------------------------------

dp-smart-doc.yaml

   

apiVersion: apps/v1

kind: Deployment

metadata:

name: smart-doc

namespace: wa

labels:

group: service

spec:

replicas: 1

selector:

matchLabels:

app: smart-doc

tier: backend

template:

metadata:

annotations: {}

labels:

app: smart-doc

tier: backend

spec:

nodeSelector:

smart: "true"

dnsPolicy: ClusterFirst

containers:

- image: reg1.ka.zkj.com/dev/smart-doc:v1.241008-68-002

imagePullPolicy: IfNotPresent

name: smart-wealth

ports:

- containerPort: 9800

#command: ["sleep","10000"]

env:

- name: TZ

value: Asia/Shanghai

resources:

limits:

cpu: 1000m

memory: 4Gi

requests:

cpu: 1000m

memory: 4Gi

volumeMounts:

- mountPath: /logs/smart-doc

name: smart-doc

terminationGracePeriodSeconds: 60

volumes:

- hostPath:

path: "/home/zkj/wealth/logs/smart-doc"

type: DirectoryOrCreate

name: "smart-doc"

-----------------------------

svc-smart-doc.yaml

 

apiVersion: v1

kind: Service

metadata:

name: smart-doc

namespace: wa

spec:

type: NodePort

ports:

- port: 9800

targetPort: 9800

nodePort: 48528

selector:

app: smart-doc

tier: backend

   

4、登录argocd UI,建立argocd应用。

   

   

   

   

   

   

   

=======================================================

综合参考:

https://cloudpods.csdn.net/657807ccb8e5f01e1e447b15.htmlKubeSphere对接ArgoCD

https://kubesphere.io/zh/blogs/kubesphere-argocd/KubeSphere + Argo CD,实现真正的 GitOps!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70152.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

zabbix4下mysql数据迁移至zabbix7环境

注意:zabbix7导入数据之前,如果有zabbix库把这个库删除掉(如果覆盖7的数据导入后会有很多数据问题)。另外不要全库导出,只导出zabbix库即可(不然系统表会丢失infoschema账号)1.zabbix4上的mysql数据库导出 nohup mysqldump -uroot -pb8Ak1yR7 -B zabbix > /mnt/zabbi…

Android主流厂商云真机测试体验

在`Android`平台下应用开发,机型适配是绕不开的话题,今天跟大家分享大厂商提供的云真机测试服务的使用体验。在Android平台下应用开发,机型适配是绕不开的话题,今天跟大家分享大厂商提供的云真机测试服务的使用体验。在我们开发分身产品 空壳 过程中,需要耗费大量的精力确…

思通数科AI视频监控卫士在旅游景区景点的深度应用

在人工智能技术的推动下,各行各业都在寻求通过AI实现业务的转型与升级。思通数科AI视频卫士,作为一套前沿的AI视频监控解决方案,正成为旅游景区景点安全监控转型过程中的重要助力。人流管理与安全防护景区游客流量大且集中,思通数科AI视频监控卫士可以实时监测人群密集区域…

菲律宾与马来西亚游戏产业对比:火盾云如何助力游戏外包服务

随着全球游戏产业的不断扩展,东南亚地区的游戏市场也呈现出蓬勃发展的态势。菲律宾与马来西亚作为该地区的两个重要国家,在游戏产业的发展上各具特色。与此同时,游戏外包服务在这些国家也逐渐成为一种趋势,而火盾云(Huodunyun)作为网络安全和加速领域的领军企业,能够为游…

天翼云完成首个国产化万卡训练,MFU达到国内领先水平!

天翼云自研国内首个单集群万卡国产化全功能预训练云服务平台发布上线,并完成万卡规模Llama3.1-405B大模型训练。Llama3.1-405B作为4000亿参数的模型,在息壤训推服务平台的支持下经过多轮优化,MFU达到国内领先水平;另外,700亿参数模型Llama2-70B在万卡规模下完成训练,MFU也…

3164. 优质数对的总数 II

给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除,则称数对 (i, j) 为 优质数对(0 <= i <= n - 1, 0 <= j <= m - 1)。 返回 优质数对 的总数。 示例 1: 输入:nums1 = [1,3,4], nums2 = …

bat文件跟参数

bat内容如下@echo off chcp 65001 > nul echo 第一个参数: %1 echo 第二个参数: %2 echo 所有参数: %* echo 批处理文件名: %0 pause ---------------------------------------------------------------------------------------------------------------------…