当前位置: 首页 > news >正文

广东专业做网站浙江建设工程信息网高工评选

广东专业做网站,浙江建设工程信息网高工评选,自己做网站需要多少资金,温州建设集团招聘信息网站一、了解argocd ArgoCD是一个基于Kubernetes的GitOps持续交付工具#xff0c;应用的部署和更新都可以在Git仓库上同步实现#xff0c;并自带一个可视化界面。本文介绍如何使用GitArgocd方式来实现在k8s中部署和更新应用服务。关于ci这一块这里不多介绍。主要讲解argocd如何实…一、了解argocd ArgoCD是一个基于Kubernetes的GitOps持续交付工具应用的部署和更新都可以在Git仓库上同步实现并自带一个可视化界面。本文介绍如何使用GitArgocd方式来实现在k8s中部署和更新应用服务。关于ci这一块这里不多介绍。主要讲解argocd如何实现cd持续部署。在开始前需要部署一套k8s集群可参考本文连接https://blog.csdn.net/m0_69326428/article/details/144375315?spm1011.2415.3001.5331 工作原理 ArgoCD 的核心理念是 GitOps即以 Git 仓库作为单一的真理源通过自动化的方式将仓库中的应用配置同步到 Kubernetes 集群中。 定义应用: 用户在 Git 仓库中定义应用的 Kubernetes 资源清单并将这些清单文件提交到 Git 仓库。创建 ArgoCD Application: 在 ArgoCD 中创建一个 Application 资源该资源描述了应用在 Git 仓库中的位置以及在 Kubernetes 集群中部署的位置。同步状态监控: ArgoCD Controller 持续监控 Git 仓库中的配置并与当前集群状态进行对比。每次检测到 Git 仓库中的应用配置发生变化时Controller 会自动更新集群中的资源保持与 Git 仓库的一致性。自动同步与手动同步: ArgoCD 支持自动同步和手动同步。自动同步模式下一旦检测到 Git 仓库有变化ArgoCD 会自动更新 Kubernetes 集群中的资源。而在手动同步模式下用户需要手动触发同步操作。回滚功能: 如果应用更新导致问题ArgoCD 提供了回滚功能用户可以轻松恢复到先前的状态 CD 流水线有两种模式Push 和 Pull Push 模式 目前大多数 CI/CD 工具都使用基于 Push 的部署模式例如 Jenkins。这种模式一般都会在 CI 流水线运行完成后执行一个命令比如 kubectl将应用部署到目标环境中。 这种 CD 模式的缺陷很明显 需要在环境安装配置额外管理工具比如 kubectl 需要 Kubernetes 对其进行授权 需要云平台授权 无法感知部署状态。也就无法感知期望状态与实际状态的偏差需要借助额外的方案来保障一致性。 Kubernetes 集群或者云平台对 CI 系统的授权凭证在集群或云平台的信任域之外不受集群或云平台的安全策略保护因此 CI 系统很容易被当成非法攻击的载体。 Pull 模式 Pull 模式会在目标环境中安装一个 Agent例如在 Kubernetes 集群中就靠 Operator 来充当这个 Agent。Operator 会周期性地监控目标环境的实际状态并与 Git 仓库中的期望状态进行比较如果实际状态不符合期望状态Operator 就会更新基础设施的实际状态以匹配期望状态。 只有 Git 的变更可以作为期望状态的唯一来源除此之外任何人都不可以对集群进行任何更改即使你修改了也会被 Operator 还原为期望状态这也就是传说中的不可变基础设施。 目前基于 Pull 模式的 CD 工具有 Argo CDFlux CD 以及 ks-devops。 二、部署argocd github地址https://github.com/argoproj/argo-cd 准备环境 #下载argocd client wget https://github.com/argoproj/argo-cd/releases/download/v2.12.7/argocd-linux-amd64#权限 chmod ux argocd-linux-amd64#移动可执行目录 mv ./argocd-linux-amd64 /usr/local/bin/argocd#验证 argo version#准备yaml文件 wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml修改svc类型 为了方便测试。将svc类型改成NodePort。实际工作中建议使用ingress [rootmaster231 ~]# vim install.yaml ... apiVersion: v1 kind: Service metadata:labels:app.kubernetes.io/component: serverapp.kubernetes.io/name: argocd-serverapp.kubernetes.io/part-of: argocdname: argocd-server spec:# 增加 type: NodePorttype: NodePortports:- name: httpport: 80# 该位置增加访问端口 300xxx (30000-32000)任意 我们设置成30080nodePort: 30080protocol: TCPtargetPort: 8080- name: httpsport: 443protocol: TCPtargetPort: 8080selector:app.kubernetes.io/name: argocd-server ...部署 kubectl create namespace argocd kubectl apply -n argocd -f install.yaml查看pod状态 kubectl get all -n argocd访问 https://10.0.0.231:30080/login查看密码 kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath{.data.password} | base64 -d; echo 密码**** 账号adminargocd客户端命令行工具修改密码 [rootmaster231 bin]# argocd login 10.0.0.231:30080 WARNING: server certificate had error: tls: failed to verify certificate: x509: cannot validate certificate for 10.0.0.231 because it doesnt contain any IP SANs. Proceed insecurely (y/n)? y Username: admin Password: admin:login logged in successfully Context 10.0.0.231:30080 updated[rootmaster231 bin]# argocd account update-password *** Enter password of currently logged in user (admin): *** Enter new password for user admin: *** Confirm new password for user admin: Password updated Context 10.0.0.231:30080 updated[rootlc-master-1 ~]# argocd logout 192.168.0.71:8082 Logged out from 192.168.0.71:8082 [rootmaster231 bin]# argocd login 10.0.0.231:30080 WARNING: server certificate had error: tls: failed to verify certificate: x509: cannot validate certificate for 10.0.0.231 because it doesnt contain any IP SANs. Proceed insecurely (y/n)? y Username: admin Password: admin:login logged in successfully Context 10.0.0.231:30080 updated 三、web界面介绍 设置介绍 添加仓库地址 添加成功 四、创建应用 通过 CLI 来创建应用 在仓库https://gitee.com/ljh00928/test_cherry里有个app目录里面有个 myapp-deployment.yaml 文件 和 myapp-service.yaml 文件用来演示我们 argo cd 的功能 myapp-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: myapp spec:replicas: 1selector:matchLabels:app: myapptemplate:metadata:labels:app: myapptest: c1spec:containers:- image: yankay/dao-2048:latestname: myappports:- containerPort: 8008myapp-service.yaml apiVersion: v1 kind: Service metadata:name: myapp-svc spec:ports:- port: 8009targetPort: 8009type: NodePortselector:app: myapp创建应用 #查看帮助手册 argocd app create --help#部署应用 argocd app create app01 --repo https://gitee.com/ljh00928/test_cherry.git --path app --dest-server https://kubernetes.default.svc --dest-namespace demo1通过 UI 创建应用 同步策略 自动同步允许 Argo CD 自动将 Git 仓库中的应用程序状态同步到 Kubernetes 集群中。 手动同步要求用户通过 Argo CD UI 或 CLI 手动触发同步操作。 由于 Argo CD 支持部署应用到多集群所以如果你要将应用部署到外部集群的时候需要先将外部集群的认证信息注册到 Argo CD 中如果是在内部部署运行 Argo CD 的同一个集群默认不需要配置直接使用 https://kubernetes.default.svc 作为应用的 K8S APIServer 地址即可。 首先列出当前 kubeconfig 中的所有集群上下文 [rootmaster231 ~]# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * kubernetes-adminkubernetes kubernetes kubernetes-admin orbstack从列表中选择一个上下文名称并将其提供给 argocd cluster add CONTEXTNAME比如对于 orbstack 上下文运行 [rootmaster231 ~]# argocd cluster list SERVER NAME VERSION STATUS MESSAGE PROJECT https://kubernetes.default.svc in-cluster 1.23 Successf]ulargocd cluster add orbstack查看yaml文件 apiVersion: argoproj.io/v1alpha1 kind: Application metadata:name: app02 spec:destination:name: namespace: demo2server: https://kubernetes.default.svcsource:path: apprepoURL: https://gitee.com/ljh00928/test_cherry.gittargetRevision: HEADproject: defaultsyncPolicy:automated: nullsyncOptions:- CreateNamespacetrue填写完以上信息后点击页面左上方的 Create 安装即可创建 app02 应用创建完成后可以看到当前应用的处于 OutOfSync 状态 Argo CD 默认情况下每 3 分钟会检测 Git 仓库一次用于判断应用实际状态是否和 Git 中声明的期望状态一致如果不一致状态就转换为 OutOfSync。默认情况下并不会触发更新除非通过 syncPolicy 配置了自动同步 SYNC OPTIONS同步策略 spec:syncPolicy:syncOptions:- Validatefalse- CreateNamespacetrue- PruneLasttrue- ApplyOutOfSyncOnlytrue- Replacefalse- SkipDryRunOnMissingResourcetrue常见的同步选项包括 Validatefalse: 禁用资源的服务器端验证。这在某些自定义资源CRD可能尚未完全定义时非常有用。CreateNamespacetrue: 如果命名空间不存在自动创建它。PruneLasttrue: 在同步过程中最后执行 prune 操作以确保所有资源已经创建。ApplyOutOfSyncOnlytrue: 仅应用那些状态不同步的资源。Replacefalse: 使用 kubectl apply 而不是 kubectl replace 来更新资源。SkipDryRunOnMissingResourcetrue: 在资源缺失时跳过 dry-run 检查 五、部署应用 上面我们创建好了应用但还没有部署所以 namespace、pod、deployment、svc 都没有 使用 CLI 同步 应用创建完成后我们可以通过如下所示命令查看其状态 [rootmaster231 ~]# argocd app get app01 Name: argocd/app01 #应用名称 Project: default Server: https://kubernetes.default.svc #部署的服务 Namespace: demo1 #部署的ns URL: https://10.0.0.231:30080/applications/app01 Source: - Repo: https://gitee.com/ljh00928/test_cherry.git #资源仓库Target: Path: app #仓库里的资源路径 SyncWindow: Sync Allowed Sync Policy: Manual Sync Status: OutOfSync from (30c6f26) #仓库里的资源路径 Health Status: Missing #健康状态GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGEService demo1 myapp-svc OutOfSync Missing apps Deployment demo1 myapp OutOfSync Missin因为 app01 是我们通过命名行创建的ns 写的是 demo1没有设置自动创建。如果你集群上没有这个命名空间需要先手动创建 [rootmaster231 ~]# kubectl create ns demo1 namespace/demo1 created应用程序状态为初始 OutOfSync 状态因为应用程序尚未部署并且尚未创建任何 Kubernetes 资源。要同步部署应用程序可以执行如下所示命令 #同步应用app01 [rootmaster231 ~]# argocd app sync app01 TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE 2025-03-25T15:12:3308:00 Service demo1 myapp-svc OutOfSync Missing 2025-03-25T15:12:3308:00 apps Deployment demo1 myapp OutOfSync Missing 2025-03-25T15:12:3308:00 Service demo1 myapp-svc Synced Healthy 2025-03-25T15:12:3308:00 Service demo1 myapp-svc Synced Healthy service/myapp-svc created 2025-03-25T15:12:3308:00 apps Deployment demo1 myapp OutOfSync Missing deployment.apps/myapp created 2025-03-25T15:12:3308:00 apps Deployment demo1 myapp Synced Progressing deployment.apps/myapp createdName: argocd/app01 Project: default Server: https://kubernetes.default.svc Namespace: demo1 URL: https://10.0.0.231:30080/applications/app01 Source: - Repo: https://gitee.com/ljh00928/test_cherry.gitTarget: Path: app SyncWindow: Sync Allowed Sync Policy: Manual Sync Status: Synced to (30c6f26) Health Status: ProgressingOperation: Sync Sync Revision: 30c6f26bc59ce7f0605caac7c43e5316c55c89ce Phase: Succeeded Start: 2025-03-25 15:12:33 0800 CST Finished: 2025-03-25 15:12:33 0800 CST Duration: 0s Message: successfully synced (all tasks run)GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGEService demo1 myapp-svc Synced Healthy service/myapp-svc created apps Deployment demo1 myapp Synced Progressing deployment.apps/myapp created此命令从 Git 仓库中检索资源清单并执行 kubectl apply 部署应用执行上面命令后 guestbook 应用便会运行在集群中了现在我们就可以查看其资源组件、日志、事件和评估其健康状态了。 #再次查看app01状态 [rootmaster231 ~]# argocd app get app01 Name: argocd/app01 Project: default Server: https://kubernetes.default.svc Namespace: demo1 URL: https://10.0.0.231:30080/applications/app01 Source: - Repo: https://gitee.com/ljh00928/test_cherry.gitTarget: Path: app SyncWindow: Sync Allowed Sync Policy: Manual Sync Status: Synced to (30c6f26) Health Status: Progressing #状态为 Progressing进行中了GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGEService demo1 myapp-svc Synced Healthy service/myapp-svc created apps Deployment demo1 myapp Synced Progressing deployment.apps/myapp created等一会在去查看状态 [rootmaster231 ~]# argocd app get app01 Name: argocd/app01 Project: default Server: https://kubernetes.default.svc Namespace: demo1 URL: https://10.0.0.231:30080/applications/app01 Source: - Repo: https://gitee.com/ljh00928/test_cherry.gitTarget: Path: app SyncWindow: Sync Allowed Sync Policy: Manual Sync Status: Synced to (8a1ee3f) Health Status: Healthy #状态为 Healthy健康的了GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGEService demo1 myapp-svc Synced Healthy service/myapp-svc unchanged apps Deployment demo1 myapp Synced Healthy deployment.apps/myapp unchanged然后查看 pod、deploy、svc [rootmaster231 ~]# kubectl -n demo1 get all NAME READY STATUS RESTARTS AGE pod/myapp-6449b755f5-5fkzf 1/1 Running 0 2m26sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/myapp-svc NodePort 10.200.5.218 none 8009:31922/TCP 22mNAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/myapp 1/1 1 1 22mNAME DESIRED CURRENT READY AGE replicaset.apps/myapp-5f748b96c 0 0 0 22m replicaset.apps/myapp-6449b755f5 1 1 1 7m18s使用 UI 界面同步 查看资源状态 也可以查看日志、event 等信息 查看 pod、deploy、svc。都运行正常 [rootmaster231 ~]# kubectl -n demo2 get all NAME READY STATUS RESTARTS AGE pod/myapp-6449b755f5-4tl7m 1/1 Running 0 7m20sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/myapp-svc NodePort 10.200.164.64 none 8009:31185/TCP 7m20sNAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/myapp 1/1 1 1 7m20sNAME DESIRED CURRENT READY AGE replicaset.apps/myapp-6449b755f5 1 1 1 7m20s六、更新应用 上面我们已经部署好了两个应用 app01 和 app02现在来更改一下 myapp-deployment.yaml 文件将镜像改为green 再次点击sync同步按钮可以看见有两个rs,一个副本数为 0一个副本数为 1 [rootmaster231 ~]# kubectl -n demo2 get rs NAME DESIRED CURRENT READY AGE myapp-6449b755f5 0 0 0 19m myapp-65c5d9cf87 1 1 1 4m3s七、回滚 上面我们的 app02 已经有两个版本了现在最新的是 geen版本我们也可以可以回滚到第一个版本 现在是这个版本 在回滚的时候需要禁用 AUTO-SYNC 自动同步点击历史和回滚。找到要回滚的版本点击 Rollback 这时候已经回滚到第一个版本了 #回滚前 [rootmaster231 ~]# kubectl -n demo2 get rs NAME DESIRED CURRENT READY AGE myapp-6449b755f5 0 0 0 32m myapp-65c5d9cf87 1 1 1 16m#回滚后 [rootmaster231 ~]# kubectl -n demo2 get rs NAME DESIRED CURRENT READY AGE myapp-6449b755f5 1 1 1 35m myapp-65c5d9cf87 0 0 0 19m查看 podsvcdeployment [rootmaster231 ~]# kubectl -n demo2 get all NAME READY STATUS RESTARTS AGE pod/myapp-6449b755f5-252l9 1/1 Running 0 3m10sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/myapp-svc NodePort 10.200.164.64 none 8009:31185/TCP 36mNAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/myapp 1/1 1 1 36mNAME DESIRED CURRENT READY AGE replicaset.apps/myapp-6449b755f5 1 1 1 36m replicaset.apps/myapp-65c5d9cf87 0 0 0 20m
http://www.zqtcl.cn/news/499362/

