ArgoCD(四)--Application管理

1.3 Application管理

先导入一个测试的repo在本地gitlab(gitlab.icloud2native.com),方便测试。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NF4oNdFu-1686033859307)(images\image-20230117174515442.png)]

1.3.1 创建application

  • 通过argocd cli创建application

通过argocd 的命令行可以创建application

argocd app create guestbook --repo http://code.gitlab.svc.cluster.local/root/argocd-example-apps.git  --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

从argocd WEB UI上查看是否创建成功:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fWA4GBCn-1686033859308)(images\image-20230117204700142.png)]

命令行同样可以看到:

argocd app list
  • 通过argocd web创建application

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jeUu8GNC-1686033859308)(images/image-20230117205030445.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwuaReBw-1686033859308)(images\image-20230117205221820.png)]

点击创建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bmmZwR7g-1686033859309)(images\image-20230117205529104.png)]

因为我们同步策略为auto,所以当修改配置文件,理论上会自动同步部署新版本,将image版本改为0.8.1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oVJhED4o-1686033859309)(images\image-20230117220213287.png)]

3.3.2 自动同步策略

  • 自动同步策略允许ArgoCD在检测到GitRepo与实际状态之间存在差异时自动启动同步策略操作
    • Prune Resource(自动修剪):集群上某个资源在GitRepo中找不到对应的的配置时,自动删除集群上的该资源;
    • Self Heal(自愈):因各种原因(如手动修改)集群上的实时状态而导致与GitRepo不匹配时,自动将实际状态与GitRepo的期望状态同步;
  • 注意事项
    • 自动同步仅发生在applicatin处于OutOfSync状态时,ArgoCD并不会对处于synced或Error状态的Application执行自动同步;
    • 对于GitRepo上的一次提交,自动同步仅会执行一次,除非同时启用Self Heal机制;
    • 启用了自动同步的application不支持rollbacck

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zNB0zzFR-1686033859309)(images\image-20230118154825135.png)]

3.3.3 同步选项

  • 同步选项(Sync Options)用于禁用或启用同步过程中的某些特性

    • ApplyOutSyncOnly

      仅对那些处于OutOfSync状态的资源执行同步操作;

    • PrunePropagationPolicy

      资源修剪传播策略,默认使用foreground策略,另外可选的策略还有backgroud和orphan

    • PruneLast

      在同步操作的最后在执行修剪操作,即其他资源已经部署且转为健康状态后,进行修剪

    • Replace

      对资源的修改以replace方式进行,而非默认的apply

    • FailOnSharedResource

      默认的同步策略操作不会考虑GitRepo中定义的资源是否已经被其他Application所使用,将该选项设置为true,意味在发现资源已经被其他Application所使用时,将同步状态设置为fail

    • RespectIgnoreDifferences

      在同步阶段忽略期望状态的某些字段

    • CreateNamespaces

      创建缺失的名称空间

    • Validation

      是否执行资源规范格式的校验,相当于"kubectl apply --validate={true|false}",默认为true

3.3.4 使用argocd CLI管理Application

  • 管理Application的命令为"argocd app"

  • 子命令

    • 基础命令:create、delete、edit、get、list
    • 日常管理命令:diff、logs、sync、rollback、history、terminate-op
    • 其他管理命令:manifests、delete-resource、patch、patch-resource、unset、wait
  • 向ArgoCD上添加Application

    • argocd app create APPNAME [flags]
    • 常用的flags
      1. –repo string: Git Repository URL
      2. –path string: Git Repository中含有配置文件的子目录路径
      3. –directory-recurse:对目录进行递归
      4. –revision srting :要使用的revision,通常指branch、tag、commit
      5. -f --file string:部署application用到的额配置文件,优先级高于–repo --path
      6. –release-name string: 部署为Helm Charts时,为其指定的release名称
      7. –project string:隶属的Project,默认为default
      8. –dest-server string : 目标kubernetes集群的URL(API Server的URL)
      9. –dest-namespace string: 目标名称空间
  • Application示例

    • 手动执行sync

      argocd app sync <appname>
      
    • 设定同步策略

      启用自动同步

      argocd app set <APPNAME> --sync-policy automated
      

      自动修剪

      argocd app set <APPname> --auto-prune
      

      启动自我修复:

      argocd app set <APPNAME> --self-heal
      
    • 设定同步选项

      禁止修剪特定的资源,可以子啊特定资源的yaml文件下面添加如下:

      metadata:
        annotations:
          argocd.argoproj.io/sync-options: Prune=false
      

      禁用kubectl验证,可以在特定的资源的yaml文件下面添加如下:

      metadata:
        annotations:
           argocd.argoproj.io/sync-options: Validate=false
      

      有选择性的执行同步(二选一):

      1、命令:

      argocd app set <APPNAME> --sync-option ApplyOutOfSyncOnly={true|false}
      

      2、配置文件定义:

      apiVersion: argoproj.io/v1alpha1
      kind: Application
      spec:
        syncPolicy:
          syncOptions: 
          - ApplyOutOfSyncOnly=true
      

      资源修剪传播策略

      命令:

      argocd app set <APPNAME> --sync-option PrunePropagationPolicy={foreground|background|orphan}
      

      是否同步完在进行修剪

      命令:

      argocd app set <APPNAME> --sync-option PruneLast={true|false}
      

      是否replace而非apply

      argocd app set <APPNAME> --sync-option Replace={true|false}
      

      若存在共享资源,是否将同步置为Fail

      argocd app set <APPNAME> --sync-option FailOnSharedResource={true|false} 
      

      是否忽略差异

      argocd app set <APPNAME> --sync-option RespectIgnoreDifferences={true|false} 
      

      是否自动创建名称空间

      argocd app set <APPNAME> --sync-option CreateNamespace={true|false}
      

3.3.5 管理Git Repo

  • 命令行添加repo

    • argocd repo add REPOURL [flags]

    • 常用选项

      ◆–name string:当前Repo的名称

      ◆–ssh-private-key-path string:用于访问Git Repo的SSH私钥文件路径

      ◆–insecure-ignore-host-key:不校验host key

      ◆–insecure-skip-server-verification:不校验host key和server certificate

      ◆–username string:用户名

      ◆–password string:密码

      ◆–project string:Repo所属的Project

      ◆–type string:Repo的类型

  • argocd web ui 添加

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jZIw11rG-1686033859310)(images\image-20230118165940179.png)]

3.3.6 管理Cluster

  • 添加cluster

  • argocd cluster add CONTEXT [flags]

  • 常用选项

​ ◆–name string:Cluster的标识

		◆--in-cluster:ArgoCD自身运行在的Kubernetes集群,访问地址为https://kubernetes.default.svc; 

​ ◆–kubeconfig string:使用指定的kubeconfig文件

​ ◆–namespace stringArray:目标名称空间

​ ◆–project string:所属的Project

​ ◆–service-account string:使用的ServiceAccount

  • 其它命令

  • get

  • list

  • rm

  • rotate-auth

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值