mog*_*man 5 kubernetes kubernetes-helm
有没有办法使用 Helm 显示已安装图表的可用图表更新?
例如,我有一个“web-app”图表安装为“测试”,版本为 1.2.4,但在我的存储库中,1.2.7 可用:
# helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
test default 1 2020-06-04 07:33:07.822952298 +0000 UTC deployed web-app-1.2.4 0.0.1
# helm search repo myrepo
NAME CHART VERSION APP VERSION DESCRIPTION
myrepo/ingress 0.1.0 1.16.0 A Helm chart for Kubernetes
myrepo/sandbox 1.2.3 1.16.0 A Helm chart for Kubernetes
myrepo/web-app 1.2.7 0.0.1 A Helm chart for Kubernetes
Run Code Online (Sandbox Code Playgroud)
我的目标是编写一个脚本来发送任何需要更新的图表的通知,以便我可以查看并运行更新。我很高兴听到任何可以做到这一点的 devOps 风格的工具,
截至 2022 年 8 月 28 日,无法知道已安装的 Helm Chart 来自哪个存储库。
如果您希望能够进行某种自动化,当前您需要跟踪哪个图表来自外部哪个存储库的信息。
示例包括:在源代码管理中存储配置、将图表安装为 argo 应用程序(如果您使用的是 argocd)、两者的组合等。
现在,由于这个问题没有描述任何这些方法的使用,我将仅做出假设并根据我提到的方法给出一个示例。
假设您将所有 helm 图表存储为源代码管理中某些本地图表的依赖项。
一个例子是Chart.yaml这样的:
apiVersion: v2
name: chart-of-charts
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
dependencies:
- name: some-chart
version: 0.5.1
repository: "https://somechart.io"
- name: web-app
version: 0.2.2
repository: "https://myrepo.io"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以做的是遍历依赖项并执行查找以比较 .yaml 中的版本与可用版本。
bash 脚本的示例:
#!/bin/bash
# requires:
# - helm
# - yq (https://github.com/mikefarah/yq)
chart = Chart.yaml
length=$(yq '.dependencies | length' $chart)
for i in $(seq $length $END); do
iter=$(($i-1))
repo=$(yq .dependencies[$iter].repository $chart)
name=$(yq .dependencies[$iter].name $chart)
version=$(yq .dependencies[$iter].version $chart)
# only if this app points to an external helm chart
if helm repo add "repo$iter" $repo > /dev/null 2>&1
then
available_version=$(helm search repo "repo$iter/$name" --versions | sed -n '2p' | awk '{print $2}')
if [ "$available_version" != "$version" ]; then
echo APP: $(echo $chart | sed 's|/Chart.yaml||')
echo repository: $repo
echo chart name: $name
echo current version: $version Available version: $available_version
echo
fi
fi
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1674 次 |
| 最近记录: |