相关文章:

  • 网站被黑 禁止js跳转企业为什么要建立集团
  • 建设网站的各种问题上海品牌女装排行榜前十名
  • seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技商城网站备案能通过吗
  • 江门网站建设推广策划网站改版的宣传词
  • 网站建设三大部分国外购物平台网页界面设计
  • 公司商城网站建设方案wordpress旗舰
  • 京东云服务器怎么做网站企业宣传网站怎么做
  • 如何自学网站建设云南网爱我国防知识竞赛
  • 什么网站可以做投资设计接单
  • 网站内容批量替换桐乡网站制作
  • 怎么免费做网站教程制作xml网站地图文件
  • 广西智能网站建设哪家好网红商城
  • 关于建设网站的情况说明书wordpress 在线检测
  • 帝国cms 网站迁移错版怎样做心理咨询网站
  • 烟台建网站wordpress重写规则
  • 上海网站建设怎么赚钱平顶山网站建设服务公司
  • 导航网站如何被百度收录广告设计在线设计
  • 雪域什么网站是做电影的苏州优化方式
  • 设计网站多少钱手机百度助手
  • 驾校网上约车网站开发不会做网站如何做seo
  • 企业做推广可以发哪些网站宜兴埠网站建设
  • 网站后台文章添加成功 不显示公司设计网站建设合同
  • 后端开发需要掌握哪些知识潍坊优化公司
  • 专业手机网站制作哪家好wordpress wp-polls
  • 网站建设前分析网页制作素材按钮
  • 做视频网站怎么对接云盘松江新城网站建设
  • 温州阿里巴巴网站建设企业宣传片怎么拍
  • 淮阳住房城乡建设局网站阿里巴巴做国际网站要多少钱
  • 电子商务个人网站可以备案吗短网址还原
  • 网站内容由什么组成部分组成部分电子商务网站建设主管的策划书