CICD

Articles

    FAQ

    ArgoCD sync 报 ‘context deadline exceeded’

    现象argocd app sync 一直卡住,最终报 context deadline exceeded

    原因:ArgoCD repo server git clone 超时(国内网络访问 GitHub 慢)。

    解法

    1. 配置 GitHub 代理加速:
      kubectl -n argocd exec deploy/argo-cd-argocd-repo-server -- sh -c '
        cat > /tmp/gitconfig << "EOF"

    [url “https://ghfast.top/https://github.com/”] insteadOf = https://github.com/ [http] postBuffer = 2g version = HTTP/1.1 lowSpeedLimit = 0 lowSpeedTime = 999 [core] deltaBaseCacheLimit = 1g EOF'

    2. 设置 `NO_PROXY` 加上 `ghfast.top`:
    ```bash
    kubectl -n argocp set env deploy/argo-cd-argocd-repo-server NO_PROXY="...,ghfast.top"
    kubectl -n argocp set env deploy/argo-cd-argocd-repo-server GIT_CONFIG_GLOBAL=/tmp/gitconfig
    1. 或在集群内搭 Git 镜像(Gitea),ArgoCD 指向内网。
    ArgoCD sync hook Job 一直 Running 不完成

    现象:以 Job 作为 Sync hook 的 App,Job 长时间处于 Running 状态。

    原因:Job 内的 init container 或 container 执行受阻。

    排查

    # 查看 Job pod 状态
    kubectl -n <namespace> get pods -l job-name=<job-name>
    # 查看 init container 日志
    kubectl -n <namespace> logs <pod-name> -c <init-container-name>

    常见解决

    • Init container 拉代码超时 → 同上 Git 加速方案
    • Job 容器权限不足 → 检查 ServiceAccount / PSP
    ArgoCD Application 状态显示 Unknown

    原因:ArgoCD repo server 无法生成 manifest(网络/超时/语法错误)。

    排查步骤

    # 查看具体错误
    kubectl -n argocd get application <app-name> -o json | jq .status.conditions
    
    # 重启 repo server 清理缓存
    kubectl -n argocd rollout restart deploy/argo-cd-argocd-repo-server
    
    # 手动触发刷新
    argocd app sync <app-name>
    Helm chart 推送到 OCI 仓库
    # 登录
    helm registry login ghcr.io -u <username>
    
    # 打包
    helm package ./my-chart
    
    # 推送
    helm push my-chart-0.1.0.tgz oci://ghcr.io/<username>/helm-charts

    拉取 OCI 仓库

    helm pull oci://ghcr.io/<username>/helm-charts/my-chart --version 0.1.0