惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Spread Privacy
Spread Privacy
S
Schneier on Security
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MongoDB | Blog
MongoDB | Blog
NISL@THU
NISL@THU
N
Netflix TechBlog - Medium
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Webroot Blog
Webroot Blog
月光博客
月光博客
T
The Exploit Database - CXSecurity.com
Forbes - Security
Forbes - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 叶小钗
Recent Announcements
Recent Announcements
IT之家
IT之家
B
Blog
C
CERT Recently Published Vulnerability Notes
S
SegmentFault 最新的问题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Troy Hunt's Blog
O
OpenAI News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
V2EX - 技术
V2EX - 技术
L
Lohrmann on Cybersecurity
C
Cyber Attacks, Cyber Crime and Cyber Security
H
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Last Week in AI
Last Week in AI
Help Net Security
Help Net Security
Hacker News: Ask HN
Hacker News: Ask HN
A
About on SuperTechFans
Y
Y Combinator Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
Vercel News
Vercel News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Recorded Future
Recorded Future
C
Cisco Blogs
Project Zero
Project Zero

博客 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 k8s RKE2 vSphere 存储配置 OpenClaw 全能指南:从安装到进阶自动化实战 (2026 最终版) Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 k8s master 节点 Unauthorized Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 使用TLSv1.3 升级nginx和openssl Proxmox VE(PVE) 更新到最新版本 kindle 邮件发送失败,错误代码E999 metallb + ingress-nginx + argocd 本地部署 iStoreOS(旁路由)使用openclash实现dns劫持 异常流量分析:图片库服务黑客入侵 openwrt 硬盘扩容 搭建ip地址检索服务 Kubernetes — k8s 手动安装 1.17.9 SELinux 问题:导致端口无法创建,无法访问 【福利】免费!本地部署!去除视频中移动的物体 通知:《打工人日报》迁移到独立板块 KyBook 3 | calibre-web - IOS系统最佳图书伴侣 Tmux 安装和使用教程 DockerHub 加速镜像部署 - 使用cloudflare 代理 docker的零停机部署 SD-webui 批量处理图片 ubuntu 安装 ComfyUI ubuntu 安装 stable-diffusion-webui 测试策略:微服务架构 单元测试:测试单元质量提升 端到端测试:模拟用户体验 Kubernetes — containerd 安装和部署 CI/CD 可观察性-基于grafana linux服务器进程打开文件过多导致服务异常 使用 ElasticSearch Curator 7天定期删除日志 sonarqube docker安装和配置 SSH 通过 443 端口连接 GitHub iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮 GNU/Linux 一键更换系统软件源脚本 解决Elasticsearch索引只读(read-only) 【福利】埃隆·马斯克传 [沃尔特·艾萨克森] 在线下载 【破解】小鹏P5和小鹏G9开启adb和网络adb Kubernetes — kubecost 分析 Kubernetes 成本 3D Gaussian Splatting:3D模型渲染 Linux 系统收包流程以及内核参数优化 2023亚运会电竞门票民购买指南(报名+抽签) Vue3 + vite + nginx项目部署后404问题 大麦抢票辅助软件(福利 TFBOYS十年之约演唱会 2023 全机位 视频) 黑群晖最新安装教程 Ansible部署ceph集群 最好的微信朋友圈集赞神器-福利推荐 推荐一下 容器云资源 2010年的天涯神贴聊房价 如何礼貌回绝不合理的需求 nginx 配置和编译 github 国内代理访问下载 使用scrapy-redis实现增量爬取 逆境和成长-2022年终总结 优雅的使用Conda管理python环境 Jenkins 编译Android apk 流水线 Kubernetes — 更新证书 shell功能脚本集合 Nexus3 使用和部署 githubAction set-output弃用错误 Kubernetes — Rook云存储介绍和部署 Kubernetes — 基于K8S搭建Ceph分布式存储 Kubernetes — 探针和生命周期 Kubernetes — 开放标准(OCI、CRI、CNI、CSI、SMI、CPI)概述 kubernetes 部署插件 (Flannel、Web UI、CoreDNS、Ingress Controller) Cloudflare Zero Trust 内网穿透 k8s CNI 问题 连接认证失效 k8s.gcr.io国内无法连接解决方法 headscale 部署使用 羊了个羊小程序 破解通关 K8S 问题排查:cgroup 内存泄露问题 RocketMQ k8s部署 4主4从集群 docker 问题处理 kubernetes 存储 linux服务器 删除空间却未释放 kubernetes 从1.23.x 升级到 1.24.x 编写 kubernetes 资源描述文件 nginx ssh-key connection exception kubernetes manual expansion VSCode插件推荐=> Code Runner ant build.xml 编写 kubernetes 调度过程 记录一次上门打散工 k8s本地联调神器kt-connect Ant中如何添加第三方jar包依赖 OpenELB:让k8s私有环境对外暴露端口 linux 网络测速 安装 docker 出现 ERROR: Unsupported distribution 'ol' 问题 logrotate 日志滚动的使用 nginx 编译参数详解 nginx 重写规则 rewrite模块 nginx.conf 配置文件详解 rsync 文件同步 nginx 日志格式整理 163企业邮箱设置教程 2021年第50周记
Argo cd 安装和部署
2023-12-04 · via 博客 on 打工人日志

