From 0003a23e79d1db18dd4b072065d9a94febfdd1ec Mon Sep 17 00:00:00 2001 From: Ruk Doe Date: Wed, 11 Nov 2026 10:12:17 +0900 Subject: [PATCH] =?UTF-8?q?render.sh:=20=E7=94=9F=E6=88=90=E7=89=A9?= =?UTF-8?q?=E3=81=AE=E7=A2=BA=E3=81=8B=E3=82=81=E3=82=92=20manifest=20?= =?UTF-8?q?=E3=81=AE=E6=9B=B8=E3=81=8D=E6=96=B9=E3=81=AB=E5=B7=A6=E5=8F=B3?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit talosctl v1.15.0-beta.0 から、inline の manifest が 1 行のエスケープ文字列ではなく ブロックで書き出されるようになり、エスケープした引用符と改行を探していた確かめが落ちた (#778 の boot)。エスケープを戻して字下げを落としたものを見るようにして、どちらの書き方でも通す。 Namespace の 3 行は grep では行をまたげないので awk で見る。 Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01T8TqVdo6LUrWKdVQgbScVU --- bootstrap/render.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/bootstrap/render.sh b/bootstrap/render.sh index 62b16ac..51746b5 100755 --- a/bootstrap/render.sh +++ b/bootstrap/render.sh @@ -232,9 +232,13 @@ talosctl gen config doany https://10.0.0.2:6443 "$@" --output-dir "$OUT" >/dev/n echo "wrote $OUT/controlplane.yaml ($(wc -l < "$OUT/controlplane.yaml") 行)" # 描いたものが入ったか。controlplane.yaml のキーは gen config が知らないキーで落とすので見ない(helm は黙って捨てる)。 -# 生成物の manifest は 1 行のエスケープ文字列なので、引用符は \" で探す。 +# 生成物の manifest は、talosctl の版と中身によって 1 行のエスケープ文字列にもブロック(|-)にもなる +# (v1.15.0-alpha.2 までは前者、beta.0 から後者)。どちらでも同じに探せるよう、エスケープ(\n と \")を戻して +# 字下げを落としたものを見る。 +FLAT=$WORK/controlplane.flat +awk '{ gsub(/\\n/, "\n"); gsub(/\\"/, "\""); print }' "$OUT/controlplane.yaml" | sed 's/^ *//' > "$FLAT" for n in "kube-apiserver:$K8S" "ghcr.io/siderolabs/kubelet:$K8S" \ - 'name: cilium' cilium-operator KUBERNETES_SERVICE_PORT 'value: \"7445\"' 'cgroup-root: \"/sys/fs/cgroup\"' \ + 'name: cilium' cilium-operator KUBERNETES_SERVICE_PORT 'value: "7445"' 'cgroup-root: "/sys/fs/cgroup"' \ 'kind: GatewayClass' io.cilium/gateway-controller \ 'kind: RawVolumeConfig' 'kind: LVMVolumeGroupConfig' 'name: dm_thin_pool' \ 'name: lvm-localpv' lvm-localpv-node lvm-localpv-controller 'storageCapacity: false' 'doany.io/lvm-thinpool: ready' \ @@ -246,12 +250,15 @@ for n in "kube-apiserver:$K8S" "ghcr.io/siderolabs/kubelet:$K8S" \ 'name: apiserver-rbac' 'name: cilium-drift' \ "gateway-api/releases/download/$GWAPI/standard-install.yaml" \ 'name: argocd' argocd-server 'name: argocd-application-crd' manifests/crds/applicationset-crd.yaml \ - 'kind: Namespace\nmetadata:\n name: argocd' \ 'name: cert-manager' cert-manager-webhook 'name: cert-manager-crds' \ "cert-manager/releases/download/$CERTMGR/cert-manager.crds.yaml" \ - 'kind: Namespace\nmetadata:\n name: cert-manager' \ 'name: cloudflare-secret'; do - grep -qF -- "$n" "$OUT/controlplane.yaml" || { echo "ERROR: '$n' が生成物に無い" >&2; exit 1; } + grep -qF -- "$n" "$FLAT" || { echo "ERROR: '$n' が生成物に無い" >&2; exit 1; } +done +# bootstrap 層の Namespace(chart() が先頭に付けたもの)。3 行が続いていることを見る +for ns in argocd cert-manager; do + awk -v n="name: $ns" 'a == "kind: Namespace" && b == "metadata:" && $0 == n { f = 1 } { a = b; b = $0 } END { exit !f }' "$FLAT" \ + || { echo "ERROR: Namespace $ns が生成物に無い" >&2; exit 1; } done # 無いことを見る側(flannel はドキュメントが在るだけで有効になる) # (snapshot-controller と VolumeSnapshot の CRD は URL で入れるので、chart の同梱が混ざると 2 つになる)