ArgoCD(四)--Application管理

1.3 Application管理

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

ArgoCD(四)--Application管理_第1张图片

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上查看是否创建成功:

ArgoCD(四)--Application管理_第2张图片

命令行同样可以看到:

argocd app list
  • 通过argocd web创建application

ArgoCD(四)--Application管理_第3张图片

ArgoCD(四)--Application管理_第4张图片

点击创建

ArgoCD(四)--Application管理_第5张图片

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

ArgoCD(四)--Application管理_第6张图片

3.3.2 自动同步策略

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

ArgoCD(四)--Application管理_第7张图片

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 
      
    • 设定同步策略

      启用自动同步

      argocd app set  --sync-policy automated
      

      自动修剪

      argocd app set  --auto-prune
      

      启动自我修复:

      argocd app set  --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  --sync-option ApplyOutOfSyncOnly={true|false}
      

      2、配置文件定义:

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

      资源修剪传播策略

      命令:

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

      是否同步完在进行修剪

      命令:

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

      是否replace而非apply

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

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

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

      是否忽略差异

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

      是否自动创建名称空间

      argocd app set  --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 添加

    ArgoCD(四)--Application管理_第8张图片

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

你可能感兴趣的:(Argo,argocd,kubernetes,github)