Argo cd 安装和部署

Argo CD 是一个为 Kubernetes 而生的,遵循声明式 GitOps 理念的持续部署(CD)工具。Argo CD 可在 Git 存储库更改时自动同步和部署应用程序 argocd

安装

前提:你已经安装好了 k8s 环境,我们将在国内的k8s环境下部署argocd

1k3s kubectl create namespace argocd
2kubectl apply -n argocd -f https://github.jobcher.com/gh/https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

检查是否正常部署

1kubectl get po -n argocd

argocd-1
如果没有错误的情况下应该是全部都runnning,但是如果出现argocd-repo-server CrashLoopBackOff错误有以下解决途径:

  1. 使用以下补丁修补了部署。删除后,错误消失,repo 服务器可以启动。
 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  name: argocd-repo-server
 5spec:
 6  template:
 7    spec:
 8      securityContext:
 9        seccompProfile:
10          type: RuntimeDefault

如果出现argocd-dex-server imagepullbackoff错误有以下解决方法:

1docker pull ghcr.io/dexidp/dex:v2.37.0
2docker tag ghcr.io/dexidp/dex:v2.37.0 harbor/dexidp/dex:v2.37.0
3docker push harbor/dexidp/adex:v2.37.0

使用自定义镜像

安装 Argo CD CLI

Argo CD CLI 是用于管理 Argo CD 的命令行工具,Mac 系统可以直接使用 brew install 进行安装

发布 Argo CD 服务

默认情况下, Argo CD 服务不对外暴露服务,可以通过 LoadBalancer 或者 NodePort 类型的 Service、Ingress、Kubectl 端口转发等方式将 Argo CD 服务发布到 Kubernetes 集群外部。
通过 NodePort 服务的方式暴露 Argo CD 到集群外部

1kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

获取端口号

1kubectl get svc -n argocd

argo nginx-ingress 配置

修改配置

1kubectl patch configmap argocd-cmd-params-cm \
2-n argocd \
3--type merge \
4-p '{"data":{"server.insecure":"true"}}'

修改argo cd 服务

1kubectl patch deployment argocd-server \
2-n argocd --type='json'  \
3-p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--insecure"}]'

检查服务是否正常并获取密码

1kubectl get svc -n ingress-nginx nginx-ingress-controller
2kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d && echo

创建 ingress 路由

 1apiVersion: networking.k8s.io/v1
 2kind: Ingress
 3metadata:
 4  name: argocd-ingress
 5  namespace: argocd
 6  annotations:
 7    nginx.ingress.kubernetes.io/rewrite-target: /
 8spec:
 9  ingressClassName: nginx
