帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 多集群舰队
  6. GitOps
  7. GitOps FAQ

GitOps FAQ

  • GitOps
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

本文介绍使用GitOps时的常见问题及解决方案。

  • GitOps如何连接私有Git仓库?

  • GitOps控制台上的Applications如何展示分组?

  • 运维人员如何控制应用发布?

  • AgroCD的repo-server出现Out of diskspace报错怎么办?

  • 如何避免GitOps Application跟踪到非应用资源?

GitOps如何连接私有Git仓库?

私有Git仓库通常因安全问题无法开通公网访问,因此使用ACK One GitOps连接私有Git仓库时,需解决网络连通问题,并完成相关配置。

步骤一、配置域名解析,使GitOps可访问私有Git仓库

以下以Git仓库域名git.abc.cn为例进行配置。

  1. 连通云下和云上ACK One VPC网络。连接方式,请参见连接本地IDC和云上VPC。

  2. 使用内网DNS解析来实现VPC内域名解析。

    1. 登录云解析 DNS控制台,在内网DNS解析 (PrivateZone)页面单击用户域名页签,然后单击添加域名(Zone),在弹出的面板中配置以下参数,单击确定。

      • 内置权威域名 (Zone):abc.cn(以Git仓库域名git.abc.cn为例)

      • 子域名递归解析代理:开启

      • 域名生效范围 > 阿里云VPC内网:选择ACK One绑定的VPC

    2. 在域名列表中找到刚刚创建的PrivateZone,在其操作列单击解析记录,进入解析记录页面。

    3. 在解析记录页面单击添加记录,在弹出的面板中配置以下参数,然后单击确定。

      • 记录类型:A

      • 主机记录:git(以Git仓库域名git.abc.cn为例)

      • 记录值:填写内部Git仓库的IP地址

步骤二、通过控制台或CLI连接Git仓库

域名解析配置完成后,ACK One GitOps就可以访问到对应的私有Git仓库,您可以通过GitOps控制台/CLI连接Git仓库,用于发布应用。具体操作请参见Private Repositories。

GitOps控制台上的Applications如何展示分组?

当Applications数量较多时,分组展示可提升使用体验。在GitOps控制台左侧菜单栏,您可以:

  • 按Favorites Only、SYNC STATUS、HEALTH STATUS筛选;

  • 按LABELS、PROJECTS、CLUSTERS、NAMESPACES、AUTO SYNC分组展示。

image

运维人员如何控制应用发布?

在应用发布过程中,尤其在自动化CI/CD流水线中,往往需要控制发布,您可以通过以下方式进行控制:

  • 使用ManualSync模式的应用。运维人员在代码推送后,检查和确认应用是否符合要求,符合要求后手动点击Sync同步应用到目标集群。

  • 修改应用部署仓库中的镜像版本:在非自动化监测镜像仓库镜像变化时,运维人员需要对镜像进行确认。确认无误后,可以手动修改应用部署仓库中的镜像版本,以自动触发ArgoCD的应用同步。

  • 建立code review机制:在自动化CI/CD流水线中,对业务代码仓库建立code review机制。运维人员code review通过后合并代码,自动触发CI build&push镜像,ArgoCD自动监测镜像变更,并自动发布到配置AutoSync的环境,您也可以手动发布到ManualSync的环境。

AgroCD的repo-server出现Out of diskspace报错怎么办?

问题现象

通过kubectl -nargocd logs xxxx命令查看日志,看到repo-server出现如下报错信息:

'git checkout --force xxx' failed exit status 128: error: unable to write file templates/deployment.yaml\nfat al: sha1 file '/tmp/_argocd-repo/xxx/.git/index.lock' write error. Out of diskspace...

解决方案

