1 2 3 4 5 6 7 |
$ helmfile apply -e prod ~省略~ STDERR: Error: UPGRADE FAILED: unable to build kubernetes objects from current release manifest: [resource mapping not found for name: "hoge" namespace: "" from "": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta1" ensure CRDs are installed first, resource mapping not found for name: "hoge" namespace: "" from "": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta1" ensure CRDs are installed first] |
上記のようにHelmfile化してapplyすると autoscaling/v2beta1
が利用できなくなったとイレギュラーな事象が起きたため、 autoscaling/v2
にバージョンアップする必要がある。対応は以下となる。
https://helm.sh/docs/topics/kubernetes_apis/#updating-api-versions-of-a-release-manifest
- helm listでバージョンを確認
1 2 3 4 5 6 7 8 9 10 |
$ kubectl --context hoge get secret -l owner=helm -n hoge | awk '{print $1}' | grep -v NAME |grep hoge sh.helm.release.v1.hoge-prod.v10 sh.helm.release.v1.hoge-prod.v11 sh.helm.release.v1.hoge-prod.v12 sh.helm.release.v1.hoge-prod.v13 $ helm list --kube-context hoge --namespace hoge | grep hoge hoge-prod hoge 13 2023-03-27 11:26:52.992506 +0900 JST deployed hoge-0.48.4 2.5.0 $ kubectl --context hoge get hpa --all-namespaces -oyaml #yamlでも出力ができる |
- 上記のバージョンからSecretをyamlとして出力する
※予めバックアップすること
1 |
$ kubectl --context hoge get secret sh.helm.release.v1.hoge-prod.v13 -n hoge -o yaml > ~/Desktop/v13_release_20231013.yaml |
-
decode
autoscaling/v2beta1
から autoscaling/v2
に置換する。
1 |
$ cat v13_release_20231013.yaml | ggrep -oP '(?<=release: ).*' | base64 -d | base64 -d | gzip -d > v13_release.data.decoded |
- encode
下記encodeされたSecretの値をコピーしたらv13_release_20231013.yamlに入れ替えて、new-v13_release_20231013.yamlとして名前変更をする
1 |
$ cat v13_release.data.decoded | gzip | base64 | base64 |
- 旧ファイルと新ファイルをdiff確認するためにmanifestの部分を出力する
1 2 3 4 5 |
$ cat v13_release_20231013.yaml | yq .data.release | base64 -d | base64 -d | zcat | jq > v13_release_20231013.json $ cat new-v13_release_20231013.yaml | yq .data.release | base64 -d | base64 -d | zcat | jq > new-v13_release_20231013.json $ cat v13_release_20231013.json | jq '.manifest' -r > v13_release_20231013.manifest.yaml $ cat new-v13_release_20231013.json | jq '.manifest' -r > new-v13_release_20231013.manifest.yaml |
- 差分確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ diff -u new-v13_release_20231013.manifest.yaml v13_release_20231013.manifest.yaml --- new-v13_release_20231013.manifest.yaml 2023-10-13 17:41:48 +++ v13_release_20231013.manifest.yaml 2023-10-13 17:41:37 @@ -1041,7 +1041,7 @@ emptyDir: {} --- # Source: hoge/templates/distributor/hpa.yaml -apiVersion: autoscaling/v2 +apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: hoge @@ -1070,7 +1070,7 @@ targetAverageUtilization: 60 ~省略~ |
- 適用
1 2 |
$ kubectl apply -f new-v13_release_20231013.yaml --context hoge -n hoge --dry-run=server $ kubectl apply -f new-v13_release_20231013.yaml --context hoge -n hoge |
- helmfile apply
1 2 3 4 5 6 7 8 9 10 |
$ helmfile apply -e prod ~省略~ Upgrading release=hoge-prod, chart=hoge/hoge Release "hoge-prod" has been upgraded. Happy Helming! $ helmfile diff -e prod Adding repo hoge https://hoge.github.io/helm-charts "hoge" has been added to your repositories Comparing release=hoge-prod, chart=hoge/hoge |
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。