10  rules:
11  - host: argocd.example.com
12    http:
13      paths:
14      - path: /
15        pathType: Prefix
16        backend:
17          service:
18            name: argocd-server
19            port:
20              number: 80

使用

argocd-2

获取 Argo CD 密码

默认情况下 admin
帐号的初始密码是自动生成的,会以明文的形式存储在 Argo CD 安装的命名空间中argocd-initial-admin-secretSecret 对象下的 password

1kubectl -n argocd get secret \
2argocd-initial-admin-secret \
3-o jsonpath="{.data.password}" | base64 -d

命令行可以使用以下方式登录

argocd login <节点 IP>:<端口>

进入UI界面配置

输入地址: 例如:https://10.10.1.1:31751,输入用户名admin和密码
argocd-2

因为我是私有化仓库部署所以要配置私有化gitlab仓库

argocd-3
argocd-4
argocd-5

部署服务

创建yaml文件

我提前在代码仓库写好了nginx的yaml文件
deployment.yaml

 1apiVersion: apps/v1	#与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
 2kind: Deployment	#该配置的类型,我们使用的是 Deployment
 3metadata:	        #译名为元数据,即 Deployment 的一些基本属性和信息
 4  name: nginx-deployment	#Deployment 的名称
 5  labels:	    #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
 6    app: nginx	#为该Deployment设置key为app,value为nginx的标签
 7spec:	        #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
 8  replicas: 1	#使用该Deployment创建一个应用程序实例
 9  selector:	    #标签选择器,与上面的标签共同作用,目前不需要理解
10    matchLabels: #选择包含标签app:nginx的资源
11      app: nginx
12  template:	    #这是选择或创建的Pod的模板
13    metadata:	#Pod的元数据
14      labels:	#Pod的标签,上面的selector即选择包含标签app:nginx的Pod
15        app: nginx
16    spec:	    #期望Pod实现的功能(即在pod中部署)
17      containers:	#生成container,与docker中的container是同一种
18      - name: nginx	#container的名称
19        image: nginx:1.7.9	#使用镜像nginx:1.7.9创建container,该container默认80访问
20        livenessProbe: # 存活探针检测
21          httpGet:
22            path: /nginx_status
23            port: 80
24            scheme: HTTP
25          timeoutSeconds: 1
26          periodSeconds: 10
27          successThreshold: 1
28          failureThreshold: 3
29        readinessProbe: # 就绪探针检测
30          httpGet:
31            path: /nginx_status
32            port: 80
33            scheme: HTTP
34          timeoutSeconds: 1
35          periodSeconds: 10
36          successThreshold: 1
37          failureThreshold: 3
38        startupProbe: # 启动探针检测
39          httpGet:
40            path: /nginx_status
41            port: 80
42            scheme: HTTP
43          timeoutSeconds: 1
44          periodSeconds: 10
45          successThreshold: 1
46          failureThreshold: 3

svc.yaml

 1apiVersion: v1
 2kind: Service
 3metadata:
 4  name: nginx-service	#Service 的名称
 5  labels:     	#Service 自己的标签
 6    app: nginx	#为该 Service 设置 key 为 app,value 为 nginx 的标签
 7spec:	    #这是关于该 Service 的定义,描述了 Service 如何选择 Pod,如何被访问
 8  selector:	    #标签选择器
 9    app: nginx	#选择包含标签 app:nginx 的 Pod
10  ports:
11  - name: nginx-port	#端口的名字
12    protocol: TCP	    #协议类型 TCP/UDP
13    port: 80	        #集群内的其他容器组可通过 80 端口访问 Service
14    nodePort: 32600   #通过任意节点的 32600 端口访问 Service
15    targetPort: 80	#将请求转发到匹配 Pod 的 80 端口
16  type: NodePort	#Serive的类型,ClusterIP/NodePort/LoaderBalancer

创建app

argocd-6
argocd-7
argocd-8
argocd-9
argocd-10

部署成功

argocd-11