为什么 helm upgrade --install 在以前的安装失败时失败?
Why helm upgrade --install failed when previous install is failure?
这是舵柄版本:
> helm version --tiller-namespace data-devops
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
之前的helm安装失败:
helm ls --tiller-namespace data-devops
NAME REVISION UPDATED STATUS CHART NAMESPACE
java-maven-app 1 Thu Aug 9 13:51:44 2018 FAILED java-maven-app-1.0.0 data-devops
当我尝试使用此命令再次安装它时,它失败了:
helm --tiller-namespace data-devops upgrade java-maven-app helm-chart --install \
--namespace data-devops \
--values helm-chart/values/stg-stable.yaml
Error: UPGRADE FAILED: "java-maven-app" has no deployed releases
如果之前的安装失败,helm upgrade --install
命令会不会失败?我期待它强制安装。有什么想法吗?
这一段时间以来一直是 helm 问题。它只会影响第一次安装 chart 失败的情况,并且直到 helm 2.7 需要手动删除失败的版本,然后才能更正问题并再次安装。但是现在有一个 --force 标志可用于解决这种情况 - https://github.com/helm/helm/issues/4004
补充一下...
我经常在 Helm 3 中看到 Error: UPGRADE FAILED: "my-app" has no deployed releases
错误。
几乎每次,错误都在 kubectl
、aws-cli
或 aws-iam-authenticator
中,而不是 Helm。好像很多问题都冒出来这个异常,不太理想。
要诊断真正的问题,您可以 运行 在这些工具中的一个或多个中使用简单的命令(如果您正在使用它们),您应该能够快速诊断您的问题。
例如:
aws-cli - aws --version
确保安装了 cli。
aws-iam-authenticator - aws-iam-authenticator version
检查是否正确安装。
kubectl - kubectl version
将显示该工具是否已安装。
kubectl - kubectl config current-context
将显示您是否提供了可以连接到 Kubernetes 的有效配置。
尝试:
helm delete --purge <deployment>
这样就可以了
对于 helm3 及更高版本,您需要卸载例如
helm uninstall <deployment> -n <namespace>
部署意外失败时会发生这种情况。
首先,查看helm发布部署状态;
❯ helm ls -n $namespace
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
您很可能看不到有问题的 helm 部署。因此,使用 -a
选项检查部署状态;
❯ helm list -n $namespace -a
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
$release_name $namespace 7 $update_date pending-upgrade $chart_name $app_version
如您所见,部署停留在 pending-upgrade
状态。
检查 helm 部署秘密;
❯ kubectl get secret -n $namespace 42s ⎈ eks_non-prod/monitoring
NAME TYPE DATA AGE
sh.helm.release.v1.$namespace.v1 helm.sh/release.v1 1 2d21h
sh.helm.release.v1.$namespace.v2 helm.sh/release.v1 1 21h
sh.helm.release.v1.$namespace.v3 helm.sh/release.v1 1 20h
sh.helm.release.v1.$namespace.v4 helm.sh/release.v1 1 19h
sh.helm.release.v1.$namespace.v5 helm.sh/release.v1 1 18h
sh.helm.release.v1.$namespace.v6 helm.sh/release.v1 1 17h
sh.helm.release.v1.$namespace.v7 helm.sh/release.v1 1 16h
并描述最后一个;
❯ kubectl describe secret sh.helm.release.v1.$namespace.v7
Name: sh.helm.release.v1.$namespace.v7
Namespace: $namespace
Labels: modifiedAt=1611503377
name=$namespace
owner=helm
status=pending-upgrade
version=7
Annotations: <none>
Type: helm.sh/release.v1
Data
====
release: 792744 bytes
您会看到密钥与部署失败的状态相同。所以删除秘密;
❯ kubectl delete secret sh.helm.release.v1.$namespace.v7
现在,您应该可以升级 helm 版本了。升级后可以查看helm release状态;
❯ helm list -n $namespace -a
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
$release_name $namespace 7 $update_date deployed $chart_name $app_version
这是舵柄版本:
> helm version --tiller-namespace data-devops
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
之前的helm安装失败:
helm ls --tiller-namespace data-devops
NAME REVISION UPDATED STATUS CHART NAMESPACE
java-maven-app 1 Thu Aug 9 13:51:44 2018 FAILED java-maven-app-1.0.0 data-devops
当我尝试使用此命令再次安装它时,它失败了:
helm --tiller-namespace data-devops upgrade java-maven-app helm-chart --install \
--namespace data-devops \
--values helm-chart/values/stg-stable.yaml
Error: UPGRADE FAILED: "java-maven-app" has no deployed releases
如果之前的安装失败,helm upgrade --install
命令会不会失败?我期待它强制安装。有什么想法吗?
这一段时间以来一直是 helm 问题。它只会影响第一次安装 chart 失败的情况,并且直到 helm 2.7 需要手动删除失败的版本,然后才能更正问题并再次安装。但是现在有一个 --force 标志可用于解决这种情况 - https://github.com/helm/helm/issues/4004
补充一下...
我经常在 Helm 3 中看到 Error: UPGRADE FAILED: "my-app" has no deployed releases
错误。
几乎每次,错误都在 kubectl
、aws-cli
或 aws-iam-authenticator
中,而不是 Helm。好像很多问题都冒出来这个异常,不太理想。
要诊断真正的问题,您可以 运行 在这些工具中的一个或多个中使用简单的命令(如果您正在使用它们),您应该能够快速诊断您的问题。
例如:
aws-cli - aws --version
确保安装了 cli。
aws-iam-authenticator - aws-iam-authenticator version
检查是否正确安装。
kubectl - kubectl version
将显示该工具是否已安装。
kubectl - kubectl config current-context
将显示您是否提供了可以连接到 Kubernetes 的有效配置。
尝试:
helm delete --purge <deployment>
这样就可以了
对于 helm3 及更高版本,您需要卸载例如
helm uninstall <deployment> -n <namespace>
部署意外失败时会发生这种情况。
首先,查看helm发布部署状态;
❯ helm ls -n $namespace
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
您很可能看不到有问题的 helm 部署。因此,使用 -a
选项检查部署状态;
❯ helm list -n $namespace -a
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
$release_name $namespace 7 $update_date pending-upgrade $chart_name $app_version
如您所见,部署停留在 pending-upgrade
状态。
检查 helm 部署秘密;
❯ kubectl get secret -n $namespace 42s ⎈ eks_non-prod/monitoring
NAME TYPE DATA AGE
sh.helm.release.v1.$namespace.v1 helm.sh/release.v1 1 2d21h
sh.helm.release.v1.$namespace.v2 helm.sh/release.v1 1 21h
sh.helm.release.v1.$namespace.v3 helm.sh/release.v1 1 20h
sh.helm.release.v1.$namespace.v4 helm.sh/release.v1 1 19h
sh.helm.release.v1.$namespace.v5 helm.sh/release.v1 1 18h
sh.helm.release.v1.$namespace.v6 helm.sh/release.v1 1 17h
sh.helm.release.v1.$namespace.v7 helm.sh/release.v1 1 16h
并描述最后一个;
❯ kubectl describe secret sh.helm.release.v1.$namespace.v7
Name: sh.helm.release.v1.$namespace.v7
Namespace: $namespace
Labels: modifiedAt=1611503377
name=$namespace
owner=helm
status=pending-upgrade
version=7
Annotations: <none>
Type: helm.sh/release.v1
Data
====
release: 792744 bytes
您会看到密钥与部署失败的状态相同。所以删除秘密;
❯ kubectl delete secret sh.helm.release.v1.$namespace.v7
现在,您应该可以升级 helm 版本了。升级后可以查看helm release状态;
❯ helm list -n $namespace -a
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
$release_name $namespace 7 $update_date deployed $chart_name $app_version