该问题是.git/index.lock 文件写入失败是由于磁盘空间不足引起的,可通过增加ACK One GitOps ArgoCD组件的Pod的临时存储来解决。当前ACK One GitOps ArgoCD组件使用ECI运行,默认具有30GiB的临时存储空间,增加临时存储空间的步骤如下,具体费用请参见临时存储空间计费。

  1. 从ACK One控制台获取舰队实例的KubeConfig,并通过Kubectl连接至舰队实例。具体操作,请参见通过kubectl连接Kubernetes集群。

  2. 在对应Deployment的Pod Template中,为Pod添加annotation k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi",其中临时存储空间大小可自定义。

    • 如果GitOps处于默认模式,在Deployment argocd-server中添加。

      kubectl edit deployment -nargocd argocd-server
    • 如果GitOps处于高可用模式,在Deployment argocd-dex-imageupdate-repo-server中添加。

      kubectl edit deployment -nargocd argocd-dex-imageupdate-repo-server
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      ...
    ...
    spec:
      template:
        metadata:
          annotations:
            # 在默认30GiB的基础上增加20GiB,共50GiB。增加的临时存储空间大小可自定义。
            k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"
          ...
        ...
      ...

如何避免GitOps Application跟踪到非应用资源?

背景信息

Argo CD使用labelapp.kubernetes.io/instance来追踪K8s资源,当资源有这个label,并且值和Application Name一致,就会被Application追踪到,造成应用的状态一直处于OutOfSync,也可能会一直删除这个非应用资源,为了避免这类非预期行为,有以下两种解决方案。

解决方案

  • 方案1:在舰队的argocd/argocd-cm中添加resource.exclusions来忽略被追踪到的非应用资源,如下配置可忽略CiliumIdentity资源。

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  labels:
    app.kubernetes.io/name: argocd-cm
    app.kubernetes.io/part-of: argocd
data:
  ...
  resource.exclusions: |
    - apiGroups:
      - cilium.io
      kinds:
      - CiliumIdentity
      clusters:
      - "*"
  • 方案2:在舰队的argocd/argocd-cm中添加自定义标签application.instanceLabelKey: argocd.argoproj.io/instance。添加后,使用Argo CD下发的应用的资源则会包含labelargocd.argoproj.io/instance,从而不会追踪到仅有labelapp.kubernetes.io/instance的资源。配置生效后,现有的Application状态可能显示为OutOfSync。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-cm
      labels:
        app.kubernetes.io/name: argocd-cm
        app.kubernetes.io/part-of: argocd
    data:
      ...
      application.instanceLabelKey: argocd.argoproj.io/instance
相关文章

仓库管理 2025-04-18 18:11

本文介绍如何在GitOps系统中,通过ArgoCD CLI和ArgoCD控制台方式添加、查看及删除Git源仓库和Helm源仓库。 前提条件 已登录GitOps系统。具体操作,请参见登录GitOps系统

GitOps概述 2025-04-18 18:11

GitOps是将Git仓库作为Kubernetes集群中部署应用的唯一来源,通过自动化配置基础设施实现应用的持续部署。Fleet实例托管了ArgoCD,并集成多集群能力,实现多集群的GitOps持续交付,满足应用的高可用部署、系统组件多集群分发等需求。本文介绍GitOps和ACK One GitOp

登录GitOps系统 2025-04-18 18:11

本文介绍ACK One GitOps用户如何登录GitOps系统。 前提条件

Application管理 2025-04-18 18:11

本文介绍如何使用GitOps系统管理应用,包括创建部署单个应用、更新和回滚应用。 前提条件

GitOps快速入门 2025-04-18 18:11

您可以在ACK One舰队(Fleet)实例中通过GitOps将Git repositories作为应用来源,对多种编排方式(YAML manifests目录、Helm Charts、Kustomize等)的应用实现版本管理、多集群分发和持续部署。GitOps完全兼容社区ArgoCD的使用方式,并提

开通公网访问GitOps 2025-04-18 18:11

在ACK One的集群中需要通过ArgoCD提交或访问应用时,您可以开通GitOps公网访问,从而能更便捷地访问GitOps。本文介绍如何在Fleet实例中开通GitOps公网访问。 前提条件 已开启舰队管理功能

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1