From 7e6d0bb2cee5cf12ba61bf13080d43a126094698 Mon Sep 17 00:00:00 2001 From: drumato Date: Wed, 1 Jul 2026 14:39:28 +0900 Subject: [PATCH 1/2] =?UTF-8?q?environment=E6=A9=9F=E8=83=BD=E3=81=AE?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: drumato --- api/v1/tazuna_types.go | 19 ++++- api/v1/tazuna_types_test.go | 35 ++++++++ cmd/apply.go | 18 ++++- cmd/build.go | 5 +- cmd/check.go | 10 ++- cmd/destroy.go | 13 ++- cmd/flags_test.go | 1 + cmd/internal/cliutil/cliutil.go | 51 +++++++++++- cmd/internal/cliutil/cliutil_test.go | 113 +++++++++++++++++++++++++- cmd/plan.go | 4 +- cmd/root.go | 4 + cmd/state_diff.go | 4 +- cmd/state_drift.go | 4 +- cmd/state_list.go | 4 +- cmd/status.go | 4 +- cmd/tags.go | 4 +- docs/src/SUMMARY.md | 1 + docs/src/guides/environments.md | 115 +++++++++++++++++++++++++++ docs/src/guides/index.md | 3 + docs/src/reference/tazuna-yaml.md | 102 ++++++++++++++++++++++++ pkg/runner/apply.go | 10 ++- pkg/runner/tazuna.go | 13 +++ pkg/tmpl/render.go | 41 ++++++++++ pkg/tmpl/render_test.go | 76 ++++++++++++++++++ pkg/validator/validator.go | 32 ++++++++ pkg/validator/validator_test.go | 67 ++++++++++++++++ 26 files changed, 722 insertions(+), 31 deletions(-) create mode 100644 docs/src/guides/environments.md create mode 100644 pkg/tmpl/render.go create mode 100644 pkg/tmpl/render_test.go diff --git a/api/v1/tazuna_types.go b/api/v1/tazuna_types.go index b56bc7f..e716216 100644 --- a/api/v1/tazuna_types.go +++ b/api/v1/tazuna_types.go @@ -40,7 +40,12 @@ type TazunaSpec struct { ContextMatches []string `json:"context_matches,omitempty"` // ContextMatchModeはcontext_matchesの評価モードです("or" または "and"、デフォルトは "or") ContextMatchMode ContextMatchMode `json:"context_match_mode,omitempty"` - Manifests []Manifest `json:"manifests"` + // Environments は環境ごとの設定を宣言するマップです。キーが環境名になります。 + // `-e/--environment ` が渡されたとき、ルート直下の context_matches / + // context_match_mode ではなく、ここで宣言した環境固有の値が使われます。 + // 未指定または `-e` が渡されない場合はルート直下の設定がそのまま使われます。 + Environments map[string]EnvironmentSpec `json:"environments,omitempty"` + Manifests []Manifest `json:"manifests"` // Testsはすべてのマニフェスト適用が終わったあとに実行されます Tests []TestPluginSpec `json:"tests"` // Providers は Secret provider の宣言リストです。未指定時は組み込みの "default-op" @@ -49,6 +54,18 @@ type TazunaSpec struct { Providers []ProviderConfig `json:"providers,omitempty"` } +// EnvironmentSpec は 1 つの環境 (`environments.`) の設定を定義します。 +// `-e/--environment ` が渡されたとき、ルート直下の同名フィールドの代わりに +// ここで宣言した値が使われます。 +type EnvironmentSpec struct { + // ContextMatches はこの環境で有効にする context_matches パターンのリストです。 + // ルート直下の context_matches を完全に置き換えます (マージはしません)。 + ContextMatches []string `json:"context_matches,omitempty"` + // ContextMatchMode はこの環境における context_matches の評価モードです。 + // 空の場合はルート直下の context_match_mode を継承し、それも空なら "or" になります。 + ContextMatchMode ContextMatchMode `json:"context_match_mode,omitempty"` +} + // IncludeFile はincludeするファイルを定義します type IncludeFile struct { // Path はincludeするファイルのパス(tazuna.yamlからの相対パス) diff --git a/api/v1/tazuna_types_test.go b/api/v1/tazuna_types_test.go index e9af4fb..282e410 100644 --- a/api/v1/tazuna_types_test.go +++ b/api/v1/tazuna_types_test.go @@ -70,6 +70,41 @@ func TestTazunaSpec_RoundTrip(t *testing.T) { } } +func TestTazunaSpec_RoundTrip_Environments(t *testing.T) { + t.Parallel() + src := Tazuna{ + Spec: TazunaSpec{ + ContextMatches: []string{"^root-.*$"}, + Environments: map[string]EnvironmentSpec{ + "prod": { + ContextMatches: []string{"^prod-.*$"}, + ContextMatchMode: ContextMatchModeAND, + }, + "staging": { + ContextMatches: []string{"^staging-.*$"}, + }, + }, + Manifests: []Manifest{{Name: "app", Type: ManifestTypeKustomize, Path: "./app"}}, + }, + } + + got := roundTripTazuna(t, src) + if len(got.Spec.Environments) != 2 { + t.Fatalf("Environments len = %d, want 2", len(got.Spec.Environments)) + } + prod := got.Spec.Environments["prod"] + if len(prod.ContextMatches) != 1 || prod.ContextMatches[0] != "^prod-.*$" { + t.Errorf("prod.ContextMatches = %v", prod.ContextMatches) + } + if prod.ContextMatchMode != ContextMatchModeAND { + t.Errorf("prod.ContextMatchMode = %q, want %q", prod.ContextMatchMode, ContextMatchModeAND) + } + staging := got.Spec.Environments["staging"] + if staging.ContextMatchMode != "" { + t.Errorf("staging.ContextMatchMode = %q, want empty", staging.ContextMatchMode) + } +} + func TestTazunaSpec_RoundTrip_OmitContextFields(t *testing.T) { t.Parallel() src := Tazuna{ diff --git a/cmd/apply.go b/cmd/apply.go index 837c008..2d9e425 100644 --- a/cmd/apply.go +++ b/cmd/apply.go @@ -37,9 +37,14 @@ untouched. The target cluster is determined by the kubeconfig context. When context_matches is configured, the current context name is validated. +With -e/--environment , spec.environments..context_matches is used +instead of the root context_matches, and {{ .Environment }} in tazuna.yaml is +rendered to . + Examples: tazuna apply -f tazuna.yaml tazuna apply -f tazuna.yaml --tags web,batch + tazuna apply -f tazuna.yaml -e production tazuna apply -f tazuna.yaml --log-level debug tazuna apply -f tazuna.yaml --sync tazuna apply -f tazuna.yaml --sync --prune @@ -102,6 +107,8 @@ Examples: Atomic: atomic, } + environment := cliutil.Environment(cmd) + r := runner.NewTazunaRunner( logger, k8sClient, @@ -109,9 +116,10 @@ Examples: runner.WithTags(tags), runner.WithORASPullOptions(orasOpts), runner.WithApplyOptions(applyOpts), + runner.WithEnvironment(environment), ) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, environment) if err != nil { return err } @@ -121,8 +129,12 @@ Examples: return errors.Wrapf(err, "validation failed for tazuna.yaml at %s", path) } - if len(tazuna.Spec.ContextMatches) > 0 { - if err := tazunacontext.ValidateCurrentContext(tazuna.Spec.ContextMatches, tazuna.Spec.ContextMatchMode); err != nil { + contextMatches, contextMatchMode, err := cliutil.ResolveContextMatches(tazuna.Spec, environment) + if err != nil { + return err + } + if len(contextMatches) > 0 { + if err := tazunacontext.ValidateCurrentContext(contextMatches, contextMatchMode); err != nil { return err } } diff --git a/cmd/build.go b/cmd/build.go index 3fbe41c..806cb61 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -54,9 +54,10 @@ Examples: if err != nil { return err } - r := runner.NewTazunaRunner(logger, k8sClient, &op.CommandClient{}, runner.WithTags(tags), runner.WithORASPullOptions(orasOpts)) + environment := cliutil.Environment(cmd) + r := runner.NewTazunaRunner(logger, k8sClient, &op.CommandClient{}, runner.WithTags(tags), runner.WithORASPullOptions(orasOpts), runner.WithEnvironment(environment)) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, environment) if err != nil { return err } diff --git a/cmd/check.go b/cmd/check.go index 19ff970..d15ca0b 100644 --- a/cmd/check.go +++ b/cmd/check.go @@ -49,7 +49,7 @@ Examples: return errors.WithStack(err) } - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, cliutil.Environment(cmd)) if err != nil { return err } @@ -63,11 +63,17 @@ Examples: return errors.Wrapf(err, "validation failed for tazuna.yaml at %s", path) } + // -e が渡されている場合、その環境が spec.environments に宣言されているかを + // この時点で検証しておくことで、apply/destroy 前に設定ミスを検知できる。 + if _, _, err := cliutil.ResolveContextMatches(tazuna.Spec, cliutil.Environment(cmd)); err != nil { + return err + } + logger, err := cliutil.NewLogger(cmd) if err != nil { return err } - r := runner.NewTazunaRunner(logger, nil, nil) + r := runner.NewTazunaRunner(logger, nil, nil, runner.WithEnvironment(cliutil.Environment(cmd))) if fix { if err := r.CheckAndFix(ctx, tazuna, absPath); err != nil { diff --git a/cmd/destroy.go b/cmd/destroy.go index ff3f504..92d311f 100644 --- a/cmd/destroy.go +++ b/cmd/destroy.go @@ -59,9 +59,10 @@ Examples: if err != nil { return err } - r := runner.NewTazunaRunner(logger, k8sClient, &op.CommandClient{}, runner.WithTags(tags), runner.WithORASPullOptions(orasOpts)) + environment := cliutil.Environment(cmd) + r := runner.NewTazunaRunner(logger, k8sClient, &op.CommandClient{}, runner.WithTags(tags), runner.WithORASPullOptions(orasOpts), runner.WithEnvironment(environment)) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, environment) if err != nil { return err } @@ -71,8 +72,12 @@ Examples: return errors.Wrapf(err, "validation failed for tazuna.yaml at %s", path) } - if len(tazuna.Spec.ContextMatches) > 0 { - if err := tazunacontext.ValidateCurrentContext(tazuna.Spec.ContextMatches, tazuna.Spec.ContextMatchMode); err != nil { + contextMatches, contextMatchMode, err := cliutil.ResolveContextMatches(tazuna.Spec, environment) + if err != nil { + return err + } + if len(contextMatches) > 0 { + if err := tazunacontext.ValidateCurrentContext(contextMatches, contextMatchMode); err != nil { return err } } diff --git a/cmd/flags_test.go b/cmd/flags_test.go index ce204dd..24935fc 100644 --- a/cmd/flags_test.go +++ b/cmd/flags_test.go @@ -35,6 +35,7 @@ func TestRootPersistentFlags(t *testing.T) { for _, spec := range []flagSpec{ {name: "file-path", defaultVal: "tazuna.yaml"}, {name: "log-level", defaultVal: "info"}, + {name: "environment", defaultVal: ""}, } { if f := rootCmd.PersistentFlags().Lookup(spec.name); f == nil { t.Errorf("root persistent flag %q missing", spec.name) diff --git a/cmd/internal/cliutil/cliutil.go b/cmd/internal/cliutil/cliutil.go index d44bde9..fc7a0e2 100644 --- a/cmd/internal/cliutil/cliutil.go +++ b/cmd/internal/cliutil/cliutil.go @@ -11,6 +11,7 @@ import ( "github.com/Masterminds/semver/v3" "github.com/cockroachdb/errors" v1 "github.com/pepabo/tazuna/api/v1" + "github.com/pepabo/tazuna/pkg/tmpl" "github.com/spf13/cobra" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -56,14 +57,22 @@ func NewLogger(cmd *cobra.Command) (*slog.Logger, error) { return slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: ParseLogLevel(logLevelS)})), nil } -// LoadTazunaYAML reads path and decodes it as a v1.Tazuna document. -func LoadTazunaYAML(path string) (*v1.Tazuna, error) { +// LoadTazunaYAML reads path, renders it as a Go template, and decodes it as a +// v1.Tazuna document. +// +// environment は -e/--environment フラグの値で、テンプレート内の {{ .Environment }} +// に注入されます。フラグが渡されていない場合は空文字列を渡してください。 +func LoadTazunaYAML(path, environment string) (*v1.Tazuna, error) { data, err := os.ReadFile(path) if err != nil { return nil, errors.WithStack(err) } + rendered, err := tmpl.Render(path, data, tmpl.Data{Environment: environment}) + if err != nil { + return nil, errors.WithStack(err) + } tazuna := v1.Tazuna{} - if err := yaml.Unmarshal(data, &tazuna); err != nil { + if err := yaml.Unmarshal(rendered, &tazuna); err != nil { return nil, errors.WithStack(err) } if err := CheckMinimumSupportedVersion(&tazuna, currentVersion); err != nil { @@ -72,6 +81,42 @@ func LoadTazunaYAML(path string) (*v1.Tazuna, error) { return &tazuna, nil } +// ResolveContextMatches は environment に応じて有効な context_matches パターンと +// 評価モードを返します。 +// +// - environment が空文字列の場合、ルート直下の spec.context_matches / +// spec.context_match_mode をそのまま返します。 +// - environment が指定された場合、spec.environments[environment] の値を使います。 +// 該当する環境が宣言されていなければエラーになります。環境の context_match_mode が +// 空なら、ルート直下の context_match_mode を継承します。 +func ResolveContextMatches(spec v1.TazunaSpec, environment string) ([]string, v1.ContextMatchMode, error) { + if environment == "" { + return spec.ContextMatches, spec.ContextMatchMode, nil + } + + env, ok := spec.Environments[environment] + if !ok { + return nil, "", errors.Errorf( + "environment %q is not declared under spec.environments", environment) + } + + mode := env.ContextMatchMode + if mode == "" { + mode = spec.ContextMatchMode + } + return env.ContextMatches, mode, nil +} + +// Environment は永続フラグ -e/--environment の値を読み取ります。フラグが未登録の +// サブコマンドでは空文字列を返します。 +func Environment(cmd *cobra.Command) string { + env, err := cmd.Flags().GetString("environment") + if err != nil { + return "" + } + return env +} + // CheckMinimumSupportedVersion は spec.minimumSupportedTazunaVersion と実行中の // tazuna バージョン current を比較します。current が制約を満たさない場合はエラーを // 返します。 diff --git a/cmd/internal/cliutil/cliutil_test.go b/cmd/internal/cliutil/cliutil_test.go index f2b756c..1afca75 100644 --- a/cmd/internal/cliutil/cliutil_test.go +++ b/cmd/internal/cliutil/cliutil_test.go @@ -45,7 +45,7 @@ spec: t.Fatalf("write tmp file: %v", err) } - got, err := cliutil.LoadTazunaYAML(path) + got, err := cliutil.LoadTazunaYAML(path, "") if err != nil { t.Fatalf("LoadTazunaYAML returned error: %v", err) } @@ -59,11 +59,116 @@ spec: func TestLoadTazunaYAML_MissingFile(t *testing.T) { t.Parallel() - if _, err := cliutil.LoadTazunaYAML(filepath.Join(t.TempDir(), "does-not-exist.yaml")); err == nil { + if _, err := cliutil.LoadTazunaYAML(filepath.Join(t.TempDir(), "does-not-exist.yaml"), ""); err == nil { t.Fatal("expected error for missing file, got nil") } } +// TestLoadTazunaYAML_TemplateEnvironment は tazuna.yaml が Go template として描画され、 +// {{ .Environment }} が -e の値で置換されることを確認します。 +func TestLoadTazunaYAML_TemplateEnvironment(t *testing.T) { + t.Parallel() + + dir := t.TempDir() + path := filepath.Join(dir, "tazuna.yaml") + yaml := `apiVersion: tazuna.pepabo.com/v1 +kind: Tazuna +spec: + context_matches: + - ^{{ .Environment }}-.*$ + manifests: [] +` + if err := os.WriteFile(path, []byte(yaml), 0o644); err != nil { + t.Fatalf("write tmp file: %v", err) + } + + got, err := cliutil.LoadTazunaYAML(path, "staging") + if err != nil { + t.Fatalf("LoadTazunaYAML returned error: %v", err) + } + if len(got.Spec.ContextMatches) != 1 || got.Spec.ContextMatches[0] != "^staging-.*$" { + t.Errorf("context_matches = %v, want [^staging-.*$]", got.Spec.ContextMatches) + } +} + +func TestResolveContextMatches(t *testing.T) { + t.Parallel() + + spec := v1.TazunaSpec{ + ContextMatches: []string{"^root-.*$"}, + ContextMatchMode: v1.ContextMatchModeAND, + Environments: map[string]v1.EnvironmentSpec{ + "prod": { + ContextMatches: []string{"^prod-.*$"}, + ContextMatchMode: v1.ContextMatchModeOR, + }, + "staging": { + // context_match_mode を省略 → root の mode を継承する + ContextMatches: []string{"^staging-.*$"}, + }, + }, + } + + tests := []struct { + name string + environment string + wantMatches []string + wantMode v1.ContextMatchMode + expectErr bool + }{ + { + name: "empty environment uses root", + environment: "", + wantMatches: []string{"^root-.*$"}, + wantMode: v1.ContextMatchModeAND, + }, + { + name: "named environment overrides root", + environment: "prod", + wantMatches: []string{"^prod-.*$"}, + wantMode: v1.ContextMatchModeOR, + }, + { + name: "environment inherits root mode when empty", + environment: "staging", + wantMatches: []string{"^staging-.*$"}, + wantMode: v1.ContextMatchModeAND, + }, + { + name: "unknown environment is an error", + environment: "does-not-exist", + expectErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + matches, mode, err := cliutil.ResolveContextMatches(spec, tt.environment) + if tt.expectErr { + if err == nil { + t.Fatal("expected error but got nil") + } + return + } + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if mode != tt.wantMode { + t.Errorf("mode = %q, want %q", mode, tt.wantMode) + } + if len(matches) != len(tt.wantMatches) { + t.Fatalf("matches = %v, want %v", matches, tt.wantMatches) + } + for i := range matches { + if matches[i] != tt.wantMatches[i] { + t.Errorf("matches[%d] = %q, want %q", i, matches[i], tt.wantMatches[i]) + } + } + }) + } +} + func TestCheckMinimumSupportedVersion(t *testing.T) { t.Parallel() @@ -126,14 +231,14 @@ spec: } // デフォルト("dev")ではゲートをスキップするのでエラーにならない。 - if _, err := cliutil.LoadTazunaYAML(path); err != nil { + if _, err := cliutil.LoadTazunaYAML(path, ""); err != nil { t.Fatalf("LoadTazunaYAML with dev version returned error: %v", err) } // 実行バージョンを下回る値にすると LoadTazunaYAML がエラーになる。 cliutil.SetCurrentVersion("1.0.0") t.Cleanup(func() { cliutil.SetCurrentVersion("dev") }) - if _, err := cliutil.LoadTazunaYAML(path); err == nil { + if _, err := cliutil.LoadTazunaYAML(path, ""); err == nil { t.Fatal("expected error when running version is below minimum, got nil") } } diff --git a/cmd/plan.go b/cmd/plan.go index 7ffa1e0..ea1995e 100644 --- a/cmd/plan.go +++ b/cmd/plan.go @@ -59,14 +59,16 @@ Examples: return err } + environment := cliutil.Environment(cmd) r := runner.NewTazunaRunner( logger, k8sClient, &op.CommandClient{}, runner.WithTags(tags), + runner.WithEnvironment(environment), ) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, environment) if err != nil { return err } diff --git a/cmd/root.go b/cmd/root.go index fe667fb..4d44c98 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -44,6 +44,10 @@ func Execute() { func init() { rootCmd.PersistentFlags().StringP("file-path", "f", "tazuna.yaml", "Path to tazuna.yaml") rootCmd.PersistentFlags().StringP("log-level", "l", "info", "log level(debug/info/warn/error)") + // --environment はtazuna.yamlを描画する {{ .Environment }} の値になり、かつ + // spec.environments. の context_matches を選択する。空 (default) のときは + // ルート直下の context_matches が使われ、{{ .Environment }} は空文字列に展開される。 + rootCmd.PersistentFlags().StringP("environment", "e", "", "Environment name; selects spec.environments. and is exposed to tazuna.yaml as {{ .Environment }}") // OpenTelemetry tracing は短命 CLI 向けに opt-in 設計。 // --otlp-endpoint が空文字 (default) のときは no-op tracer を使うため外部依存ゼロ。 // 例: --otlp-endpoint=localhost:4317 で OTLP/gRPC collector に出力する。 diff --git a/cmd/state_diff.go b/cmd/state_diff.go index 77c9576..039a551 100644 --- a/cmd/state_diff.go +++ b/cmd/state_diff.go @@ -45,9 +45,9 @@ Examples: return err } - r := runner.NewTazunaRunner(logger, k8sClient, nil) + r := runner.NewTazunaRunner(logger, k8sClient, nil, runner.WithEnvironment(cliutil.Environment(cmd))) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, cliutil.Environment(cmd)) if err != nil { return err } diff --git a/cmd/state_drift.go b/cmd/state_drift.go index 39485f9..9b38f43 100644 --- a/cmd/state_drift.go +++ b/cmd/state_drift.go @@ -57,9 +57,9 @@ Examples: return err } - r := runner.NewTazunaRunner(logger, k8sClient, nil) + r := runner.NewTazunaRunner(logger, k8sClient, nil, runner.WithEnvironment(cliutil.Environment(cmd))) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, cliutil.Environment(cmd)) if err != nil { return err } diff --git a/cmd/state_list.go b/cmd/state_list.go index ff1d44a..839ef97 100644 --- a/cmd/state_list.go +++ b/cmd/state_list.go @@ -46,9 +46,9 @@ Examples: return err } - r := runner.NewTazunaRunner(logger, k8sClient, nil) + r := runner.NewTazunaRunner(logger, k8sClient, nil, runner.WithEnvironment(cliutil.Environment(cmd))) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, cliutil.Environment(cmd)) if err != nil { return err } diff --git a/cmd/status.go b/cmd/status.go index 2ae1e7e..bed986e 100644 --- a/cmd/status.go +++ b/cmd/status.go @@ -46,9 +46,9 @@ Examples: return err } - r := runner.NewTazunaRunner(logger, k8sClient, nil) + r := runner.NewTazunaRunner(logger, k8sClient, nil, runner.WithEnvironment(cliutil.Environment(cmd))) - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, cliutil.Environment(cmd)) if err != nil { return err } diff --git a/cmd/tags.go b/cmd/tags.go index 62ea540..99dd4ef 100644 --- a/cmd/tags.go +++ b/cmd/tags.go @@ -29,7 +29,7 @@ Examples: return errors.WithStack(err) } - tazuna, err := cliutil.LoadTazunaYAML(path) + tazuna, err := cliutil.LoadTazunaYAML(path, cliutil.Environment(cmd)) if err != nil { return err } @@ -39,7 +39,7 @@ Examples: } logger := slog.New(slog.NewTextHandler(io.Discard, &slog.HandlerOptions{})) - r := runner.NewTazunaRunner(logger, nil, nil) + r := runner.NewTazunaRunner(logger, nil, nil, runner.WithEnvironment(cliutil.Environment(cmd))) tags, err := r.ListTags(cmd.Context(), tazuna, path) if err != nil { diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 6a4d116..423febd 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -9,6 +9,7 @@ - [用語集](./concepts/glossary.md) - [ガイド](./guides/index.md) - [最初の tazuna.yaml を書く](./guides/first-tazuna-yaml.md) + - [環境ごとに設定を切り替える](./guides/environments.md) - [運用](./operations/index.md) - [`tazuna destroy` の運用](./operations/destroy-runbook.md) - [Drift モニタリング](./operations/drift-monitoring.md) diff --git a/docs/src/guides/environments.md b/docs/src/guides/environments.md new file mode 100644 index 0000000..7e7bcc0 --- /dev/null +++ b/docs/src/guides/environments.md @@ -0,0 +1,115 @@ +# 環境ごとに設定を切り替える + +1 つの `tazuna.yaml` を staging / production など複数のクラスタに使い回したい、 +という場面は珍しくありません。Tazuna は次の 2 つの仕組みでこれを支えます。 + +- **`{{ .Environment }}` テンプレート変数** — `tazuna.yaml` を Go template として + 描画し、`-e/--environment` で渡した環境名を値として埋め込みます。 +- **`spec.environments`** — 環境ごとに `context_matches` を宣言し、`-e` で選んだ + 環境の値で「どのクラスタへの適用を許すか」を切り替えます。 + +このガイドでは、この 2 つを組み合わせて「環境ごとにオーバーレイを切り替えつつ、 +誤ったクラスタへの適用を防ぐ」ところまでを通します。仕様の詳細は +[`tazuna.yaml` スキーマ - environments](../reference/tazuna-yaml.md#environments) / +[テンプレート変数](../reference/tazuna-yaml.md#テンプレート変数) を参照してください。 + +## 1. `{{ .Environment }}` を埋め込む + +まず、環境名でマニフェストのパスを切り替えます。 + +```yaml +apiVersion: tazuna.pepabo.com/v1 +kind: Tazuna +spec: + manifests: + - name: app + type: kustomize + path: ./overlays/{{ .Environment }} +``` + +`-e staging` を渡すと `path` は `./overlays/staging` に、`-e production` を渡すと +`./overlays/production` に描画されます。 + +```console +$ tazuna build -e staging # ./overlays/staging をレンダリング +$ tazuna build -e production # ./overlays/production をレンダリング +``` + +`-e` を渡さない場合、`{{ .Environment }}` は **空文字列** に展開されます +(この例では `path: ./overlays/` になります)。描画は `tazuna.yaml` を読み込む +すべてのコマンドで行われるため、`build` で結果を確認してから `apply` するとよいでしょう。 + +## 2. 環境ごとに適用先クラスタを限定する + +テンプレート変数だけでは「production 用の設定を、間違えて staging クラスタに +適用してしまう」事故は防げません。そこで `spec.environments` で環境ごとに +`context_matches`(許可する kubeconfig context 名の正規表現)を宣言します。 + +```yaml +apiVersion: tazuna.pepabo.com/v1 +kind: Tazuna +spec: + environments: + staging: + context_matches: + - ^staging-tokyo$ + - ^staging-osaka$ + context_match_mode: or + production: + context_matches: + - ^prod-tokyo$ + context_match_mode: and + manifests: + - name: app + type: kustomize + path: ./overlays/{{ .Environment }} +``` + +- `tazuna apply -e staging` は、current-context が `staging-tokyo` または + `staging-osaka` のときだけ実行されます。それ以外の context では中断します。 +- `tazuna apply -e production` は、current-context が `prod-tokyo` のときだけ + 実行されます。 + +`-e` に対応する環境が `environments` に宣言されていない場合、 +`apply` / `destroy` / `check` はエラーになります。タイプミスによる誤適用も防げます。 + +## 3. `check` で事前検証する + +`tazuna check -e ` は、`tazuna.yaml` の描画・バリデーションに加えて、 +指定した環境が `environments` に存在するかまで確認します。CI で +`tazuna check -e production` を回しておくと、production 適用前に設定ミスを検知できます。 + +```console +$ tazuna check -e production +$ tazuna check -e typo-env +error: environment "typo-env" is not declared under spec.environments +``` + +## `-e` を渡さないとき(ローカル開発) + +`-e` を省略すると、`environments` は無視され、ルート直下の `context_matches` / +`context_match_mode` が使われます。ローカルの kind クラスタ向けの設定を +ルート直下に、staging / production を `environments` に置く、という使い分けが可能です。 + +```yaml +spec: + context_matches: + - ^kind- # -e なしのローカル実行で使われる + environments: + staging: + context_matches: [^staging-] + production: + context_matches: [^prod-] + manifests: + - name: app + type: kustomize + path: ./overlays/{{ .Environment }} +``` + +## まとめ + +| やりたいこと | 使う仕組み | +|------------------------------------|------------| +| 環境名で値・パスを差し替える | `{{ .Environment }}` | +| 環境ごとに適用先クラスタを限定する | `spec.environments[].context_matches` | +| 適用前に環境設定を検証する | `tazuna check -e ` | diff --git a/docs/src/guides/index.md b/docs/src/guides/index.md index 3db88b5..56f0f72 100644 --- a/docs/src/guides/index.md +++ b/docs/src/guides/index.md @@ -15,6 +15,9 @@ 1. **[最初の tazuna.yaml を書く](./first-tazuna-yaml.md)** — 1 つの Kubernetes クラスタに kustomize で書いた add-on を 1 つ入れるところまでを、 `tazuna.yaml` の最初の 1 枚から `tazuna apply` までひと通り通します。 +2. **[環境ごとに設定を切り替える](./environments.md)** — + `{{ .Environment }}` テンプレート変数と `spec.environments` を使い、1 つの + `tazuna.yaml` を staging / production など複数クラスタに安全に使い回します。 これ以降のテーマ(複数 manifest の順序付け、`--tags` による絞り込み、 State の確認、GenesisSecret、CI 連携など)は、ここで作った `tazuna.yaml` を diff --git a/docs/src/reference/tazuna-yaml.md b/docs/src/reference/tazuna-yaml.md index 192a9fb..2cc5ed5 100644 --- a/docs/src/reference/tazuna-yaml.md +++ b/docs/src/reference/tazuna-yaml.md @@ -36,6 +36,7 @@ spec: | `manifests` | [[Manifest](#manifest)] | ◯ | - | Tazuna が処理する Manifest の配列。空配列は許容されません。`dependsOn` が使われていれば依存グラフから導出した層順、未使用なら宣言順で実行されます。 | | `context_matches` | [string] | - | `[]` | 現在の kubeconfig context 名がマッチすべき正規表現の配列。空でなければ `apply` / `destroy` 前に評価されます。 | | `context_match_mode` | string | - | `or` | `context_matches` の評価モード。`or`(いずれかに一致)または `and`(すべてに一致)。 | +| `environments` | map[string][EnvironmentSpec](#environments) | - | `{}` | 環境名をキーとする環境ごとの設定マップ。`-e/--environment ` で選択します。詳細は [`environments`](#environments) 参照。 | | `tests` | [[TestPluginSpec](#tests-フィールド)] | - | `[]` | すべての Manifest 適用後に実行される Test plugin の配列。 | | `providers` | [[ProviderConfig](#providers)] | - | `[]` | GenesisSecret から参照される Secret provider の宣言リスト。組み込みの `default-op` 以外を使う場合に書きます。 | @@ -83,6 +84,107 @@ spec: manifests: [] ``` +### `environments` + +`environments` は **環境名をキーとするマップ** です。`-e/--environment ` +フラグで環境を選択すると、ルート直下の `context_matches` / `context_match_mode` +の代わりに、選択した環境のものが使われます。同じ `tazuna.yaml` を staging / production +など複数のクラスタに向けて安全に使い回すための仕組みです。 + +各エントリ(`EnvironmentSpec`)は次のフィールドを持ちます。 + +| フィールド | 型 | 必須 | デフォルト | 説明 | +|----------------------|----------|------|------------|------| +| `context_matches` | [string] | - | `[]` | この環境で有効にする `context_matches` パターン。ルート直下の `context_matches` を **完全に置き換えます**(マージしません)。 | +| `context_match_mode` | string | - | ルートの値 | この環境における評価モード。空ならルート直下の `context_match_mode` を継承し、それも空なら `or` になります。 | + +解決ルール: + +- `-e` を **渡さない** 場合、`environments` は無視され、ルート直下の + `context_matches` / `context_match_mode` が使われます(従来どおりの挙動)。 +- `-e ` を渡した場合、`environments.` が使われます。ルート直下の + `context_matches` は参照されません。 +- `-e ` に対応する環境が `environments` に **宣言されていない** 場合、 + `apply` / `destroy` / `check` はエラーで終了します。 +- `environments..context_matches` が空(または未設定)の場合、その環境では + context チェックは行われません。 + +`-e` は同時に `{{ .Environment }}` テンプレート変数の値にもなります +([テンプレート変数](#テンプレート変数) 参照)。`environments` と組み合わせると、 +「環境名でマニフェストの値を差し替えつつ、その環境向けの context だけを許可する」 +といった使い方ができます。 + +例: + +```yaml +spec: + # -e を渡さないローカル実行ではこちらが使われる + context_matches: + - ^kind- + environments: + staging: + context_matches: + - ^staging-tokyo$ + - ^staging-osaka$ + context_match_mode: or + production: + context_matches: + - ^prod-tokyo$ + context_match_mode: and + manifests: + - name: app + type: kustomize + path: ./overlays/{{ .Environment }} +``` + +```console +# staging クラスタに向けて apply(current-context が ^staging-* でないと中断) +$ tazuna apply -e staging + +# production クラスタに向けて apply +$ tazuna apply -e production +``` + +## テンプレート変数 + +`tazuna.yaml`(および `includes` で読み込まれるファイル)は、YAML としてパースされる +**前に一度 Go の [text/template](https://pkg.go.dev/text/template) として描画** されます。 +これにより、環境ごとに異なる値を 1 つのファイルから注入できます。 + +### 仕組みと動き + +1. `tazuna` は指定された `tazuna.yaml` を読み込みます。 +2. ファイル全体を Go template として解釈し、後述の変数を適用して描画します。 +3. 描画後の文字列を YAML としてパースします。 +4. `includes` で読み込まれるファイルも、同じ変数で同様に描画されます。 + +`apply` / `destroy` / `build` / `plan` / `check` / `status` / `tags` / `state *` など、 +`tazuna.yaml` を読み込む **すべての操作** で描画が行われます。`-e` を渡さなかった場合、 +`{{ .Environment }}` は **空文字列** に展開されます。 + +### 対応している変数 + +| 変数 | 型 | 説明 | +|-------------------|--------|------| +| `{{ .Environment }}` | string | `-e/--environment` フラグの値。未指定時は空文字列。 | + +### 注意点 + +- 描画は **ファイル全体** に対して行われます。`{{` や `}}` を YAML の値として + そのまま出力したい場合は `{{ "{{" }}` / `{{ "}}" }}` のようにエスケープしてください。 +- 存在しない変数(例: `{{ .Unknown }}`)を参照すると描画時にエラーになります。 +- Helmfile の value ファイルや Helm chart のテンプレートは `tazuna` の描画対象では + ありません(それらは helmfile / helm 側で処理されます)。あくまで `tazuna.yaml` + 本体と `includes` 対象ファイルのみが描画されます。 + +### ユースケース + +- **オーバーレイの切り替え**: `path: ./overlays/{{ .Environment }}` のように、 + 環境名でマニフェストのパスを切り替える。 +- **ネームスペースやラベルの差し替え**: `defaultNamespace: {{ .Environment }}` など。 +- **`environments` と併用**: `{{ .Environment }}` で値を差し替えつつ、その環境の + `context_matches` で対象クラスタを限定し、誤ったクラスタへの適用を防ぐ。 + ## Manifest `spec.manifests[]` の各要素です。1 つの Manifest が、1 つのバックエンド diff --git a/pkg/runner/apply.go b/pkg/runner/apply.go index c2400b4..0480484 100644 --- a/pkg/runner/apply.go +++ b/pkg/runner/apply.go @@ -18,6 +18,7 @@ import ( "github.com/pepabo/tazuna/pkg/resource" "github.com/pepabo/tazuna/pkg/state" "github.com/pepabo/tazuna/pkg/testplugin" + "github.com/pepabo/tazuna/pkg/tmpl" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" @@ -491,9 +492,16 @@ func (t *TazunaRunner) expandIncludes(ctx context.Context, tazuna *v1.Tazuna, ta return errors.Wrapf(err, "failed to open include file: %s", includePath) } + // tazuna.yaml 本体と同じく include ファイルも Go template として描画し、 + // {{ .Environment }} を解決してからパースする。 + rendered, err := tmpl.Render(includePath, includeData, tmpl.Data{Environment: t.environment}) + if err != nil { + return errors.WithStack(err) + } + // includeファイルをパースして完全なTazuna構造として読み込む var includeTazuna v1.Tazuna - if err := yaml.Unmarshal(includeData, &includeTazuna); err != nil { + if err := yaml.Unmarshal(rendered, &includeTazuna); err != nil { return errors.Wrapf(err, "failed to parse include file: %s", includePath) } diff --git a/pkg/runner/tazuna.go b/pkg/runner/tazuna.go index 1dd569a..dfdb0a1 100644 --- a/pkg/runner/tazuna.go +++ b/pkg/runner/tazuna.go @@ -50,6 +50,10 @@ type TazunaRunner struct { // StateDiff の入口で設定される。直接 ApplyToCluster 等を呼ぶテストでは空のままで // 構わない (envfile provider を使わない限り影響しない)。 providersBaseDir string + // environment は -e/--environment フラグの値。include ファイルを Go template として + // 描画する際に {{ .Environment }} へ注入される。tazuna.yaml 本体は cliutil 側で描画 + // 済みだが、include ファイルは runner が展開時に読み込むためここで保持する。 + environment string } type RunnerOption func(*TazunaRunner) @@ -206,6 +210,15 @@ func WithTags(tags []string) RunnerOption { } } +// WithEnvironment は -e/--environment フラグの値を設定します。include ファイルを +// Go template として描画する際の {{ .Environment }} に注入されます。未指定時は +// 空文字列のままで、従来どおり include ファイルはそのまま解釈されます。 +func WithEnvironment(environment string) RunnerOption { + return func(r *TazunaRunner) { + r.environment = environment + } +} + // WithORASPullOptions は ORAS manager に渡す PullOptions を設定します。 // CLI フラグ (--no-cache / --offline) からの値を伝搬するために使います。 func WithORASPullOptions(opts orasmanager.PullOptions) RunnerOption { diff --git a/pkg/tmpl/render.go b/pkg/tmpl/render.go new file mode 100644 index 0000000..a3ce97a --- /dev/null +++ b/pkg/tmpl/render.go @@ -0,0 +1,41 @@ +// Package tmpl は tazuna.yaml (および include ファイル) を Go template として +// 解釈するための薄いラッパーを提供します。tazuna.yaml は Unmarshal される前に +// 一度 Go template として描画されるため、`{{ .Environment }}` のような変数を +// 埋め込んで環境ごとに異なる値を注入できます。 +package tmpl + +import ( + "bytes" + "text/template" + + "github.com/cockroachdb/errors" +) + +// Data は tazuna.yaml を Go template として描画する際に参照できる変数の集合です。 +// フィールドを追加した場合は docs/src/reference/tazuna-yaml.md の +// 「テンプレート変数」表も更新してください。 +type Data struct { + // Environment は -e/--environment フラグで渡された環境名です。 + // フラグが渡されていない場合は空文字列になります。 + Environment string +} + +// Render は raw を Go template として解釈し、data を適用した結果を返します。 +// name はエラーメッセージに使う識別子 (通常はファイルパス) です。 +// +// missingkey=error を指定しているため、map に対して未定義キーを参照するテンプレートは +// エラーになります。Data のような struct に存在しないフィールド (例: `{{ .Unknown }}`) +// を参照した場合も text/template が実行時エラーを返します。 +func Render(name string, raw []byte, data Data) ([]byte, error) { + t, err := template.New(name).Option("missingkey=error").Parse(string(raw)) + if err != nil { + return nil, errors.Wrapf(err, "failed to parse %s as a Go template", name) + } + + var buf bytes.Buffer + if err := t.Execute(&buf, data); err != nil { + return nil, errors.Wrapf(err, "failed to render %s as a Go template", name) + } + + return buf.Bytes(), nil +} diff --git a/pkg/tmpl/render_test.go b/pkg/tmpl/render_test.go new file mode 100644 index 0000000..ecb5829 --- /dev/null +++ b/pkg/tmpl/render_test.go @@ -0,0 +1,76 @@ +package tmpl_test + +import ( + "strings" + "testing" + + "github.com/pepabo/tazuna/pkg/tmpl" +) + +func TestRender(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + raw string + data tmpl.Data + want string + expectErr bool + errContains string + }{ + { + name: "environment is substituted", + raw: "context: {{ .Environment }}-cluster", + data: tmpl.Data{Environment: "prod"}, + want: "context: prod-cluster", + }, + { + name: "empty environment renders empty string", + raw: "context: {{ .Environment }}", + data: tmpl.Data{Environment: ""}, + want: "context: ", + }, + { + name: "no template directive is returned as-is", + raw: "context: static", + data: tmpl.Data{Environment: "prod"}, + want: "context: static", + }, + { + name: "unknown field is a render error", + raw: "context: {{ .Unknown }}", + data: tmpl.Data{Environment: "prod"}, + expectErr: true, + errContains: "render", + }, + { + name: "malformed template is a parse error", + raw: "context: {{ .Environment ", + data: tmpl.Data{Environment: "prod"}, + expectErr: true, + errContains: "parse", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + got, err := tmpl.Render("test.yaml", []byte(tt.raw), tt.data) + if tt.expectErr { + if err == nil { + t.Fatalf("expected error but got nil (got=%q)", string(got)) + } + if tt.errContains != "" && !strings.Contains(err.Error(), tt.errContains) { + t.Errorf("expected error to contain %q, got: %s", tt.errContains, err.Error()) + } + return + } + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if string(got) != tt.want { + t.Errorf("Render() = %q, want %q", string(got), tt.want) + } + }) + } +} diff --git a/pkg/validator/validator.go b/pkg/validator/validator.go index 8b6c780..ee6bef3 100644 --- a/pkg/validator/validator.go +++ b/pkg/validator/validator.go @@ -74,6 +74,12 @@ func ValidateTazunaSpec(spec *v1.TazunaSpec, basePath string) error { return errors.Errorf("context_match_mode must be 'or' or 'and', got: %s", spec.ContextMatchMode) } + for name, env := range spec.Environments { + if err := ValidateEnvironment(name, &env); err != nil { + return errors.WithStack(err) + } + } + for i, manifest := range spec.Manifests { if err := ValidateManifest(&manifest, basePath); err != nil { return errors.Wrapf(err, "validation failed for manifest[%d]", i) @@ -87,6 +93,32 @@ func ValidateTazunaSpec(spec *v1.TazunaSpec, basePath string) error { return nil } +// ValidateEnvironment は spec.environments. の 1 エントリをバリデーションします。 +// 環境名が空でないこと、context_matches が有効な正規表現であること、 +// context_match_mode が 'or' / 'and' のいずれかであることを検証します。 +func ValidateEnvironment(name string, env *v1.EnvironmentSpec) error { + if name == "" { + return errors.New("environment name must not be empty") + } + if env == nil { + return errors.Errorf("environment %q is nil", name) + } + + for i, pattern := range env.ContextMatches { + if _, err := regexp.Compile(pattern); err != nil { + return errors.Errorf("environments[%q].context_matches[%d] is not a valid regex: %s", name, i, err) + } + } + + if env.ContextMatchMode != "" && + env.ContextMatchMode != v1.ContextMatchModeOR && + env.ContextMatchMode != v1.ContextMatchModeAND { + return errors.Errorf("environments[%q].context_match_mode must be 'or' or 'and', got: %s", name, env.ContextMatchMode) + } + + return nil +} + // ValidateManifest は Manifest をバリデーションします func ValidateManifest(manifest *v1.Manifest, basePath string) error { if manifest == nil { diff --git a/pkg/validator/validator_test.go b/pkg/validator/validator_test.go index 1850053..9961929 100644 --- a/pkg/validator/validator_test.go +++ b/pkg/validator/validator_test.go @@ -529,6 +529,73 @@ func TestValidateTazunaSpec_ContextMatches(t *testing.T) { } } +func TestValidateTazunaSpec_Environments(t *testing.T) { + t.Parallel() + tests := []struct { + name string + spec *v1.TazunaSpec + expectErr bool + errMsg string + }{ + { + name: "valid environment", + spec: &v1.TazunaSpec{ + Environments: map[string]v1.EnvironmentSpec{ + "prod": {ContextMatches: []string{"^prod-.*$"}, ContextMatchMode: v1.ContextMatchModeAND}, + }, + }, + expectErr: false, + }, + { + name: "environment with empty mode is valid", + spec: &v1.TazunaSpec{ + Environments: map[string]v1.EnvironmentSpec{ + "staging": {ContextMatches: []string{"^staging-.*$"}}, + }, + }, + expectErr: false, + }, + { + name: "environment with invalid regex", + spec: &v1.TazunaSpec{ + Environments: map[string]v1.EnvironmentSpec{ + "prod": {ContextMatches: []string{"[invalid"}}, + }, + }, + expectErr: true, + errMsg: `environments["prod"].context_matches[0] is not a valid regex`, + }, + { + name: "environment with invalid mode", + spec: &v1.TazunaSpec{ + Environments: map[string]v1.EnvironmentSpec{ + "prod": {ContextMatches: []string{"^prod-.*$"}, ContextMatchMode: "xor"}, + }, + }, + expectErr: true, + errMsg: `environments["prod"].context_match_mode must be 'or' or 'and'`, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + err := ValidateTazunaSpec(tt.spec, "") + if tt.expectErr { + if err == nil { + t.Errorf("expected error but got nil") + return + } + if tt.errMsg != "" && !containsString(err.Error(), tt.errMsg) { + t.Errorf("expected error message to contain '%s', but got: %s", tt.errMsg, err.Error()) + } + } else if err != nil { + t.Errorf("expected no error but got: %v", err) + } + }) + } +} + func TestValidateTazunaTypeMeta(t *testing.T) { t.Parallel() tests := []struct { From b0d9341ac67af9c9d9e9f18aad029ee92e320dc9 Mon Sep 17 00:00:00 2001 From: drumato Date: Wed, 1 Jul 2026 14:52:08 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E3=83=89=E3=82=AD=E3=83=A5=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=AE=E7=BF=BB=E8=A8=B3=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: drumato --- docs/po/en.po | 6300 +++++++++++++++++++++++++------------------------ 1 file changed, 3151 insertions(+), 3149 deletions(-) diff --git a/docs/po/en.po b/docs/po/en.po index 8948285..c0f9ebb 100644 --- a/docs/po/en.po +++ b/docs/po/en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Tazuna\n" -"POT-Creation-Date: 2026-05-29T16:23:08+09:00\n" +"POT-Creation-Date: 2026-07-01T14:41:09+09:00\n" "PO-Revision-Date: 2026-05-20\n" "Last-Translator: Pepabo\n" "Language-Team: English\n" @@ -52,152 +52,156 @@ msgstr "Guides" msgid "最初の tazuna.yaml を書く" msgstr "Writing Your First tazuna.yaml" -#: src/SUMMARY.md:12 src/operations/index.md:1 +#: src/SUMMARY.md:12 src/guides/environments.md:1 +msgid "環境ごとに設定を切り替える" +msgstr "Switch Configuration per Environment" + +#: src/SUMMARY.md:13 src/operations/index.md:1 msgid "運用" msgstr "Operations" -#: src/SUMMARY.md:13 src/operations/destroy-runbook.md:1 +#: src/SUMMARY.md:14 src/operations/destroy-runbook.md:1 msgid "`tazuna destroy` の運用" msgstr "Operating `tazuna destroy`" -#: src/SUMMARY.md:14 src/operations/drift-monitoring.md:1 +#: src/SUMMARY.md:15 src/operations/drift-monitoring.md:1 msgid "Drift モニタリング" msgstr "Drift Monitoring" -#: src/SUMMARY.md:15 src/operations/ci-pipeline.md:1 +#: src/SUMMARY.md:16 src/operations/ci-pipeline.md:1 msgid "CI パイプライン" msgstr "CI Pipeline" -#: src/SUMMARY.md:16 src/operations/observability.md:1 +#: src/SUMMARY.md:17 src/operations/observability.md:1 msgid "オブザーバビリティ" msgstr "Observability" -#: src/SUMMARY.md:17 src/reference/index.md:1 +#: src/SUMMARY.md:18 src/reference/index.md:1 msgid "リファレンス" msgstr "Reference" -#: src/SUMMARY.md:18 src/reference/tazuna-yaml.md:1 +#: src/SUMMARY.md:19 src/reference/tazuna-yaml.md:1 msgid "`tazuna.yaml` スキーマ" msgstr "`tazuna.yaml` Schema" -#: src/SUMMARY.md:19 src/reference/tazuna-hint-yaml.md:1 +#: src/SUMMARY.md:20 src/reference/tazuna-hint-yaml.md:1 msgid "`tazuna.hint.yaml` スキーマ" msgstr "`tazuna.hint.yaml` Schema" -#: src/SUMMARY.md:20 src/reference/genesis-secret.md:1 +#: src/SUMMARY.md:21 src/reference/genesis-secret.md:1 msgid "GenesisSecret スキーマ" msgstr "GenesisSecret Schema" -#: src/SUMMARY.md:21 src/concepts/architecture.md:110 +#: src/SUMMARY.md:22 src/concepts/architecture.md:110 #: src/reference/secret-providers.md:1 msgid "Secret provider" msgstr "Secret provider" -#: src/SUMMARY.md:22 src/concepts/architecture.md:119 +#: src/SUMMARY.md:23 src/concepts/architecture.md:119 #: src/concepts/glossary.md:31 src/reference/test-plugin.md:1 msgid "Test plugin" msgstr "Test plugin" -#: src/SUMMARY.md:23 src/reference/state.md:1 +#: src/SUMMARY.md:24 src/reference/state.md:1 msgid "State の内部構造" msgstr "Internal Structure of State" -#: src/SUMMARY.md:24 +#: src/SUMMARY.md:25 msgid "Manifest type 別" msgstr "By Manifest Type" -#: src/SUMMARY.md:25 src/reference/manifest-types/kustomize.md:1 +#: src/SUMMARY.md:26 src/reference/manifest-types/kustomize.md:1 msgid "`type: kustomize`" msgstr "`type: kustomize`" -#: src/SUMMARY.md:26 src/reference/manifest-types/helmfile.md:1 +#: src/SUMMARY.md:27 src/reference/manifest-types/helmfile.md:1 msgid "`type: helmfile`" msgstr "`type: helmfile`" -#: src/SUMMARY.md:27 src/reference/manifest-types/oras.md:1 +#: src/SUMMARY.md:28 src/reference/manifest-types/oras.md:1 msgid "`type: oras`" msgstr "`type: oras`" -#: src/SUMMARY.md:28 src/reference/manifest-types/genesissecret.md:1 +#: src/SUMMARY.md:29 src/reference/manifest-types/genesissecret.md:1 msgid "`type: genesissecret`" msgstr "`type: genesissecret`" -#: src/SUMMARY.md:29 src/concepts/architecture.md:55 +#: src/SUMMARY.md:30 src/concepts/architecture.md:55 #: src/reference/cli/index.md:1 msgid "CLI" msgstr "CLI" -#: src/SUMMARY.md:30 src/reference/cli/init.md:1 +#: src/SUMMARY.md:31 src/reference/cli/init.md:1 msgid "`tazuna init`" msgstr "`tazuna init`" -#: src/SUMMARY.md:31 src/operations/ci-pipeline.md:100 +#: src/SUMMARY.md:32 src/operations/ci-pipeline.md:100 #: src/reference/cli/apply.md:1 msgid "`tazuna apply`" msgstr "`tazuna apply`" -#: src/SUMMARY.md:32 src/reference/cli/build.md:1 +#: src/SUMMARY.md:33 src/reference/cli/build.md:1 msgid "`tazuna build`" msgstr "`tazuna build`" -#: src/SUMMARY.md:33 src/reference/cli/check.md:1 +#: src/SUMMARY.md:34 src/reference/cli/check.md:1 msgid "`tazuna check`" msgstr "`tazuna check`" -#: src/SUMMARY.md:34 src/operations/ci-pipeline.md:15 +#: src/SUMMARY.md:35 src/operations/ci-pipeline.md:15 #: src/reference/cli/destroy.md:1 msgid "`tazuna destroy`" msgstr "`tazuna destroy`" -#: src/SUMMARY.md:35 src/reference/cli/plan.md:1 +#: src/SUMMARY.md:36 src/reference/cli/plan.md:1 msgid "`tazuna plan`" msgstr "`tazuna plan`" -#: src/SUMMARY.md:36 src/reference/cli/status.md:1 +#: src/SUMMARY.md:37 src/reference/cli/status.md:1 msgid "`tazuna status`" msgstr "`tazuna status`" -#: src/SUMMARY.md:37 src/reference/cli/state-list.md:1 +#: src/SUMMARY.md:38 src/reference/cli/state-list.md:1 msgid "`tazuna state list`" msgstr "`tazuna state list`" -#: src/SUMMARY.md:38 src/reference/cli/state-diff.md:1 +#: src/SUMMARY.md:39 src/reference/cli/state-diff.md:1 msgid "`tazuna state diff`" msgstr "`tazuna state diff`" -#: src/SUMMARY.md:39 src/reference/cli/state-drift.md:1 +#: src/SUMMARY.md:40 src/reference/cli/state-drift.md:1 msgid "`tazuna state drift`" msgstr "`tazuna state drift`" -#: src/SUMMARY.md:40 src/reference/cli/secret-to-genesissecret.md:1 +#: src/SUMMARY.md:41 src/reference/cli/secret-to-genesissecret.md:1 msgid "`tazuna secret-to-genesissecret`" msgstr "`tazuna secret-to-genesissecret`" -#: src/SUMMARY.md:41 src/reference/cli/tags.md:1 +#: src/SUMMARY.md:42 src/reference/cli/tags.md:1 msgid "`tazuna tags`" msgstr "`tazuna tags`" -#: src/SUMMARY.md:42 src/reference/cli/version.md:1 +#: src/SUMMARY.md:43 src/reference/cli/version.md:1 msgid "`tazuna version`" msgstr "`tazuna version`" -#: src/SUMMARY.md:43 src/contributing/index.md:1 +#: src/SUMMARY.md:44 src/contributing/index.md:1 msgid "コントリビュート" msgstr "Contributing" -#: src/SUMMARY.md:44 src/contributing/development.md:1 +#: src/SUMMARY.md:45 src/contributing/development.md:1 msgid "開発環境" msgstr "Development Environment" -#: src/SUMMARY.md:45 src/contributing/testing.md:1 +#: src/SUMMARY.md:46 src/contributing/testing.md:1 msgid "テスト" msgstr "Testing" -#: src/SUMMARY.md:46 src/contributing/documentation.md:1 +#: src/SUMMARY.md:47 src/contributing/documentation.md:1 msgid "ドキュメント" msgstr "Documentation" -#: src/SUMMARY.md:47 src/contributing/releases.md:1 +#: src/SUMMARY.md:48 src/contributing/releases.md:1 msgid "リリース" msgstr "Release" @@ -211,11 +215,9 @@ msgstr "Welcome to the Tazuna documentation." #: src/introduction.md:5 msgid "" -"Tazuna は、マルチクラスタ Kubernetes 環境のブートストラップライフサイクルを管" -"理するための CLI ツールです。 `tazuna.yaml` に「どのクラスタへ、どのマニフェ" -"ストを、どの順で適用するか」を宣言的に記述し、 その内容を `apply` / " -"`destroy` / `plan` / `status` / `state` といったコマンドで一貫して運用できま" -"す。" +"Tazuna は、マルチクラスタ Kubernetes 環境のブートストラップライフサイクルを管理するための CLI ツールです。 " +"`tazuna.yaml` に「どのクラスタへ、どのマニフェストを、どの順で適用するか」を宣言的に記述し、 その内容を `apply` / " +"`destroy` / `plan` / `status` / `state` といったコマンドで一貫して運用できます。" msgstr "" "Tazuna is a CLI tool for managing the bootstrap lifecycle of multi-cluster " "Kubernetes environments. You declare in `tazuna.yaml` which manifests to " @@ -229,9 +231,9 @@ msgstr "Main commands:" #: src/introduction.md:11 msgid "" -"**`tazuna apply`** — `tazuna.yaml` をクラスタに反映し、State を書き戻しま" -"す。 `--sync` で差分のみ反映、`--sync --prune` で不要リソースの削除、`--sync " -"--atomic` で 途中エラー時の State 巻き戻しに対応します。" +"**`tazuna apply`** — `tazuna.yaml` をクラスタに反映し、State を書き戻します。 `--sync` " +"で差分のみ反映、`--sync --prune` で不要リソースの削除、`--sync --atomic` で 途中エラー時の State " +"巻き戻しに対応します。" msgstr "" "**`tazuna apply`** — applies `tazuna.yaml` to the cluster and writes State " "back. `--sync` applies only the diff, `--sync --prune` deletes obsolete " @@ -239,25 +241,21 @@ msgstr "" "error." #: src/introduction.md:14 -msgid "" -"**`tazuna plan`** — apply したらどのフィールドが変わるかを unified diff で見" -"せます。" +msgid "**`tazuna plan`** — apply したらどのフィールドが変わるかを unified diff で見せます。" msgstr "" "**`tazuna plan`** — shows, as a unified diff, which fields would change if " "you apply." #: src/introduction.md:15 -msgid "" -"**`tazuna status`** — State に記録された managed リソースの readiness を一覧" -"します。" +msgid "**`tazuna status`** — State に記録された managed リソースの readiness を一覧します。" msgstr "" "**`tazuna status`** — lists the readiness of the managed resources recorded " "in State." #: src/introduction.md:16 msgid "" -"**`tazuna state diff` / `tazuna state drift`** — 宣言 drift と live drift を" -"別々に検知します。" +"**`tazuna state diff` / `tazuna state drift`** — 宣言 drift と live drift " +"を別々に検知します。" msgstr "" "**`tazuna state diff` / `tazuna state drift`** — detect declared drift and " "live drift separately." @@ -273,37 +271,34 @@ msgstr "About this documentation" #: src/introduction.md:21 msgid "" -"このドキュメントは、Tazuna を初めて触る人から、CI に組み込んで継続的に運用す" -"る人、 そして Tazuna 本体に手を入れる人までを対象に、次の流れで構成していま" -"す。" +"このドキュメントは、Tazuna を初めて触る人から、CI に組み込んで継続的に運用する人、 そして Tazuna " +"本体に手を入れる人までを対象に、次の流れで構成しています。" msgstr "" "This documentation is organized for everyone from first-time Tazuna users, " "to those running it continuously as part of CI, to those modifying Tazuna " "itself, in the following flow." #: src/introduction.md:24 -msgid "" -"**[はじめかた](./getting-started/index.md)** — Tazuna を手元で初めて動かせる" -"状態にするまで。" +msgid "**[はじめかた](./getting-started/index.md)** — Tazuna を手元で初めて動かせる状態にするまで。" msgstr "" "**[Getting Started](./getting-started/index.md)** — Getting Tazuna up and " "running on your machine for the first time." #: src/introduction.md:25 msgid "" -"**[概念](./concepts/index.md)** — Tazuna が解こうとしている問題と、その設計思" -"想・アーキテクチャ。「なぜそうなっているか」を扱います。" +"**[概念](./concepts/index.md)** — Tazuna " +"が解こうとしている問題と、その設計思想・アーキテクチャ。「なぜそうなっているか」を扱います。" msgstr "" "**[Concepts](./concepts/index.md)** — The problem Tazuna aims to solve, and " "its design philosophy and architecture. Covers \"why it is the way it is.\"" #: src/introduction.md:26 msgid "" -"**[ガイド](./guides/index.md)** — `tazuna.yaml` を書くなど、実際に手を動かす" -"ためのタスク単位の手順。「何を、どの順で、どのコマンドで行うか」を扱います。" +"**[ガイド](./guides/index.md)** — `tazuna.yaml` " +"を書くなど、実際に手を動かすためのタスク単位の手順。「何を、どの順で、どのコマンドで行うか」を扱います。" msgstr "" -"**[Guides](./guides/index.md)** — Task-oriented, hands-on procedures such as " -"writing `tazuna.yaml`. Covers \"what to do, in what order, with which " +"**[Guides](./guides/index.md)** — Task-oriented, hands-on procedures such as" +" writing `tazuna.yaml`. Covers \"what to do, in what order, with which " "commands.\"" #: src/introduction.md:27 @@ -316,17 +311,17 @@ msgstr "" #: src/introduction.md:28 msgid "" -"**[リファレンス](./reference/index.md)** — 入力ファイル・CLI・内部データ構造" -"の仕様。フィールド・型・デフォルト・例を規約書として参照できます。" +"**[リファレンス](./reference/index.md)** — " +"入力ファイル・CLI・内部データ構造の仕様。フィールド・型・デフォルト・例を規約書として参照できます。" msgstr "" "**[Reference](./reference/index.md)** — Specifications of input files, the " -"CLI, and internal data structures. A spec-style reference for fields, types, " -"defaults, and examples." +"CLI, and internal data structures. A spec-style reference for fields, types," +" defaults, and examples." #: src/introduction.md:29 msgid "" -"**[コントリビュート](./contributing/index.md)** — 開発環境・テスト・ドキュメ" -"ント・リリースなど、Tazuna に変更を入れる人向けの案内。" +"**[コントリビュート](./contributing/index.md)** — 開発環境・テスト・ドキュメント・リリースなど、Tazuna " +"に変更を入れる人向けの案内。" msgstr "" "**[Contributing](./contributing/index.md)** — Guidance for those making " "changes to Tazuna, covering the development environment, testing, " @@ -338,32 +333,29 @@ msgstr "Where to start" #: src/introduction.md:33 msgid "" -"まだ Tazuna に触れたことがなければ、**[はじめかた](./getting-started/" -"index.md)** から順に進むのがおすすめです。" +"まだ Tazuna に触れたことがなければ、**[はじめかた](./getting-started/index.md)** " +"から順に進むのがおすすめです。" msgstr "" "If you have never touched Tazuna before, we recommend working through " "**[Getting Started](./getting-started/index.md)** in order." #: src/introduction.md:34 -msgid "" -"設計の背景や用語を先に押さえたい場合は **[概念](./concepts/index.md)** から。" +msgid "設計の背景や用語を先に押さえたい場合は **[概念](./concepts/index.md)** から。" msgstr "" -"If you want to grasp the design background and terminology first, start from " -"**[Concepts](./concepts/index.md)**." +"If you want to grasp the design background and terminology first, start from" +" **[Concepts](./concepts/index.md)**." #: src/introduction.md:35 msgid "" -"特定のコマンドやフィールドの仕様だけを調べたい場合は **[リファレンス](./" -"reference/index.md)** を辞書的に参照してください。" +"特定のコマンドやフィールドの仕様だけを調べたい場合は **[リファレンス](./reference/index.md)** を辞書的に参照してください。" msgstr "" "If you just want to look up the specification of a particular command or " "field, consult **[Reference](./reference/index.md)** like a dictionary." #: src/getting-started/index.md:3 msgid "" -"このセクションは、Tazuna を初めて手元で動かせる状態にするまでを通します。 こ" -"こを通したあと、実際の `tazuna.yaml` の書きかたは [ガイド - 最初の " -"tazuna.yaml を書く](../guides/first-tazuna-yaml.md) に進んでください。" +"このセクションは、Tazuna を初めて手元で動かせる状態にするまでを通します。 ここを通したあと、実際の `tazuna.yaml` の書きかたは " +"[ガイド - 最初の tazuna.yaml を書く](../guides/first-tazuna-yaml.md) に進んでください。" msgstr "" "This section walks you through everything needed to get Tazuna running on " "your local machine for the first time. Once you have completed it, see " @@ -401,24 +393,22 @@ msgstr "Use a Release Binary" #: src/getting-started/index.md:19 msgid "" -"GitHub の [Releases](https://github.com/pepabo/tazuna/releases) から、 お使い" -"の OS / arch のアーカイブをダウンロードし、`tazuna` を `PATH` に置きます。" +"GitHub の [Releases](https://github.com/pepabo/tazuna/releases) から、 お使いの OS /" +" arch のアーカイブをダウンロードし、`tazuna` を `PATH` に置きます。" msgstr "" -"Download the archive for your OS / arch from GitHub [Releases](https://" -"github.com/pepabo/tazuna/releases), and place `tazuna` somewhere on your " -"`PATH`." +"Download the archive for your OS / arch from GitHub " +"[Releases](https://github.com/pepabo/tazuna/releases), and place `tazuna` " +"somewhere on your `PATH`." #: src/getting-started/index.md:23 msgid "# 例(macOS arm64 / Linux amd64 などのアーカイブを展開後)\n" msgstr "# Example (after extracting the macOS arm64 / Linux amd64 archive)\n" #: src/getting-started/index.md:28 -msgid "" -"CI で固定バージョンを使いたい場合や、再現性を担保したい場合はこの方法を推奨し" -"ます。" +msgid "CI で固定バージョンを使いたい場合や、再現性を担保したい場合はこの方法を推奨します。" msgstr "" -"This is the recommended method when you want to pin a specific version in CI " -"or guarantee reproducibility." +"This is the recommended method when you want to pin a specific version in CI" +" or guarantee reproducibility." #: src/getting-started/index.md:30 msgid "`go install` を使う" @@ -430,8 +420,8 @@ msgstr "If you have a Go 1.x toolchain, you can build directly from source." #: src/getting-started/index.md:38 msgid "" -"`@latest` の代わりに `@v0.x.y` でバージョンを固定できます。 バイナリは `$(go " -"env GOBIN)`(未設定なら `$(go env GOPATH)/bin`)に入ります。" +"`@latest` の代わりに `@v0.x.y` でバージョンを固定できます。 バイナリは `$(go env GOBIN)`(未設定なら `$(go" +" env GOPATH)/bin`)に入ります。" msgstr "" "You can pin a version with `@v0.x.y` instead of `@latest`. The binary is " "placed in `$(go env GOBIN)` (or `$(go env GOPATH)/bin` if unset)." @@ -465,21 +455,19 @@ msgstr "" "configuration." #: src/getting-started/index.md:59 -msgid "" -"`tazuna version` の出力は次のような形式です(実際の値は環境によって変わりま" -"す)。" +msgid "`tazuna version` の出力は次のような形式です(実際の値は環境によって変わります)。" msgstr "" "The output of `tazuna version` looks like the following (actual values vary " "by environment)." #: src/getting-started/index.md:65 msgid "" -"ローカルビルドの場合は `version` / `commit` / `built` がそれぞれ `dev` / " -"`none` / `unknown` になります([`tazuna version`](../reference/cli/" -"version.md) を参照)。" +"ローカルビルドの場合は `version` / `commit` / `built` がそれぞれ `dev` / `none` / `unknown` " +"になります([`tazuna version`](../reference/cli/version.md) を参照)。" msgstr "" "For local builds, `version` / `commit` / `built` will be `dev` / `none` / " -"`unknown` respectively (see [`tazuna version`](../reference/cli/version.md))." +"`unknown` respectively (see [`tazuna " +"version`](../reference/cli/version.md))." #: src/getting-started/index.md:68 msgid "3. 前提を揃える" @@ -487,9 +475,8 @@ msgstr "3. Prepare the Prerequisites" #: src/getting-started/index.md:70 msgid "" -"`tazuna` がクラスタに対して動作するためには、いくつかの前提が必要です。 すべ" -"て必須ではありません。下の表の「必須」だけまず揃えればよく、 1Password / git " -"は使う機能に応じて任意で揃えます。" +"`tazuna` がクラスタに対して動作するためには、いくつかの前提が必要です。 すべて必須ではありません。下の表の「必須」だけまず揃えればよく、 " +"1Password / git は使う機能に応じて任意で揃えます。" msgstr "" "For `tazuna` to operate against a cluster, a few prerequisites are needed. " "Not all of them are required. You only need to prepare the ones marked " @@ -506,8 +493,9 @@ msgstr "Required?" #: src/getting-started/index.md:74 src/operations/observability.md:14 #: src/reference/tazuna-yaml.md:13 src/reference/tazuna-yaml.md:33 -#: src/reference/tazuna-yaml.md:91 src/reference/tazuna-yaml.md:202 -#: src/reference/tazuna-yaml.md:216 src/reference/tazuna-hint-yaml.md:21 +#: src/reference/tazuna-yaml.md:96 src/reference/tazuna-yaml.md:167 +#: src/reference/tazuna-yaml.md:193 src/reference/tazuna-yaml.md:304 +#: src/reference/tazuna-yaml.md:318 src/reference/tazuna-hint-yaml.md:21 #: src/reference/tazuna-hint-yaml.md:50 src/reference/tazuna-hint-yaml.md:97 #: src/reference/genesis-secret.md:25 src/reference/genesis-secret.md:37 #: src/reference/genesis-secret.md:47 src/reference/genesis-secret.md:77 @@ -516,16 +504,17 @@ msgstr "Required?" #: src/reference/test-plugin.md:25 src/reference/test-plugin.md:66 #: src/reference/test-plugin.md:112 src/reference/state.md:62 #: src/reference/state.md:75 src/reference/manifest-types/kustomize.md:17 -#: src/reference/manifest-types/helmfile.md:21 -#: src/reference/manifest-types/helmfile.md:46 -#: src/reference/manifest-types/helmfile.md:60 +#: src/reference/manifest-types/helmfile.md:62 +#: src/reference/manifest-types/helmfile.md:87 +#: src/reference/manifest-types/helmfile.md:101 #: src/reference/manifest-types/oras.md:21 #: src/reference/manifest-types/oras.md:32 #: src/reference/manifest-types/oras.md:41 src/reference/cli/index.md:30 #: src/reference/cli/init.md:60 src/reference/cli/apply.md:49 #: src/reference/cli/build.md:25 src/reference/cli/check.md:25 #: src/reference/cli/destroy.md:34 src/reference/cli/destroy.md:45 -#: src/reference/cli/plan.md:76 src/reference/cli/secret-to-genesissecret.md:34 +#: src/reference/cli/plan.md:76 +#: src/reference/cli/secret-to-genesissecret.md:34 #: src/reference/cli/tags.md:31 msgid "説明" msgstr "Description" @@ -540,14 +529,14 @@ msgstr "Yes (when using `apply` / `destroy` / `state ...`)" #: src/getting-started/index.md:76 msgid "" -"コントロールプレーンの用意は Tazuna の範囲外です。手元で試すなら [KinD]" -"(https://kind.sigs.k8s.io/) / [minikube](https://minikube.sigs.k8s.io/)、リ" -"モートなら EKS / GKE / AKS / `kubeadm` などで構いません。" +"コントロールプレーンの用意は Tazuna の範囲外です。手元で試すなら [KinD](https://kind.sigs.k8s.io/) / " +"[minikube](https://minikube.sigs.k8s.io/)、リモートなら EKS / GKE / AKS / `kubeadm`" +" などで構いません。" msgstr "" "Setting up the control plane is outside Tazuna's scope. For local " -"experiments, use [KinD](https://kind.sigs.k8s.io/) / [minikube](https://" -"minikube.sigs.k8s.io/); for remote, EKS / GKE / AKS / `kubeadm` and so on " -"are all fine." +"experiments, use [KinD](https://kind.sigs.k8s.io/) / " +"[minikube](https://minikube.sigs.k8s.io/); for remote, EKS / GKE / AKS / " +"`kubeadm` and so on are all fine." #: src/getting-started/index.md:77 msgid "`kubeconfig` の current-context" @@ -559,8 +548,8 @@ msgstr "Yes (same as above)" #: src/getting-started/index.md:77 msgid "" -"`kubectl config current-context` で、入れたい先のクラスタを指していることを確" -"認します。`kubectl get nodes` が通る状態にしておきます。" +"`kubectl config current-context` で、入れたい先のクラスタを指していることを確認します。`kubectl get " +"nodes` が通る状態にしておきます。" msgstr "" "Verify with `kubectl config current-context` that it points to the cluster " "you want to apply to. Make sure `kubectl get nodes` works." @@ -574,8 +563,7 @@ msgid "\\-(推奨)" msgstr "\\- (recommended)" #: src/getting-started/index.md:78 -msgid "" -"Tazuna 自身は使いませんが、`kubeconfig` 操作や反映結果の確認で使います。" +msgid "Tazuna 自身は使いませんが、`kubeconfig` 操作や反映結果の確認で使います。" msgstr "" "Tazuna itself does not use it, but you will use it for `kubeconfig` " "manipulation and to verify applied results." @@ -589,9 +577,7 @@ msgid "\\-(不要)" msgstr "\\- (not needed)" #: src/getting-started/index.md:79 -msgid "" -"Tazuna は Go ライブラリとして組み込んでいるため、外部バイナリのインストールは" -"不要です。" +msgid "Tazuna は Go ライブラリとして組み込んでいるため、外部バイナリのインストールは不要です。" msgstr "" "Tazuna embeds them as Go libraries, so installing external binaries is not " "required." @@ -602,18 +588,16 @@ msgstr "1Password CLI (`op`)" #: src/getting-started/index.md:80 msgid "" -"\\-([`type: genesissecret`](../reference/manifest-types/genesissecret.md) " -"や [helmfile.vars の `from: op`](../reference/manifest-types/" -"helmfile.md#vars) を使うときのみ)" +"\\-([`type: genesissecret`](../reference/manifest-types/genesissecret.md) や " +"[helmfile.vars の `from: op`](../reference/manifest-types/helmfile.md#vars) " +"を使うときのみ)" msgstr "" -"\\- (only when using [`type: genesissecret`](../reference/manifest-types/" -"genesissecret.md) or [helmfile.vars's `from: op`](../reference/manifest-" -"types/helmfile.md#vars))" +"\\- (only when using [`type: genesissecret`](../reference/manifest-" +"types/genesissecret.md) or [helmfile.vars's `from: " +"op`](../reference/manifest-types/helmfile.md#vars))" #: src/getting-started/index.md:80 -msgid "" -"`op` コマンドが `PATH` にあり、サービスアカウントで認証されていることが前提で" -"す。" +msgid "`op` コマンドが `PATH` にあり、サービスアカウントで認証されていることが前提です。" msgstr "" "Requires the `op` command to be on `PATH` and authenticated with a service " "account." @@ -628,9 +612,8 @@ msgstr "\\- (optional)" #: src/getting-started/index.md:81 msgid "" -"`tazuna apply` 時に State の `_metadata.gitCommitHash` を埋めるために使いま" -"す。リポジトリ外で実行した場合や `git` が無い場合は、エラーにせず空文字で記録" -"されます。" +"`tazuna apply` 時に State の `_metadata.gitCommitHash` " +"を埋めるために使います。リポジトリ外で実行した場合や `git` が無い場合は、エラーにせず空文字で記録されます。" msgstr "" "Used to fill in State's `_metadata.gitCommitHash` during `tazuna apply`. If " "run outside a repository or if `git` is not installed, an empty string is " @@ -638,8 +621,8 @@ msgstr "" #: src/getting-started/index.md:83 msgid "" -"クラスタの選び方や `kubeconfig` の扱いについては、ガイドの [前提](../guides/" -"first-tazuna-yaml.md#前提) でも触れています。" +"クラスタの選び方や `kubeconfig` の扱いについては、ガイドの [前提](../guides/first-tazuna-yaml.md#前提)" +" でも触れています。" msgstr "" "Cluster selection and `kubeconfig` handling are also discussed in the " "guide's [Prerequisites](../guides/first-tazuna-yaml.md#前提) section." @@ -654,47 +637,41 @@ msgstr "At this point `tazuna` is running on your machine." #: src/getting-started/index.md:90 msgid "" -"[ガイド - 最初の tazuna.yaml を書く](../guides/first-tazuna-yaml.md) で、 実" -"際に `tazuna.yaml` を 1 枚書いて `apply` するところまで進めます。" +"[ガイド - 最初の tazuna.yaml を書く](../guides/first-tazuna-yaml.md) で、 実際に " +"`tazuna.yaml` を 1 枚書いて `apply` するところまで進めます。" msgstr "" "Proceed to [Guides - Writing Your First tazuna.yaml](../guides/first-tazuna-" "yaml.md), where you will write an actual `tazuna.yaml` and run `apply`." #: src/getting-started/index.md:92 -msgid "" -"仕様だけを引きたいときは [リファレンス](../reference/index.md) を参照してくだ" -"さい。" +msgid "仕様だけを引きたいときは [リファレンス](../reference/index.md) を参照してください。" msgstr "" -"When you just want to look up the specification, see the [Reference](../" -"reference/index.md)." +"When you just want to look up the specification, see the " +"[Reference](../reference/index.md)." #: src/getting-started/index.md:93 -msgid "" -"「なぜそうなっているか」が知りたい場合は [概念](../concepts/index.md) を参照" -"してください。" +msgid "「なぜそうなっているか」が知りたい場合は [概念](../concepts/index.md) を参照してください。" msgstr "" -"If you want to understand \"why it is shaped this way,\" see [Concepts](../" -"concepts/index.md)." +"If you want to understand \"why it is shaped this way,\" see " +"[Concepts](../concepts/index.md)." #: src/concepts/index.md:3 msgid "" -"このセクションでは、Tazuna がどのような問題を解こうとしているのか、 そしてそ" -"のためにどのような設計を採用しているのかを順を追って説明します。" +"このセクションでは、Tazuna がどのような問題を解こうとしているのか、 そしてそのためにどのような設計を採用しているのかを順を追って説明します。" msgstr "" "This section walks through what problems Tazuna is trying to solve, and the " "design choices it makes to address them." #: src/concepts/index.md:6 msgid "" -"「動かし方」よりも「なぜそのような形になっているか」を中心に書いているため、 " -"具体的なコマンド一覧や CLI フラグについては [リファレンス](../reference/" -"index.md)、 具体的な手順については [ガイド](../guides/index.md) を参照してく" -"ださい。" +"「動かし方」よりも「なぜそのような形になっているか」を中心に書いているため、 具体的なコマンド一覧や CLI フラグについては " +"[リファレンス](../reference/index.md)、 具体的な手順については [ガイド](../guides/index.md) " +"を参照してください。" msgstr "" "It focuses on *why* Tazuna is shaped the way it is rather than *how* to " -"drive it. For concrete command listings and CLI flags, see the [Reference]" -"(../reference/index.md); for step-by-step procedures, see the [Guides](../" -"guides/index.md)." +"drive it. For concrete command listings and CLI flags, see the " +"[Reference](../reference/index.md); for step-by-step procedures, see the " +"[Guides](../guides/index.md)." #: src/concepts/index.md:10 msgid "読み進め方" @@ -706,8 +683,8 @@ msgstr "The recommended reading order is as follows." #: src/concepts/index.md:14 msgid "" -"**[設計思想と想定ユースケース](./design-philosophy.md)** — Tazuna が何のため" -"に存在し、 どんな現場で使われることを想定しているかを最初に押さえます。" +"**[設計思想と想定ユースケース](./design-philosophy.md)** — Tazuna が何のために存在し、 " +"どんな現場で使われることを想定しているかを最初に押さえます。" msgstr "" "**[Design Philosophy and Intended Use Cases](./design-philosophy.md)** — " "start here to understand what Tazuna exists for and the environments it is " @@ -715,35 +692,32 @@ msgstr "" #: src/concepts/index.md:16 msgid "" -"**[全体アーキテクチャ](./architecture.md)** — `tazuna` バイナリの中に どんな" -"コンポーネントが入っていて、どのように協調するかを俯瞰します。" +"**[全体アーキテクチャ](./architecture.md)** — `tazuna` バイナリの中に " +"どんなコンポーネントが入っていて、どのように協調するかを俯瞰します。" msgstr "" "**[Overall Architecture](./architecture.md)** — an overview of the " "components inside the `tazuna` binary and how they cooperate." #: src/concepts/index.md:18 msgid "" -"**[`dependsOn` による DAG 実行](./depends-on.md)** — `dependsOn` を使った 並" -"列実行モデルがどう導出されるか、`type: parallel` 廃止の背景を扱います。" +"**[`dependsOn` による DAG 実行](./depends-on.md)** — `dependsOn` を使った " +"並列実行モデルがどう導出されるか、`type: parallel` 廃止の背景を扱います。" msgstr "" "**[DAG Execution via `dependsOn`](./depends-on.md)** — how the parallel " "execution model using `dependsOn` is derived, and the background behind " "retiring `type: parallel`." #: src/concepts/index.md:20 -msgid "" -"**[用語集](./glossary.md)** — このセクションで使われる用語の定義をまとめてい" -"ます。" +msgid "**[用語集](./glossary.md)** — このセクションで使われる用語の定義をまとめています。" msgstr "" "**[Glossary](./glossary.md)** — definitions of the terms used throughout " "this section." #: src/concepts/index.md:22 msgid "" -"`tazuna.yaml` のスキーマや各 Manifest backend、State / マルチクラスタ / " -"Secret 連携の挙動など、より具体的な仕様は [リファレンス](../reference/" -"index.md) を参照してください。 途中で分からない言葉が出てきた場合は、まず用語" -"集を参照してください。" +"`tazuna.yaml` のスキーマや各 Manifest backend、State / マルチクラスタ / Secret " +"連携の挙動など、より具体的な仕様は [リファレンス](../reference/index.md) を参照してください。 " +"途中で分からない言葉が出てきた場合は、まず用語集を参照してください。" msgstr "" "For more concrete specifications — the `tazuna.yaml` schema, each manifest " "backend, and the behavior of state, multi-cluster, and secret integration — " @@ -752,9 +726,8 @@ msgstr "" #: src/concepts/design-philosophy.md:3 msgid "" -"Tazuna は「マルチクラスタ Kubernetes のブートストラップライフサイクルを管理す" -"る CLI」です。 ここでは、なぜそういうツールが必要になるのか、Tazuna が何を肩" -"代わりし、何は肩代わりしないのか、 という設計上のスタンスを整理します。" +"Tazuna は「マルチクラスタ Kubernetes のブートストラップライフサイクルを管理する CLI」です。 " +"ここでは、なぜそういうツールが必要になるのか、Tazuna が何を肩代わりし、何は肩代わりしないのか、 という設計上のスタンスを整理します。" msgstr "" "Tazuna is \"a CLI for managing the bootstrap lifecycle of multi-cluster " "Kubernetes.\" This page lays out the design stance behind it: why such a " @@ -767,11 +740,11 @@ msgstr "The problem we are trying to solve" #: src/concepts/design-philosophy.md:9 msgid "" -"Kubernetes クラスタは、API サーバが立ち上がっただけでは実用には使えません。 " -"そこから「自分たちのクラスタ」と呼べる状態にするまでには、" +"Kubernetes クラスタは、API サーバが立ち上がっただけでは実用には使えません。 そこから「自分たちのクラスタ」と呼べる状態にするまでには、" msgstr "" -"A Kubernetes cluster is not yet usable just because its API server is up. To " -"get from there to a state you can call \"our cluster,\" you need to install:" +"A Kubernetes cluster is not yet usable just because its API server is up. To" +" get from there to a state you can call \"our cluster,\" you need to " +"install:" #: src/concepts/design-philosophy.md:12 msgid "CNI / Ingress / cert-manager のような **インフラ層のアドオン**" @@ -787,16 +760,13 @@ msgid "各種オペレータや CRD" msgstr "Various operators and CRDs" #: src/concepts/design-philosophy.md:16 -msgid "" -"といったレイヤを、**正しい順序で、依存関係を保ちながら** クラスタに入れる必要" -"があります。" +msgid "といったレイヤを、**正しい順序で、依存関係を保ちながら** クラスタに入れる必要があります。" msgstr "" "All of these layers must be installed into the cluster **in the correct " "order, preserving their dependencies**." #: src/concepts/design-philosophy.md:18 -msgid "" -"これを手作業や 複雑な運用手順書、シンプルなシェルスクリプトで代用すると、" +msgid "これを手作業や 複雑な運用手順書、シンプルなシェルスクリプトで代用すると、" msgstr "" "If you substitute manual work, sprawling runbooks, or simple shell scripts " "for this, you run into problems like:" @@ -811,9 +781,8 @@ msgstr "The cluster bootstrap procedure going stale" #: src/concepts/design-philosophy.md:23 msgid "" -"といった問題が積み上がります。Tazuna はここに **単一の宣言的な設定ファイル** " -"と **統一された CLI** を持ち込み、ブートストラップという「特定の段階」だけを" -"明示的に扱います。" +"といった問題が積み上がります。Tazuna はここに **単一の宣言的な設定ファイル** と **統一された CLI** " +"を持ち込み、ブートストラップという「特定の段階」だけを明示的に扱います。" msgstr "" "These problems pile up. Tazuna addresses this by bringing in **a single " "declarative configuration file** and **a unified CLI**, explicitly handling " @@ -825,37 +794,33 @@ msgstr "The idea of running Kubernetes clusters immutably" #: src/concepts/design-philosophy.md:28 msgid "" -"Tazuna の背景にある考え方のひとつが、Kubernetes クラスタそのものを **イミュー" -"タブル(不変)なリソースとして扱う** という発想です。 ここでいうイミュータブ" -"ルとは、**「動いているクラスタを継ぎ足しで直していく」のをやめて、 クラスタは" -"常に同じ手順で作り直せる状態にしておく** ことを指します。" +"Tazuna の背景にある考え方のひとつが、Kubernetes クラスタそのものを **イミュータブル(不変)なリソースとして扱う** " +"という発想です。 ここでいうイミュータブルとは、**「動いているクラスタを継ぎ足しで直していく」のをやめて、 " +"クラスタは常に同じ手順で作り直せる状態にしておく** ことを指します。" msgstr "" "One of the ideas behind Tazuna is to **treat the Kubernetes cluster itself " -"as an immutable resource**. \"Immutable\" here means **giving up on patching " -"a running cluster in place over time, and instead keeping the cluster in a " +"as an immutable resource**. \"Immutable\" here means **giving up on patching" +" a running cluster in place over time, and instead keeping the cluster in a " "state where it can always be rebuilt by the same procedure**." #: src/concepts/design-philosophy.md:33 msgid "" -"ここで「不変」と言っているのは **クラスタの土台レイヤ** の話です。 " -"Deployment で動いているアプリケーションの Pod が新しいイメージに置き換わった" -"り、 HPA でレプリカ数が変化したりすることを mutate と呼んでいるわけではありま" -"せん。 対象にしているのは、CNI / Ingress / cert-manager / ArgoCD といった **" -"インフラアドオン**や、それらが依存する CRD やオペレータといった、 クラスタを" -"「クラスタとして成立させている」基盤レイヤです。 アプリケーションレイヤは、そ" -"の上で GitOps によって自由に mutate されてかまいません。" +"ここで「不変」と言っているのは **クラスタの土台レイヤ** の話です。 Deployment で動いているアプリケーションの Pod " +"が新しいイメージに置き換わったり、 HPA でレプリカ数が変化したりすることを mutate と呼んでいるわけではありません。 " +"対象にしているのは、CNI / Ingress / cert-manager / ArgoCD といった **インフラアドオン**や、それらが依存する " +"CRD やオペレータといった、 クラスタを「クラスタとして成立させている」基盤レイヤです。 アプリケーションレイヤは、その上で GitOps " +"によって自由に mutate されてかまいません。" msgstr "" "When we say \"immutable\" here, we mean **the cluster's foundation layer**. " "We are not calling it a mutation when an application Pod managed by a " "Deployment is replaced with a new image, or when HPA changes the replica " "count. What we have in mind is the **infrastructure add-ons** such as CNI, " "Ingress, cert-manager, and ArgoCD, along with the CRDs and operators they " -"depend on — the foundation layer that makes the cluster \"a cluster\" in the " -"first place. The application layer on top is free to mutate via GitOps." +"depend on — the foundation layer that makes the cluster \"a cluster\" in the" +" first place. The application layer on top is free to mutate via GitOps." #: src/concepts/design-philosophy.md:41 -msgid "" -"長期間運用していると、クラスタには次のような変更が少しずつ溜まっていきます。" +msgid "長期間運用していると、クラスタには次のような変更が少しずつ溜まっていきます。" msgstr "" "Over a long operational lifetime, changes like the following slowly " "accumulate on a cluster:" @@ -876,15 +841,13 @@ msgstr "Add-ons installed with a local `helm install`" #: src/concepts/design-philosophy.md:47 msgid "" -"これらが積み重なると、**「実際に動いているクラスタ」と「コードで宣言したクラ" -"スタ」が 徐々にずれていく**(コンフィグレーションドリフト)状態になります。 " -"こうなるとクラスタを作り直すコストが跳ね上がり、DR / リージョン追加 / " -"Kubernetes バージョンアップといった「クラスタごと入れ替えたい」場面で動けなく" -"なります。" +"これらが積み重なると、**「実際に動いているクラスタ」と「コードで宣言したクラスタ」が " +"徐々にずれていく**(コンフィグレーションドリフト)状態になります。 こうなるとクラスタを作り直すコストが跳ね上がり、DR / リージョン追加 / " +"Kubernetes バージョンアップといった「クラスタごと入れ替えたい」場面で動けなくなります。" msgstr "" "As these pile up, **the cluster that is actually running and the cluster " -"declared in code drift apart** (configuration drift). Once that happens, the " -"cost of rebuilding the cluster shoots up, and you can no longer move when " +"declared in code drift apart** (configuration drift). Once that happens, the" +" cost of rebuilding the cluster shoots up, and you can no longer move when " "you want to \"swap out the whole cluster\" — for DR, adding a region, or a " "Kubernetes version upgrade." @@ -893,16 +856,13 @@ msgid "イミュータブルに運用するというのは、この状況を裏 msgstr "Running clusters immutably means flipping that situation around:" #: src/concepts/design-philosophy.md:54 -msgid "" -"クラスタの中身は **すべて宣言された設定から再生成できる** ことを前提にする" +msgid "クラスタの中身は **すべて宣言された設定から再生成できる** ことを前提にする" msgstr "" "Assume the cluster's contents **can all be regenerated from declared " "configuration**" #: src/concepts/design-philosophy.md:55 -msgid "" -"ブートストラップ後の add-on レイヤは、必要なら **一度クラスタを捨てて作り直し" -"ても同じになる**" +msgid "ブートストラップ後の add-on レイヤは、必要なら **一度クラスタを捨てて作り直しても同じになる**" msgstr "" "The post-bootstrap add-on layer should **come out the same even if the " "cluster is thrown away and rebuilt from scratch**" @@ -915,30 +875,26 @@ msgstr "" #: src/concepts/design-philosophy.md:58 msgid "" -"という運用スタイルを選ぶことです。アプリケーションレイヤであれば、これは " -"ArgoCD や Flux のような GitOps ツールがすでに担保しています。 一方で、**その " -"GitOps ツール自身を含む「ブートストラップ層」** は、 従来は手順書とシェルスク" -"リプトに頼りがちで、イミュータブルさが最も崩れやすい場所でした。" +"という運用スタイルを選ぶことです。アプリケーションレイヤであれば、これは ArgoCD や Flux のような GitOps " +"ツールがすでに担保しています。 一方で、**その GitOps ツール自身を含む「ブートストラップ層」** は、 " +"従来は手順書とシェルスクリプトに頼りがちで、イミュータブルさが最も崩れやすい場所でした。" msgstr "" "That is the operational stance immutable operation entails. For the " -"application layer, GitOps tools like ArgoCD and Flux already guarantee this. " -"By contrast, **the \"bootstrap layer\" — which includes those GitOps tools " +"application layer, GitOps tools like ArgoCD and Flux already guarantee this." +" By contrast, **the \"bootstrap layer\" — which includes those GitOps tools " "themselves** — has traditionally relied on runbooks and shell scripts and " "has been the place where immutability is most easily lost." #: src/concepts/design-philosophy.md:63 -msgid "" -"Tazuna は、このブートストラップ層をイミュータブル運用の枠に乗せるための部品と" -"して位置付けています。" +msgid "Tazuna は、このブートストラップ層をイミュータブル運用の枠に乗せるための部品として位置付けています。" msgstr "" "Tazuna positions itself as the piece that brings this bootstrap layer onto " "the same immutable footing." #: src/concepts/design-philosophy.md:65 msgid "" -"`tazuna.yaml` という **単一の宣言的な設定ファイル** に CNI / Ingress / cert-" -"manager / ArgoCD などの構成順序を書き切ることで、クラスタの初期状態を **コー" -"ドから一意に再生成できる**ようにします。" +"`tazuna.yaml` という **単一の宣言的な設定ファイル** に CNI / Ingress / cert-manager / ArgoCD " +"などの構成順序を書き切ることで、クラスタの初期状態を **コードから一意に再生成できる**ようにします。" msgstr "" "By writing the ordering of CNI / Ingress / cert-manager / ArgoCD and so on " "into a **single declarative configuration file**, `tazuna.yaml`, the " @@ -946,31 +902,29 @@ msgstr "" #: src/concepts/design-philosophy.md:68 msgid "" -"`tazuna apply` は、その宣言と実クラスタの差分を埋める操作です。 「新規クラス" -"タの初日」と「既存クラスタへの追従」を **同じコマンド** で扱うので、 作り直し" -"たクラスタも既存クラスタも、最終的に同じ宣言に収束します。" +"`tazuna apply` は、その宣言と実クラスタの差分を埋める操作です。 「新規クラスタの初日」と「既存クラスタへの追従」を **同じコマンド**" +" で扱うので、 作り直したクラスタも既存クラスタも、最終的に同じ宣言に収束します。" msgstr "" -"`tazuna apply` is the operation that closes the gap between that declaration " -"and the live cluster. \"Day one of a new cluster\" and \"catching up an " +"`tazuna apply` is the operation that closes the gap between that declaration" +" and the live cluster. \"Day one of a new cluster\" and \"catching up an " "existing cluster\" are both handled by **the same command**, so a freshly " "rebuilt cluster and a long-lived one both converge to the same declaration." #: src/concepts/design-philosophy.md:71 msgid "" -"`state` によって「いま何が入っているか」を持ち、`context_matches` で どのクラ" -"スタに対する宣言なのかを縛ることで、 **「別のクラスタに間違って適用する」「適" -"用したかどうか分からない」** を仕組みで防ぎます。" +"`state` によって「いま何が入っているか」を持ち、`context_matches` で どのクラスタに対する宣言なのかを縛ることで、 " +"**「別のクラスタに間違って適用する」「適用したかどうか分からない」** を仕組みで防ぎます。" msgstr "" -"By holding \"what is currently installed\" in `state` and pinning down which " -"cluster a declaration belongs to via `context_matches`, Tazuna structurally " -"prevents **\"applying to the wrong cluster by mistake\"** and **\"not " +"By holding \"what is currently installed\" in `state` and pinning down which" +" cluster a declaration belongs to via `context_matches`, Tazuna structurally" +" prevents **\"applying to the wrong cluster by mistake\"** and **\"not " "knowing whether something has been applied.\"**" #: src/concepts/design-philosophy.md:74 msgid "" -"ブートストラップが終わったあとのアプリケーション運用は ArgoCD / Flux に渡しま" -"す。 ここでイミュータブル運用のバトンがアプリケーションレイヤに引き継がれ、 " -"**ブートストラップ層と継続的デリバリ層の両方** が宣言から再現可能になります。" +"ブートストラップが終わったあとのアプリケーション運用は ArgoCD / Flux に渡します。 " +"ここでイミュータブル運用のバトンがアプリケーションレイヤに引き継がれ、 **ブートストラップ層と継続的デリバリ層の両方** " +"が宣言から再現可能になります。" msgstr "" "Once bootstrap is done, application operations are handed off to ArgoCD / " "Flux. The baton of immutable operation passes to the application layer, and " @@ -979,17 +933,16 @@ msgstr "" #: src/concepts/design-philosophy.md:78 msgid "" -"なお Tazuna は「クラスタを毎回作り直して運用すること」を強制するわけではあり" -"ません。 実際にイミュータブルに運用する(クラスタごと作り直して切り替える)ス" -"タイルも 想定の中に入っていますが、より重視しているのは、その一歩手前の性質、" -"すなわち **「Kubernetes クラスタが任意のタイミングで壊れたとしても、保証され" -"た手順で 自動的に再構築できる」** 状態を常に保てることです。" +"なお Tazuna は「クラスタを毎回作り直して運用すること」を強制するわけではありません。 " +"実際にイミュータブルに運用する(クラスタごと作り直して切り替える)スタイルも " +"想定の中に入っていますが、より重視しているのは、その一歩手前の性質、すなわち **「Kubernetes " +"クラスタが任意のタイミングで壊れたとしても、保証された手順で 自動的に再構築できる」** 状態を常に保てることです。" msgstr "" "Note that Tazuna does not force you to actually rebuild the cluster every " -"time. The strict immutable style — rebuilding and swapping entire clusters — " -"is within scope, but what we care about more is the property one step before " -"that: keeping the cluster in a state where **\"even if the Kubernetes " -"cluster breaks at any moment, it can be rebuilt automatically by a " +"time. The strict immutable style — rebuilding and swapping entire clusters —" +" is within scope, but what we care about more is the property one step " +"before that: keeping the cluster in a state where **\"even if the Kubernetes" +" cluster breaks at any moment, it can be rebuilt automatically by a " "guaranteed procedure.\"**" #: src/concepts/design-philosophy.md:84 @@ -1001,12 +954,10 @@ msgid "普段は同じクラスタを使い続けて運用する" msgstr "Keep using the same cluster for ordinary day-to-day operations" #: src/concepts/design-philosophy.md:87 -msgid "" -"DR や大きなバージョンアップのタイミングだけ、別のクラスタを丸ごと立てて切り替" -"える" +msgid "DR や大きなバージョンアップのタイミングだけ、別のクラスタを丸ごと立てて切り替える" msgstr "" -"Only for DR or major version upgrades, stand up an entirely separate cluster " -"and switch over to it" +"Only for DR or major version upgrades, stand up an entirely separate cluster" +" and switch over to it" #: src/concepts/design-philosophy.md:88 msgid "検証用の使い捨てクラスタを必要なときに立ち上げる" @@ -1014,13 +965,13 @@ msgstr "Spin up throwaway clusters for verification whenever you need to" #: src/concepts/design-philosophy.md:90 msgid "といった選択肢を **そのときの状況に応じて選べる** ようになります。" -msgstr "— and **choose between these options based on the situation at hand**." +msgstr "" +"— and **choose between these options based on the situation at hand**." #: src/concepts/design-philosophy.md:92 msgid "" -"Tazuna は、その「保証された再構築手順」を `tazuna.yaml` というコードと " -"`tazuna apply` という一つのコマンドに集約することで、 イミュータブル運用を**" -"選べる状態を維持し続ける** ための土台を提供します。" +"Tazuna は、その「保証された再構築手順」を `tazuna.yaml` というコードと `tazuna apply` " +"という一つのコマンドに集約することで、 イミュータブル運用を**選べる状態を維持し続ける** ための土台を提供します。" msgstr "" "By concentrating that \"guaranteed rebuild procedure\" into the code of " "`tazuna.yaml` and the single command `tazuna apply`, Tazuna provides the " @@ -1036,9 +987,8 @@ msgstr "There are areas Tazuna deliberately stays out of." #: src/concepts/design-philosophy.md:100 msgid "" -"**継続的デリバリ** — ArgoCD や Flux の代替ではありません。Tazuna の役目は、 " -"そうしたツールをクラスタに **入れるまで** です。入ったあとは ArgoCD/Flux に渡" -"します。" +"**継続的デリバリ** — ArgoCD や Flux の代替ではありません。Tazuna の役目は、 そうしたツールをクラスタに **入れるまで** " +"です。入ったあとは ArgoCD/Flux に渡します。" msgstr "" "**Continuous delivery** — Tazuna is not a replacement for ArgoCD or Flux. " "Its job ends at **getting those tools into the cluster**; from there, it " @@ -1046,37 +996,33 @@ msgstr "" #: src/concepts/design-philosophy.md:102 msgid "" -"**マニフェストの中身を書く** — kustomize の overlay、helmfile の構成、Helm " -"chart の値は、 既存の各ツールの作法で書きます。Tazuna はそれらを **呼び出して" -"結果をクラスタへ流す** だけです。" +"**マニフェストの中身を書く** — kustomize の overlay、helmfile の構成、Helm chart の値は、 " +"既存の各ツールの作法で書きます。Tazuna はそれらを **呼び出して結果をクラスタへ流す** だけです。" msgstr "" "**Authoring the manifests themselves** — kustomize overlays, helmfile " -"compositions, and Helm chart values are written in each tool's own idiomatic " -"style. Tazuna only **invokes those tools and pushes the result into the " +"compositions, and Helm chart values are written in each tool's own idiomatic" +" style. Tazuna only **invokes those tools and pushes the result into the " "cluster**." #: src/concepts/design-philosophy.md:104 msgid "" -"**コントロールプレーンの作成** — `kubeadm` / `kops` / マネージドサービスのク" -"ラスタ自体は前提です。 Tazuna は `kubeconfig` を介して既存クラスタへ接続しま" -"す。" +"**コントロールプレーンの作成** — `kubeadm` / `kops` / マネージドサービスのクラスタ自体は前提です。 Tazuna は " +"`kubeconfig` を介して既存クラスタへ接続します。" msgstr "" "**Creating the control plane** — the cluster itself, built via `kubeadm` / " "`kops` / a managed service, is assumed to already exist. Tazuna connects to " "that existing cluster via `kubeconfig`." #: src/concepts/design-philosophy.md:106 -msgid "" -"**Secret 管理基盤そのもの** — Secret の格納先の参照を宣言しますが、 Tazuna 自" -"身は秘密を保管しません。" +msgid "**Secret 管理基盤そのもの** — Secret の格納先の参照を宣言しますが、 Tazuna 自身は秘密を保管しません。" msgstr "" "**The secret management backend itself** — Tazuna declares references to " "where secrets are stored, but does not store the secrets itself." #: src/concepts/design-philosophy.md:108 msgid "" -"**GitOps のロールバック・履歴管理** — `state` は「いま何が入っているか」を表" -"すもので、 歴史的なバージョン管理は git に任せます。" +"**GitOps のロールバック・履歴管理** — `state` は「いま何が入っているか」を表すもので、 歴史的なバージョン管理は git " +"に任せます。" msgstr "" "**GitOps rollbacks and history management** — `state` represents \"what is " "currently installed,\" and historical version control is left to git." @@ -1090,9 +1036,7 @@ msgid "具体的に Tazuna が嬉しい場面はおおむね次のようなと msgstr "Concretely, Tazuna shines in roughly the following situations." #: src/concepts/design-philosophy.md:115 -msgid "" -"**新規クラスタを立ち上げる初日** — `tazuna apply` 1 発で、 CNI からデプロイ基" -"盤までを所定の順序で入れたい。" +msgid "**新規クラスタを立ち上げる初日** — `tazuna apply` 1 発で、 CNI からデプロイ基盤までを所定の順序で入れたい。" msgstr "" "**Day one of bringing up a new cluster** — when you want to install " "everything from CNI to the deployment platform in the prescribed order with " @@ -1105,36 +1049,30 @@ msgstr "" #: src/concepts/design-philosophy.md:118 msgid "" -"**同じ役割のクラスタを複数立てる** — staging / production / dr といった 類似" -"クラスタを、ほぼ同じ `tazuna.yaml` で立ち上げたい。" +"**同じ役割のクラスタを複数立てる** — staging / production / dr といった 類似クラスタを、ほぼ同じ " +"`tazuna.yaml` で立ち上げたい。" msgstr "" "**Standing up multiple clusters with the same role** — when you want to " "bring up similar clusters such as staging / production / dr from nearly the " "same `tazuna.yaml`." #: src/concepts/design-philosophy.md:121 -msgid "" -"次は [全体アーキテクチャ](./architecture.md) で、これらをどんな部品で実現して" -"いるかを見ます。" +msgid "次は [全体アーキテクチャ](./architecture.md) で、これらをどんな部品で実現しているかを見ます。" msgstr "" "Next, in [Overall Architecture](./architecture.md), we look at the " "components that make this happen." #: src/concepts/architecture.md:3 -msgid "" -"このページでは Tazuna を構成する主なコンポーネントと、 それらが `tazuna " -"apply` のときにどう協調するかを俯瞰します。" +msgid "このページでは Tazuna を構成する主なコンポーネントと、 それらが `tazuna apply` のときにどう協調するかを俯瞰します。" msgstr "" "This page gives an overview of the main components that make up Tazuna and " "how they cooperate during `tazuna apply`." #: src/concepts/architecture.md:6 -msgid "" -"ここでは責務の境界だけを扱います。具体的なディレクトリ構成や Go パッケージの" -"分割方針は意図的に触れません。" +msgid "ここでは責務の境界だけを扱います。具体的なディレクトリ構成や Go パッケージの分割方針は意図的に触れません。" msgstr "" -"We only cover responsibility boundaries here. Concrete directory layouts and " -"Go package split policies are intentionally out of scope." +"We only cover responsibility boundaries here. Concrete directory layouts and" +" Go package split policies are intentionally out of scope." #: src/concepts/architecture.md:9 msgid "レイヤ図" @@ -1146,13 +1084,12 @@ msgstr "Roughly speaking, Tazuna has a three-layer structure:" #: src/concepts/architecture.md:46 msgid "" -"各 manifest は **1 つの Manager** を介してクラスタに反映されます。 適用前後の" -"検証は **Test plugin** に切り出されており、 manifest 単位でも tazuna.yaml 全" -"体でも実行できます。" +"各 manifest は **1 つの Manager** を介してクラスタに反映されます。 適用前後の検証は **Test plugin** " +"に切り出されており、 manifest 単位でも tazuna.yaml 全体でも実行できます。" msgstr "" -"Each manifest is reflected into the cluster via **a single Manager**. Pre/" -"post-apply verification is factored out into the **Test plugin**, which can " -"run per manifest or for the entire `tazuna.yaml`." +"Each manifest is reflected into the cluster via **a single Manager**. " +"Pre/post-apply verification is factored out into the **Test plugin**, which " +"can run per manifest or for the entire `tazuna.yaml`." #: src/concepts/architecture.md:50 msgid "主要コンポーネント" @@ -1160,24 +1097,23 @@ msgstr "Main components" #: src/concepts/architecture.md:52 msgid "" -"Tazuna は内部的に次のコンポーネントが組み合わさって動きます。 ここでは各コン" -"ポーネントが「何を入力に取り、何を出力するか」という責務だけを示します。" +"Tazuna は内部的に次のコンポーネントが組み合わさって動きます。 " +"ここでは各コンポーネントが「何を入力に取り、何を出力するか」という責務だけを示します。" msgstr "" -"Internally, Tazuna works by combining the components below. We only describe " -"each component's responsibility — \"what it takes as input and what it " +"Internally, Tazuna works by combining the components below. We only describe" +" each component's responsibility — \"what it takes as input and what it " "produces as output.\"" #: src/concepts/architecture.md:57 msgid "" -"サブコマンド(`apply`, `build`, `check`, `destroy`, `plan`, `status`, `state " -"list`, `state diff`, `state drift`, `secret-to-genesissecret`, `version` な" -"ど)の入り口です。 フラグの解釈と Runner の組み立てだけを担当し、ロジック自体" -"は持ちません。" +"サブコマンド(`apply`, `build`, `check`, `destroy`, `plan`, `status`, `state list`," +" `state diff`, `state drift`, `secret-to-genesissecret`, `version` " +"など)の入り口です。 フラグの解釈と Runner の組み立てだけを担当し、ロジック自体は持ちません。" msgstr "" "The entry point for subcommands (such as `apply`, `build`, `check`, " "`destroy`, `plan`, `status`, `state list`, `state diff`, `state drift`, " -"`secret-to-genesissecret`, and `version`). It only parses flags and wires up " -"the Runner; it holds no logic of its own." +"`secret-to-genesissecret`, and `version`). It only parses flags and wires up" +" the Runner; it holds no logic of its own." #: src/concepts/architecture.md:62 src/concepts/glossary.md:27 msgid "Runner" @@ -1225,10 +1161,9 @@ msgstr "Writing back to the State ConfigMap after a successful apply" #: src/concepts/architecture.md:75 msgid "" -"Runner は manifest type の種類を知りません。 「どの type に対してどの " -"Manager を使うか」というマップだけを持ち、 それ以外は Manager 側に委ねます。 " -"`dependsOn` の詳細は [`dependsOn` による DAG 実行](./depends-on.md) を参照し" -"てください。" +"Runner は manifest type の種類を知りません。 「どの type に対してどの Manager を使うか」というマップだけを持ち、 " +"それ以外は Manager 側に委ねます。 `dependsOn` の詳細は [`dependsOn` による DAG 実行](./depends-" +"on.md) を参照してください。" msgstr "" "The Runner does not know about the individual manifest types. It only holds " "a map of \"which Manager to use for which type\" and delegates everything " @@ -1241,8 +1176,7 @@ msgstr "Manager" #: src/concepts/architecture.md:82 msgid "" -"manifest type ごとの「実際の適用方法」を実装するコンポーネントです。 すべて" -"の Manager は次の 3 つの操作を提供します。" +"manifest type ごとの「実際の適用方法」を実装するコンポーネントです。 すべての Manager は次の 3 つの操作を提供します。" msgstr "" "A component that implements the \"actual way to apply\" for each manifest " "type. Every Manager exposes the following three operations:" @@ -1263,13 +1197,12 @@ msgstr "" #: src/concepts/architecture.md:89 msgid "" -"Runner はこの 3 操作だけを介して manifest type を均一に扱います。 個別のバッ" -"クエンドの責務分担は [リファレンス](../reference/index.md) を参照してくださ" -"い。" +"Runner はこの 3 操作だけを介して manifest type を均一に扱います。 個別のバックエンドの責務分担は " +"[リファレンス](../reference/index.md) を参照してください。" msgstr "" "The Runner treats all manifest types uniformly through just these three " -"operations. For the responsibility split of each individual backend, see the " -"[Reference](../reference/index.md)." +"operations. For the responsibility split of each individual backend, see the" +" [Reference](../reference/index.md)." #: src/concepts/architecture.md:92 msgid "Validator" @@ -1277,9 +1210,8 @@ msgstr "Validator" #: src/concepts/architecture.md:94 msgid "" -"`tazuna.yaml` のロード直後に走るスキーマ・パス整合性検証です。 `apply` も " -"`check` も最初にここを通り、不正な YAML や 存在しない `path` を **クラスタに" -"触る前に** 弾きます。" +"`tazuna.yaml` のロード直後に走るスキーマ・パス整合性検証です。 `apply` も `check` も最初にここを通り、不正な YAML " +"や 存在しない `path` を **クラスタに触る前に** 弾きます。" msgstr "" "Schema and path-consistency validation that runs immediately after loading " "`tazuna.yaml`. Both `apply` and `check` go through this first, rejecting " @@ -1291,14 +1223,14 @@ msgstr "Context guard" #: src/concepts/architecture.md:100 msgid "" -"`tazuna.yaml` の `context_matches` を読み、現在の kubeconfig context 名が そ" -"のパターン(複数の正規表現)に合致しているかを検証します。 合致しなければ " -"apply / destroy はここで終了し、クラスタには一切触れません。" +"`tazuna.yaml` の `context_matches` を読み、現在の kubeconfig context 名が " +"そのパターン(複数の正規表現)に合致しているかを検証します。 合致しなければ apply / destroy " +"はここで終了し、クラスタには一切触れません。" msgstr "" "Reads `context_matches` from `tazuna.yaml` and verifies that the current " "kubeconfig context name matches those patterns (a list of regular " -"expressions). If it does not match, `apply` / `destroy` stops here and never " -"touches the cluster." +"expressions). If it does not match, `apply` / `destroy` stops here and never" +" touches the cluster." #: src/concepts/architecture.md:104 msgid "State store" @@ -1306,40 +1238,37 @@ msgstr "State store" #: src/concepts/architecture.md:106 msgid "" -"Tazuna が「自分が入れたリソースの指紋」をクラスタに記録するための仕組みで" -"す。 保存先はクラスタ内の ConfigMap で、`apply` の成功時に書き込まれ、 " -"`state list` / `state diff` / `state drift` / `status` がここを起点に動きま" -"す。" +"Tazuna が「自分が入れたリソースの指紋」をクラスタに記録するための仕組みです。 保存先はクラスタ内の ConfigMap で、`apply` " +"の成功時に書き込まれ、 `state list` / `state diff` / `state drift` / `status` " +"がここを起点に動きます。" msgstr "" "The mechanism Tazuna uses to record \"fingerprints of the resources it " "installed\" inside the cluster. The storage is an in-cluster ConfigMap, " -"written on a successful `apply`; `state list` / `state diff` / `state " -"drift` / `status` all operate from here." +"written on a successful `apply`; `state list` / `state diff` / `state drift`" +" / `status` all operate from here." #: src/concepts/architecture.md:112 msgid "" -"`GenesisSecret` および helmfile の `vars.op` から参照される、 「シークレット" -"の取得元」を抽象化したコンポーネントです。 組み込みで 1Password " -"(`onepassword`) と envfile (`envfile`) の 2 種類を提供します。 `tazuna.yaml` " -"の `spec.providers[]` で複数の provider を宣言し、 GenesisSecret 側の " -"`spec.provider` で名前指定して使い分けられます。 詳細は [Secret provider](../" -"reference/secret-providers.md) を参照してください。" +"`GenesisSecret` および helmfile の `vars.op` から参照される、 " +"「シークレットの取得元」を抽象化したコンポーネントです。 組み込みで 1Password (`onepassword`) と envfile " +"(`envfile`) の 2 種類を提供します。 `tazuna.yaml` の `spec.providers[]` で複数の provider " +"を宣言し、 GenesisSecret 側の `spec.provider` で名前指定して使い分けられます。 詳細は [Secret " +"provider](../reference/secret-providers.md) を参照してください。" msgstr "" -"A component that abstracts \"where secrets are fetched from,\" referenced by " -"`GenesisSecret` and helmfile's `vars.op`. Two implementations are built in: " -"1Password (`onepassword`) and envfile (`envfile`). You can declare multiple " -"providers in `tazuna.yaml`'s `spec.providers[]` and select between them by " -"name via `spec.provider` on the GenesisSecret side. See [Secret provider](../" -"reference/secret-providers.md) for details." +"A component that abstracts \"where secrets are fetched from,\" referenced by" +" `GenesisSecret` and helmfile's `vars.op`. Two implementations are built in:" +" 1Password (`onepassword`) and envfile (`envfile`). You can declare multiple" +" providers in `tazuna.yaml`'s `spec.providers[]` and select between them by " +"name via `spec.provider` on the GenesisSecret side. See [Secret " +"provider](../reference/secret-providers.md) for details." #: src/concepts/architecture.md:121 msgid "" -"manifest 適用後(または `tazuna.yaml` 全体の適用後)に走らせる検証の仕組みで" -"す。 組み込みで次の 2 種が利用できます。" +"manifest 適用後(または `tazuna.yaml` 全体の適用後)に走らせる検証の仕組みです。 組み込みで次の 2 種が利用できます。" msgstr "" -"A verification mechanism that runs after a manifest is applied (or after the " -"entire `tazuna.yaml` is applied). The following two kinds are available out " -"of the box:" +"A verification mechanism that runs after a manifest is applied (or after the" +" entire `tazuna.yaml` is applied). The following two kinds are available out" +" of the box:" #: src/concepts/architecture.md:124 msgid "`wait-until` — 指定リソースが存在 / Ready / Available になるまで待つ" @@ -1359,9 +1288,8 @@ msgstr "Hint" #: src/concepts/architecture.md:129 msgid "" -"helmfile の `vars` が取りうる値の型・フォーマット (hostname / URL / email / " -"IP / CIDR / UUID / semver / datetime など)を 宣言的に検証するための補助コン" -"ポーネントです。" +"helmfile の `vars` が取りうる値の型・フォーマット (hostname / URL / email / IP / CIDR / UUID" +" / semver / datetime など)を 宣言的に検証するための補助コンポーネントです。" msgstr "" "An auxiliary component for declaratively validating the type and format of " "values that helmfile's `vars` may take — hostname, URL, email, IP, CIDR, " @@ -1373,12 +1301,11 @@ msgstr "Prompt" #: src/concepts/architecture.md:135 msgid "" -"破壊的操作の Yes/No 確認といった対話 I/O を抽象化するコンポーネントです。 非" -"対話モードやテスト時に振る舞いを差し替えるためのものです。" +"破壊的操作の Yes/No 確認といった対話 I/O を抽象化するコンポーネントです。 非対話モードやテスト時に振る舞いを差し替えるためのものです。" msgstr "" "A component that abstracts interactive I/O such as Yes/No confirmations for " -"destructive operations. It exists so that the behavior can be swapped out in " -"non-interactive mode or during tests." +"destructive operations. It exists so that the behavior can be swapped out in" +" non-interactive mode or during tests." #: src/concepts/architecture.md:138 msgid "`tazuna apply` のときの流れ" @@ -1394,47 +1321,41 @@ msgid "**CLI** がフラグを解釈し、Runner を組み立てる。" msgstr "**CLI** parses flags and wires up the Runner." #: src/concepts/architecture.md:143 -msgid "" -"**Validator** が `tazuna.yaml` を読み、スキーマと `path` の存在を検証する。" +msgid "**Validator** が `tazuna.yaml` を読み、スキーマと `path` の存在を検証する。" msgstr "" "**Validator** reads `tazuna.yaml` and verifies the schema and the existence " "of `path`s." #: src/concepts/architecture.md:144 -msgid "" -"`spec.context_matches` があれば **Context guard** が kubeconfig を検証する。" +msgid "`spec.context_matches` があれば **Context guard** が kubeconfig を検証する。" msgstr "" "If `spec.context_matches` is present, the **Context guard** verifies the " "kubeconfig." #: src/concepts/architecture.md:145 -msgid "" -"**Runner** が `includes` を展開し、`manifests[].path` を実行時パスへ変換す" -"る。" +msgid "**Runner** が `includes` を展開し、`manifests[].path` を実行時パスへ変換する。" msgstr "" "**Runner** expands `includes` and converts `manifests[].path` into runtime " "paths." #: src/concepts/architecture.md:146 -msgid "" -"`dependsOn` を解析して並列実行可能な層に分割する(未使用なら宣言順 1 件ず" -"つ)。" +msgid "`dependsOn` を解析して並列実行可能な層に分割する(未使用なら宣言順 1 件ずつ)。" msgstr "" "Analyze `dependsOn` and split into layers that can run in parallel (one " "manifest at a time in declaration order if unused)." #: src/concepts/architecture.md:147 msgid "" -"各層内の `manifests` について `--tags` で除外されないものを 対応する " -"**Manager** に goroutine で並列に渡す。" +"各層内の `manifests` について `--tags` で除外されないものを 対応する **Manager** に goroutine " +"で並列に渡す。" msgstr "" "Within each layer, hand the `manifests` not excluded by `--tags` to their " "corresponding **Manager** in parallel via goroutines." #: src/concepts/architecture.md:149 msgid "" -"各 Manager は内部で kustomize / helmfile / oras pull / 1Password 取得 などを" -"呼び出し、 結果をクラスタへ反映する。" +"各 Manager は内部で kustomize / helmfile / oras pull / 1Password 取得 などを呼び出し、 " +"結果をクラスタへ反映する。" msgstr "" "Each Manager internally invokes kustomize / helmfile / `oras pull` / " "1Password retrieval and so on, and reflects the result into the cluster." @@ -1452,9 +1373,9 @@ msgstr "" #: src/concepts/architecture.md:154 msgid "" -"`tazuna apply --sync` はこの 1〜5 までを使ったうえで、各 Manager の `Build` " -"結果から **State diff** を組み、追加分・変更分だけを apply します。`--prune` " -"を付けると、 State にあって Build に無いリソースの削除も行います。" +"`tazuna apply --sync` はこの 1〜5 までを使ったうえで、各 Manager の `Build` 結果から **State " +"diff** を組み、追加分・変更分だけを apply します。`--prune` を付けると、 State にあって Build " +"に無いリソースの削除も行います。" msgstr "" "`tazuna apply --sync` uses steps 1-5 above, builds a **State diff** from " "each Manager's `Build` result, and applies only the added or changed " @@ -1463,10 +1384,9 @@ msgstr "" #: src/concepts/depends-on.md:3 msgid "" -"Tazuna は、`tazuna.yaml` の `manifests[]` を **宣言順に逐次実行する** モード" -"と、 `dependsOn` を使った **軽量 DAG モード** の 2 つの実行モデルを持っていま" -"す。 このページでは、両者がどう切り替わり、DAG モードでどんな順序保証と並列性" -"が 提供されるのかをまとめます。" +"Tazuna は、`tazuna.yaml` の `manifests[]` を **宣言順に逐次実行する** モードと、 `dependsOn` " +"を使った **軽量 DAG モード** の 2 つの実行モデルを持っています。 このページでは、両者がどう切り替わり、DAG " +"モードでどんな順序保証と並列性が 提供されるのかをまとめます。" msgstr "" "Tazuna has two execution models for `tazuna.yaml`'s `manifests[]`: a mode " "that **runs them sequentially in declaration order**, and a **lightweight " @@ -1479,9 +1399,8 @@ msgstr "Switching rules" #: src/concepts/depends-on.md:10 msgid "" -"`tazuna.yaml` の **どの Manifest にも `dependsOn` が書かれていない** 場合、 " -"従来通り宣言順に 1 つずつ apply されます。これは後方互換のための既定挙動で" -"す。" +"`tazuna.yaml` の **どの Manifest にも `dependsOn` が書かれていない** 場合、 従来通り宣言順に 1 つずつ " +"apply されます。これは後方互換のための既定挙動です。" msgstr "" "When **no Manifest in `tazuna.yaml` declares `dependsOn`**, manifests are " "applied one at a time in declaration order as before. This is the default " @@ -1490,10 +1409,12 @@ msgstr "" #: src/concepts/depends-on.md:14 src/concepts/depends-on.md:33 #: src/guides/first-tazuna-yaml.md:89 src/guides/first-tazuna-yaml.md:99 #: src/guides/first-tazuna-yaml.md:126 src/guides/first-tazuna-yaml.md:145 -#: src/operations/destroy-runbook.md:21 src/reference/tazuna-yaml.md:23 -#: src/reference/tazuna-yaml.md:56 src/reference/tazuna-yaml.md:78 -#: src/reference/tazuna-yaml.md:165 src/reference/tazuna-yaml.md:191 -#: src/reference/tazuna-yaml.md:223 src/reference/genesis-secret.md:173 +#: src/guides/environments.md:22 src/guides/environments.md:50 +#: src/guides/environments.md:95 src/operations/destroy-runbook.md:21 +#: src/reference/tazuna-yaml.md:23 src/reference/tazuna-yaml.md:57 +#: src/reference/tazuna-yaml.md:79 src/reference/tazuna-yaml.md:120 +#: src/reference/tazuna-yaml.md:267 src/reference/tazuna-yaml.md:293 +#: src/reference/tazuna-yaml.md:325 src/reference/genesis-secret.md:173 #: src/reference/genesis-secret.md:193 src/reference/secret-providers.md:29 #: src/reference/secret-providers.md:81 src/reference/secret-providers.md:99 #: src/reference/cli/init.md:26 @@ -1502,12 +1423,14 @@ msgstr "spec" #: src/concepts/depends-on.md:15 src/concepts/depends-on.md:34 #: src/guides/first-tazuna-yaml.md:129 src/guides/first-tazuna-yaml.md:148 -#: src/operations/destroy-runbook.md:25 src/reference/tazuna-yaml.md:25 -#: src/reference/tazuna-yaml.md:58 src/reference/tazuna-yaml.md:83 -#: src/reference/tazuna-yaml.md:166 src/reference/tazuna-yaml.md:224 +#: src/guides/environments.md:24 src/guides/environments.md:62 +#: src/guides/environments.md:103 src/operations/destroy-runbook.md:25 +#: src/reference/tazuna-yaml.md:25 src/reference/tazuna-yaml.md:59 +#: src/reference/tazuna-yaml.md:84 src/reference/tazuna-yaml.md:134 +#: src/reference/tazuna-yaml.md:268 src/reference/tazuna-yaml.md:326 #: src/reference/genesis-secret.md:14 src/reference/secret-providers.md:58 #: src/reference/manifest-types/kustomize.md:35 -#: src/reference/manifest-types/helmfile.md:99 +#: src/reference/manifest-types/helmfile.md:140 #: src/reference/manifest-types/oras.md:117 #: src/reference/manifest-types/oras.md:133 #: src/reference/manifest-types/genesissecret.md:17 @@ -1520,13 +1443,15 @@ msgstr "manifests" #: src/concepts/depends-on.md:38 src/concepts/depends-on.md:42 #: src/concepts/depends-on.md:46 src/guides/first-tazuna-yaml.md:86 #: src/guides/first-tazuna-yaml.md:101 src/guides/first-tazuna-yaml.md:149 -#: src/operations/ci-pipeline.md:27 src/operations/ci-pipeline.md:30 -#: src/operations/ci-pipeline.md:42 src/operations/ci-pipeline.md:45 -#: src/operations/ci-pipeline.md:70 src/operations/observability.md:71 -#: src/reference/tazuna-yaml.md:26 src/reference/tazuna-yaml.md:167 -#: src/reference/tazuna-yaml.md:170 src/reference/tazuna-yaml.md:174 -#: src/reference/tazuna-yaml.md:178 src/reference/tazuna-yaml.md:193 -#: src/reference/tazuna-yaml.md:196 src/reference/tazuna-yaml.md:225 +#: src/guides/environments.md:25 src/guides/environments.md:63 +#: src/guides/environments.md:104 src/operations/ci-pipeline.md:27 +#: src/operations/ci-pipeline.md:30 src/operations/ci-pipeline.md:42 +#: src/operations/ci-pipeline.md:45 src/operations/ci-pipeline.md:70 +#: src/operations/observability.md:71 src/reference/tazuna-yaml.md:26 +#: src/reference/tazuna-yaml.md:135 src/reference/tazuna-yaml.md:269 +#: src/reference/tazuna-yaml.md:272 src/reference/tazuna-yaml.md:276 +#: src/reference/tazuna-yaml.md:280 src/reference/tazuna-yaml.md:295 +#: src/reference/tazuna-yaml.md:298 src/reference/tazuna-yaml.md:327 #: src/reference/genesis-secret.md:15 src/reference/genesis-secret.md:186 #: src/reference/genesis-secret.md:206 src/reference/secret-providers.md:40 #: src/reference/secret-providers.md:51 src/reference/secret-providers.md:54 @@ -1535,7 +1460,8 @@ msgstr "manifests" #: src/reference/test-plugin.md:135 src/reference/test-plugin.md:147 #: src/reference/manifest-types/kustomize.md:36 #: src/reference/manifest-types/kustomize.md:42 -#: src/reference/manifest-types/helmfile.md:100 +#: src/reference/manifest-types/helmfile.md:37 +#: src/reference/manifest-types/helmfile.md:141 #: src/reference/manifest-types/oras.md:118 #: src/reference/manifest-types/oras.md:134 #: src/reference/manifest-types/genesissecret.md:18 @@ -1545,8 +1471,8 @@ msgstr "name" #: src/concepts/depends-on.md:16 src/concepts/depends-on.md:35 #: src/concepts/depends-on.md:41 src/concepts/depends-on.md:45 -#: src/reference/tazuna-yaml.md:167 src/reference/tazuna-yaml.md:173 -#: src/reference/tazuna-yaml.md:177 +#: src/reference/tazuna-yaml.md:269 src/reference/tazuna-yaml.md:275 +#: src/reference/tazuna-yaml.md:279 msgid "cni" msgstr "cni" @@ -1554,10 +1480,12 @@ msgstr "cni" #: src/concepts/depends-on.md:23 src/concepts/depends-on.md:36 #: src/concepts/depends-on.md:39 src/concepts/depends-on.md:43 #: src/concepts/depends-on.md:47 src/guides/first-tazuna-yaml.md:150 -#: src/reference/tazuna-yaml.md:27 src/reference/tazuna-yaml.md:168 -#: src/reference/tazuna-yaml.md:171 src/reference/tazuna-yaml.md:175 -#: src/reference/tazuna-yaml.md:179 src/reference/tazuna-yaml.md:194 -#: src/reference/tazuna-yaml.md:197 src/reference/tazuna-hint-yaml.md:39 +#: src/guides/environments.md:26 src/guides/environments.md:64 +#: src/guides/environments.md:105 src/reference/tazuna-yaml.md:27 +#: src/reference/tazuna-yaml.md:136 src/reference/tazuna-yaml.md:270 +#: src/reference/tazuna-yaml.md:273 src/reference/tazuna-yaml.md:277 +#: src/reference/tazuna-yaml.md:281 src/reference/tazuna-yaml.md:296 +#: src/reference/tazuna-yaml.md:299 src/reference/tazuna-hint-yaml.md:39 #: src/reference/tazuna-hint-yaml.md:42 src/reference/tazuna-hint-yaml.md:109 #: src/reference/genesis-secret.md:16 src/reference/genesis-secret.md:207 #: src/reference/secret-providers.md:52 src/reference/secret-providers.md:55 @@ -1567,7 +1495,7 @@ msgstr "cni" #: src/reference/test-plugin.md:139 #: src/reference/manifest-types/kustomize.md:37 #: src/reference/manifest-types/kustomize.md:43 -#: src/reference/manifest-types/helmfile.md:101 +#: src/reference/manifest-types/helmfile.md:142 #: src/reference/manifest-types/oras.md:119 #: src/reference/manifest-types/oras.md:124 #: src/reference/manifest-types/oras.md:135 @@ -1580,8 +1508,10 @@ msgstr "type" #: src/concepts/depends-on.md:17 src/concepts/depends-on.md:23 #: src/concepts/depends-on.md:36 src/concepts/depends-on.md:47 #: src/concepts/glossary.md:146 src/guides/first-tazuna-yaml.md:150 -#: src/reference/tazuna-yaml.md:27 src/reference/tazuna-yaml.md:168 -#: src/reference/tazuna-yaml.md:179 +#: src/guides/environments.md:26 src/guides/environments.md:64 +#: src/guides/environments.md:105 src/reference/tazuna-yaml.md:27 +#: src/reference/tazuna-yaml.md:136 src/reference/tazuna-yaml.md:270 +#: src/reference/tazuna-yaml.md:281 #: src/reference/manifest-types/kustomize.md:37 #: src/reference/manifest-types/kustomize.md:43 #: src/reference/manifest-types/kustomize.md:45 @@ -1594,15 +1524,17 @@ msgstr "kustomize" #: src/concepts/depends-on.md:24 src/concepts/depends-on.md:37 #: src/concepts/depends-on.md:40 src/concepts/depends-on.md:44 #: src/concepts/depends-on.md:48 src/guides/first-tazuna-yaml.md:151 -#: src/reference/tazuna-yaml.md:28 src/reference/tazuna-yaml.md:169 -#: src/reference/tazuna-yaml.md:172 src/reference/tazuna-yaml.md:176 -#: src/reference/tazuna-yaml.md:180 src/reference/tazuna-yaml.md:199 -#: src/reference/tazuna-yaml.md:227 src/reference/tazuna-yaml.md:228 +#: src/guides/environments.md:27 src/guides/environments.md:65 +#: src/guides/environments.md:106 src/reference/tazuna-yaml.md:28 +#: src/reference/tazuna-yaml.md:137 src/reference/tazuna-yaml.md:271 +#: src/reference/tazuna-yaml.md:274 src/reference/tazuna-yaml.md:278 +#: src/reference/tazuna-yaml.md:282 src/reference/tazuna-yaml.md:301 +#: src/reference/tazuna-yaml.md:329 src/reference/tazuna-yaml.md:330 #: src/reference/genesis-secret.md:17 src/reference/secret-providers.md:57 #: src/reference/secret-providers.md:61 src/reference/secret-providers.md:104 #: src/reference/manifest-types/kustomize.md:38 #: src/reference/manifest-types/kustomize.md:44 -#: src/reference/manifest-types/helmfile.md:102 +#: src/reference/manifest-types/helmfile.md:143 #: src/reference/manifest-types/oras.md:120 #: src/reference/manifest-types/oras.md:136 #: src/reference/manifest-types/genesissecret.md:20 @@ -1611,71 +1543,71 @@ msgid "path" msgstr "path" #: src/concepts/depends-on.md:18 src/concepts/depends-on.md:37 -#: src/reference/tazuna-yaml.md:169 +#: src/reference/tazuna-yaml.md:271 msgid "./cni" msgstr "./cni" #: src/concepts/depends-on.md:19 src/concepts/depends-on.md:42 -#: src/concepts/depends-on.md:49 src/reference/tazuna-yaml.md:174 -#: src/reference/tazuna-yaml.md:181 +#: src/concepts/depends-on.md:49 src/reference/tazuna-yaml.md:276 +#: src/reference/tazuna-yaml.md:283 msgid "ingress" msgstr "ingress" #: src/concepts/depends-on.md:20 src/concepts/depends-on.md:39 #: src/concepts/depends-on.md:43 src/concepts/glossary.md:150 -#: src/reference/tazuna-yaml.md:171 src/reference/tazuna-yaml.md:175 -#: src/reference/manifest-types/helmfile.md:101 -#: src/reference/manifest-types/helmfile.md:103 +#: src/reference/tazuna-yaml.md:273 src/reference/tazuna-yaml.md:277 +#: src/reference/manifest-types/helmfile.md:142 +#: src/reference/manifest-types/helmfile.md:144 #: src/reference/manifest-types/oras.md:124 #: src/reference/manifest-types/oras.md:125 msgid "helmfile" msgstr "helmfile" #: src/concepts/depends-on.md:21 src/concepts/depends-on.md:44 -#: src/reference/tazuna-yaml.md:176 +#: src/reference/tazuna-yaml.md:278 msgid "./ingress" msgstr "./ingress" #: src/concepts/depends-on.md:22 src/concepts/depends-on.md:46 #: src/guides/first-tazuna-yaml.md:89 src/guides/first-tazuna-yaml.md:94 -#: src/guides/first-tazuna-yaml.md:98 src/reference/tazuna-yaml.md:178 +#: src/guides/first-tazuna-yaml.md:98 src/guides/environments.md:25 +#: src/guides/environments.md:63 src/guides/environments.md:104 +#: src/reference/tazuna-yaml.md:135 src/reference/tazuna-yaml.md:280 msgid "app" msgstr "app" #: src/concepts/depends-on.md:24 src/concepts/depends-on.md:48 -#: src/reference/tazuna-yaml.md:180 +#: src/reference/tazuna-yaml.md:282 msgid "./app" msgstr "./app" #: src/concepts/depends-on.md:27 -msgid "" -"このとき Tazuna は `cni` → `ingress` → `app` の順で 1 つずつ apply します。" +msgid "このとき Tazuna は `cni` → `ingress` → `app` の順で 1 つずつ apply します。" msgstr "" "In this case Tazuna applies them one at a time in the order `cni` -> " "`ingress` -> `app`." #: src/concepts/depends-on.md:29 msgid "" -"**いずれか 1 つでも** `dependsOn` を持つ Manifest があれば、Runner は DAG " -"モードに 切り替わります。" +"**いずれか 1 つでも** `dependsOn` を持つ Manifest があれば、Runner は DAG モードに 切り替わります。" msgstr "" "If **even one** Manifest has a `dependsOn`, the Runner switches to DAG mode." #: src/concepts/depends-on.md:38 src/concepts/depends-on.md:49 -#: src/reference/tazuna-yaml.md:170 src/reference/tazuna-yaml.md:181 -#: src/reference/manifest-types/helmfile.md:100 -#: src/reference/manifest-types/helmfile.md:116 +#: src/reference/tazuna-yaml.md:272 src/reference/tazuna-yaml.md:283 +#: src/reference/manifest-types/helmfile.md:141 +#: src/reference/manifest-types/helmfile.md:157 #: src/reference/manifest-types/oras.md:118 msgid "cert-manager" msgstr "cert-manager" -#: src/concepts/depends-on.md:40 src/reference/tazuna-yaml.md:172 +#: src/concepts/depends-on.md:40 src/reference/tazuna-yaml.md:274 msgid "./cert-manager" msgstr "./cert-manager" #: src/concepts/depends-on.md:41 src/concepts/depends-on.md:45 -#: src/concepts/depends-on.md:49 src/reference/tazuna-yaml.md:173 -#: src/reference/tazuna-yaml.md:177 src/reference/tazuna-yaml.md:181 +#: src/concepts/depends-on.md:49 src/reference/tazuna-yaml.md:275 +#: src/reference/tazuna-yaml.md:279 src/reference/tazuna-yaml.md:283 msgid "dependsOn" msgstr "dependsOn" @@ -1688,7 +1620,7 @@ msgid "層" msgstr "Layer" #: src/concepts/depends-on.md:54 src/concepts/glossary.md:12 -#: src/reference/tazuna-yaml.md:86 +#: src/reference/tazuna-yaml.md:188 msgid "Manifest" msgstr "Manifest" @@ -1734,9 +1666,8 @@ msgstr "Topological sort" #: src/concepts/depends-on.md:62 msgid "" -"DAG モードでは Kahn のアルゴリズムでトポロジカルソートします。各イテレーショ" -"ンで 入次数が 0 のノード集合を「ひとつの層」として取り出し、その層が終わって" -"から 依存していたノードの入次数を下げる、というのを繰り返します。" +"DAG モードでは Kahn のアルゴリズムでトポロジカルソートします。各イテレーションで 入次数が 0 " +"のノード集合を「ひとつの層」として取り出し、その層が終わってから 依存していたノードの入次数を下げる、というのを繰り返します。" msgstr "" "In DAG mode, topological sorting is done with Kahn's algorithm. Each " "iteration takes the set of nodes with in-degree 0 as \"one layer\"; after " @@ -1745,14 +1676,13 @@ msgstr "" #: src/concepts/depends-on.md:66 msgid "" -"層内のマニフェストは **元の宣言順** で出力されるように安定ソートされるため、 " -"同じ `tazuna.yaml` を何度かけても出力順は揺れません(並列実行自体は順不同で" -"す)。" +"層内のマニフェストは **元の宣言順** で出力されるように安定ソートされるため、 同じ `tazuna.yaml` " +"を何度かけても出力順は揺れません(並列実行自体は順不同です)。" msgstr "" "Manifests within a layer are stably sorted so they are emitted in their " -"**original declaration order**, so the output order does not waver no matter " -"how many times you run the same `tazuna.yaml` (the parallel execution itself " -"is unordered)." +"**original declaration order**, so the output order does not waver no matter" +" how many times you run the same `tazuna.yaml` (the parallel execution " +"itself is unordered)." #: src/concepts/depends-on.md:69 msgid "同層内の並列実行" @@ -1760,9 +1690,8 @@ msgstr "Parallelism within a layer" #: src/concepts/depends-on.md:71 msgid "" -"同じ層に入った Manifest は **goroutine で並列** に apply されます。 層単位で" -"の待ち合わせがあるため、たとえば `cert-manager` を待ってから `app` を入れ" -"る、 といった順序保証は崩れません。" +"同じ層に入った Manifest は **goroutine で並列** に apply されます。 層単位での待ち合わせがあるため、たとえば " +"`cert-manager` を待ってから `app` を入れる、 といった順序保証は崩れません。" msgstr "" "Manifests that fall into the same layer are applied **in parallel via " "goroutines**. Because there is a barrier at each layer boundary, ordering " @@ -1771,11 +1700,10 @@ msgstr "" #: src/concepts/depends-on.md:75 msgid "" -"層内で `apply` が失敗した場合、その層の他の goroutine の終了を待ってからエ" -"ラーが 集約されます。途中キャンセルは現状行いません。" +"層内で `apply` が失敗した場合、その層の他の goroutine の終了を待ってからエラーが 集約されます。途中キャンセルは現状行いません。" msgstr "" -"If `apply` fails within a layer, errors are aggregated after waiting for the " -"other goroutines in that layer to finish. Mid-run cancellation is not " +"If `apply` fails within a layer, errors are aggregated after waiting for the" +" other goroutines in that layer to finish. Mid-run cancellation is not " "currently performed." #: src/concepts/depends-on.md:78 src/reference/tazuna-hint-yaml.md:119 @@ -1784,16 +1712,13 @@ msgid "バリデーション" msgstr "Validation" #: src/concepts/depends-on.md:80 -msgid "" -"`tazuna check` および `tazuna apply` 時、`dependsOn` は次のチェックを通りま" -"す。" +msgid "`tazuna check` および `tazuna apply` 時、`dependsOn` は次のチェックを通ります。" msgstr "" "During `tazuna check` and `tazuna apply`, `dependsOn` is subject to the " "following checks." #: src/concepts/depends-on.md:82 -msgid "" -"列挙された Manifest 名が `includes` 展開後の全 Manifest 集合に存在すること" +msgid "列挙された Manifest 名が `includes` 展開後の全 Manifest 集合に存在すること" msgstr "" "Each listed Manifest name must exist in the full set of Manifests after " "`includes` expansion." @@ -1809,8 +1734,8 @@ msgstr "The dependency graph must contain **no cycle**." #: src/concepts/depends-on.md:86 msgid "いずれかに違反していると、クラスタには一切触れずにエラー終了します。" msgstr "" -"If any of these is violated, Tazuna exits with an error without touching the " -"cluster at all." +"If any of these is violated, Tazuna exits with an error without touching the" +" cluster at all." #: src/concepts/depends-on.md:88 msgid "なぜ `parallel` ではなく `dependsOn` なのか" @@ -1818,27 +1743,24 @@ msgstr "Why `dependsOn` rather than `parallel`" #: src/concepts/depends-on.md:90 msgid "" -"以前の Tazuna には `type: parallel` という Manifest type がありました。 これ" -"は「子 Manifest を並列に実行する箱」でしたが、次の問題がありました。" +"以前の Tazuna には `type: parallel` という Manifest type がありました。 これは「子 Manifest " +"を並列に実行する箱」でしたが、次の問題がありました。" msgstr "" "Earlier versions of Tazuna had a Manifest type called `type: parallel`. It " "was \"a box that runs child Manifests in parallel,\" but it had the " "following problems." #: src/concepts/depends-on.md:93 -msgid "" -"依存関係を `parallel` のネスト構造で表現するしかなく、複雑なケースが書きづら" -"い" +msgid "依存関係を `parallel` のネスト構造で表現するしかなく、複雑なケースが書きづらい" msgstr "" "Dependencies could only be expressed through nested `parallel` structures, " "making complex cases hard to write." #: src/concepts/depends-on.md:94 -msgid "" -"`parallel` 配下の Manifest が状態管理(State / drift 検知)の枠から外れていた" +msgid "`parallel` 配下の Manifest が状態管理(State / drift 検知)の枠から外れていた" msgstr "" -"Manifests under `parallel` were outside the scope of state management " -"(State / drift detection)." +"Manifests under `parallel` were outside the scope of state management (State" +" / drift detection)." #: src/concepts/depends-on.md:95 msgid "「順序依存」「並列性」「グルーピング」が 1 つのフィールドに混ざっていた" @@ -1848,16 +1770,15 @@ msgstr "" #: src/concepts/depends-on.md:97 msgid "" -"`dependsOn` は「**ノード**(Manifest)と **エッジ**(依存)」というグラフの言" -"葉で これを書き直したものです。並列化は依存グラフから自動導出されるので、ユー" -"ザは 「順序」だけを宣言すればよく、並列化はランタイムに任せられます。 `type: " -"parallel` は本リファクタで削除されています。" +"`dependsOn` は「**ノード**(Manifest)と **エッジ**(依存)」というグラフの言葉で " +"これを書き直したものです。並列化は依存グラフから自動導出されるので、ユーザは 「順序」だけを宣言すればよく、並列化はランタイムに任せられます。 " +"`type: parallel` は本リファクタで削除されています。" msgstr "" "`dependsOn` rewrites this in the vocabulary of a graph: **nodes** " "(Manifests) and **edges** (dependencies). Parallelism is derived " "automatically from the dependency graph, so users only need to declare " -"\"order\" and can leave parallelization to the runtime. `type: parallel` has " -"been removed in this refactor." +"\"order\" and can leave parallelization to the runtime. `type: parallel` has" +" been removed in this refactor." #: src/concepts/depends-on.md:102 msgid "ベストプラクティス" @@ -1865,8 +1786,8 @@ msgstr "Best practices" #: src/concepts/depends-on.md:104 msgid "" -"依存関係は「**前提となるリソースが Ready になっていてほしい Manifest**」にだ" -"け書く。 単にグルーピングしたいだけなら `tags` の方が適切。" +"依存関係は「**前提となるリソースが Ready になっていてほしい Manifest**」にだけ書く。 単にグルーピングしたいだけなら `tags` " +"の方が適切。" msgstr "" "Declare a dependency only on a \"**Manifest that needs its prerequisite " "resources to be Ready**.\" If you merely want to group manifests, `tags` is " @@ -1874,8 +1795,8 @@ msgstr "" #: src/concepts/depends-on.md:106 msgid "" -"長いチェーンを書く前に、「実は CRD 待ちなので [Test plugin の `WaitUntil`]" -"(../reference/test-plugin.md) でも代替できないか」を一度検討する。" +"長いチェーンを書く前に、「実は CRD 待ちなので [Test plugin の `WaitUntil`](../reference/test-" +"plugin.md) でも代替できないか」を一度検討する。" msgstr "" "Before writing a long chain, consider once whether \"this is really just " "waiting on a CRD, so [the Test plugin's `WaitUntil`](../reference/test-" @@ -1883,12 +1804,12 @@ msgstr "" #: src/concepts/depends-on.md:108 msgid "" -"循環依存を避けるには、`dependsOn` を **下位レイヤから上位レイヤへの一方向** " -"だけに 使うのがコツ(CNI → cert-manager → ingress → app)。" +"循環依存を避けるには、`dependsOn` を **下位レイヤから上位レイヤへの一方向** だけに 使うのがコツ(CNI → cert-manager" +" → ingress → app)。" msgstr "" "To avoid circular dependencies, the trick is to use `dependsOn` **only in " -"one direction, from lower to higher layers** (CNI -> cert-manager -> ingress " -"-> app)." +"one direction, from lower to higher layers** (CNI -> cert-manager -> ingress" +" -> app)." #: src/concepts/depends-on.md:111 src/operations/destroy-runbook.md:101 #: src/operations/drift-monitoring.md:155 src/operations/ci-pipeline.md:150 @@ -1896,7 +1817,7 @@ msgstr "" #: src/reference/genesis-secret.md:212 src/reference/secret-providers.md:145 #: src/reference/test-plugin.md:151 src/reference/state.md:132 #: src/reference/manifest-types/kustomize.md:49 -#: src/reference/manifest-types/helmfile.md:125 +#: src/reference/manifest-types/helmfile.md:166 #: src/reference/manifest-types/oras.md:149 #: src/reference/manifest-types/genesissecret.md:65 #: src/reference/cli/init.md:74 src/reference/cli/apply.md:99 @@ -1904,7 +1825,8 @@ msgstr "" #: src/reference/cli/destroy.md:57 src/reference/cli/plan.md:89 #: src/reference/cli/status.md:81 src/reference/cli/state-list.md:32 #: src/reference/cli/state-diff.md:52 src/reference/cli/state-drift.md:100 -#: src/reference/cli/secret-to-genesissecret.md:61 src/reference/cli/tags.md:43 +#: src/reference/cli/secret-to-genesissecret.md:61 +#: src/reference/cli/tags.md:43 msgid "関連" msgstr "Related" @@ -1913,8 +1835,7 @@ msgid "全体アーキテクチャ: [全体アーキテクチャ](./architecture msgstr "Overall architecture: [Overall Architecture](./architecture.md)" #: src/concepts/depends-on.md:114 -msgid "" -"スキーマ: [`tazuna.yaml` - Manifest](../reference/tazuna-yaml.md#manifest)" +msgid "スキーマ: [`tazuna.yaml` - Manifest](../reference/tazuna-yaml.md#manifest)" msgstr "" "Schema: [`tazuna.yaml` - Manifest](../reference/tazuna-yaml.md#manifest)" @@ -1924,12 +1845,11 @@ msgstr "The apply itself: [`tazuna apply`](../reference/cli/apply.md)" #: src/concepts/glossary.md:3 msgid "" -"このセクションで頻出する用語の定義をまとめます。 より詳しい仕様は [リファレン" -"ス](../reference/index.md) を参照してください。" +"このセクションで頻出する用語の定義をまとめます。 より詳しい仕様は [リファレンス](../reference/index.md) を参照してください。" msgstr "" "This page collects definitions for terms that come up frequently in this " -"section. For more detailed specifications, see the [Reference](../reference/" -"index.md)." +"section. For more detailed specifications, see the " +"[Reference](../reference/index.md)." #: src/concepts/glossary.md:6 msgid "Tazuna 固有の用語" @@ -1941,24 +1861,23 @@ msgstr "tazuna.yaml" #: src/concepts/glossary.md:9 msgid "" -"Tazuna に対する唯一の入力ファイル。`apiVersion: tazuna.pepabo.com/v1`, " -"`kind: Tazuna` を持ち、`spec.manifests[]` に「適用したい manifest 群」を宣言" -"する。" +"Tazuna に対する唯一の入力ファイル。`apiVersion: tazuna.pepabo.com/v1`, `kind: Tazuna` " +"を持ち、`spec.manifests[]` に「適用したい manifest 群」を宣言する。" msgstr "" "The single input file given to Tazuna. It carries `apiVersion: " -"tazuna.pepabo.com/v1` and `kind: Tazuna`, and declares the \"manifests to be " -"applied\" in `spec.manifests[]`." +"tazuna.pepabo.com/v1` and `kind: Tazuna`, and declares the \"manifests to be" +" applied\" in `spec.manifests[]`." #: src/concepts/glossary.md:13 msgid "" -"`tazuna.yaml` 内の `manifests[]` の 1 エントリのこと。 `name` / `type` / " -"`path` を持ち、`type` ごとに対応する Manager が処理する。 Kubernetes における" -"「マニフェスト」(YAML ファイル)とは指す対象が違う点に注意。" +"`tazuna.yaml` 内の `manifests[]` の 1 エントリのこと。 `name` / `type` / `path` " +"を持ち、`type` ごとに対応する Manager が処理する。 Kubernetes における「マニフェスト」(YAML " +"ファイル)とは指す対象が違う点に注意。" msgstr "" -"A single entry in `manifests[]` inside `tazuna.yaml`. It has `name` / " -"`type` / `path`, and is processed by the Manager corresponding to its " -"`type`. Note that what this refers to is different from \"manifest\" in the " -"Kubernetes sense (a YAML file)." +"A single entry in `manifests[]` inside `tazuna.yaml`. It has `name` / `type`" +" / `path`, and is processed by the Manager corresponding to its `type`. Note" +" that what this refers to is different from \"manifest\" in the Kubernetes " +"sense (a YAML file)." #: src/concepts/glossary.md:17 msgid "Manifest type" @@ -1966,9 +1885,8 @@ msgstr "Manifest type" #: src/concepts/glossary.md:18 msgid "" -"Manifest の処理方法を指定する文字列。 `kustomize` / `helmfile` / " -"`genesissecret` / `oras` の 4 種類。 以前あった `parallel` は `dependsOn` " -"ベースの DAG 実行へ置き換えられて削除されています。" +"Manifest の処理方法を指定する文字列。 `kustomize` / `helmfile` / `genesissecret` / `oras` " +"の 4 種類。 以前あった `parallel` は `dependsOn` ベースの DAG 実行へ置き換えられて削除されています。" msgstr "" "A string that specifies how a manifest is processed. There are four types: " "`kustomize` / `helmfile` / `genesissecret` / `oras`. The former `parallel` " @@ -1976,9 +1894,8 @@ msgstr "" #: src/concepts/glossary.md:23 msgid "" -"ある Manifest type に対する処理を担うコンポーネント。 `Apply`(クラスタへの反" -"映)/ `Destroy`(取り外し)/ `Build`(クラスタに触らない生成)の 3 つの操作を" -"提供し、Runner はこの 3 つを介してすべての backend を均一に扱う。" +"ある Manifest type に対する処理を担うコンポーネント。 `Apply`(クラスタへの反映)/ `Destroy`(取り外し)/ " +"`Build`(クラスタに触らない生成)の 3 つの操作を提供し、Runner はこの 3 つを介してすべての backend を均一に扱う。" msgstr "" "A component that handles processing for a given manifest type. It provides " "three operations — `Apply` (reflect into the cluster), `Destroy` (remove), " @@ -1987,9 +1904,8 @@ msgstr "" #: src/concepts/glossary.md:28 msgid "" -"Tazuna の中心オーケストレータ。`tazuna.yaml` のロード、`includes` 展開、`--" -"tags` フィルタ、 Manager の呼び出し、Test plugin の起動などをまとめて担当す" -"る。" +"Tazuna の中心オーケストレータ。`tazuna.yaml` のロード、`includes` 展開、`--tags` フィルタ、 Manager " +"の呼び出し、Test plugin の起動などをまとめて担当する。" msgstr "" "The central orchestrator of Tazuna. It is responsible for loading " "`tazuna.yaml`, expanding `includes`, filtering by `--tags`, invoking " @@ -1997,14 +1913,13 @@ msgstr "" #: src/concepts/glossary.md:32 msgid "" -"Manifest 適用の前後で行いたい検証を表現する仕組み。 組み込みで `wait-until`" -"(Ready/存在まで待つ)と `exist-nonexist`(存在/非在の表明)がある。 " -"`spec.manifests[].tests` か `spec.tests` に書く。" +"Manifest 適用の前後で行いたい検証を表現する仕組み。 組み込みで `wait-until`(Ready/存在まで待つ)と `exist-" +"nonexist`(存在/非在の表明)がある。 `spec.manifests[].tests` か `spec.tests` に書く。" msgstr "" "A mechanism for expressing verifications you want to run before or after " -"applying a manifest. The built-in plugins are `wait-until` (wait until Ready/" -"present) and `exist-nonexist` (assert presence/absence). They are written " -"under `spec.manifests[].tests` or `spec.tests`." +"applying a manifest. The built-in plugins are `wait-until` (wait until " +"Ready/present) and `exist-nonexist` (assert presence/absence). They are " +"written under `spec.manifests[].tests` or `spec.tests`." #: src/concepts/glossary.md:36 msgid "State" @@ -2012,12 +1927,12 @@ msgstr "State" #: src/concepts/glossary.md:37 msgid "" -"Tazuna が「自分が入れたリソース」を追跡するための記録。 クラスタ内 `tazuna` " -"namespace の ConfigMap (`tazuna-state-`) に保存される。" +"Tazuna が「自分が入れたリソース」を追跡するための記録。 クラスタ内 `tazuna` namespace の ConfigMap " +"(`tazuna-state-`) に保存される。" msgstr "" -"The record Tazuna uses to track \"the resources it installed itself.\" It is " -"stored in ConfigMaps under the in-cluster `tazuna` namespace (`tazuna-state-" -"`)." +"The record Tazuna uses to track \"the resources it installed itself.\" It is" +" stored in ConfigMaps under the in-cluster `tazuna` namespace (`tazuna-" +"state-`)." #: src/concepts/glossary.md:40 src/reference/state.md:25 msgid "State key" @@ -2025,9 +1940,9 @@ msgstr "State key" #: src/concepts/glossary.md:41 msgid "" -"State の 1 エントリを指すキー文字列。 namespaced なら `{manifest}/{group}/" -"{version}/{kind}/{namespace}/{name}`、 cluster-scoped なら `{manifest}/" -"{group}/{version}/{kind}/{name}`。" +"State の 1 エントリを指すキー文字列。 namespaced なら " +"`{manifest}/{group}/{version}/{kind}/{namespace}/{name}`、 cluster-scoped なら " +"`{manifest}/{group}/{version}/{kind}/{name}`。" msgstr "" "The key string that identifies a single State entry. For namespaced " "resources it is `{manifest}/{group}/{version}/{kind}/{namespace}/{name}`; " @@ -2039,10 +1954,9 @@ msgstr "ContentHash" #: src/concepts/glossary.md:46 msgid "" -"State の各エントリが持つ SHA-256 ハッシュ値。 リソース YAML から " -"`metadata.resourceVersion` / `uid` / `creationTimestamp` / `generation` / " -"`managedFields` / `selfLink` と `status` を除いて計算する。 このハッシュの一" -"致/不一致が `state diff` の判定基準。" +"State の各エントリが持つ SHA-256 ハッシュ値。 リソース YAML から `metadata.resourceVersion` / " +"`uid` / `creationTimestamp` / `generation` / `managedFields` / `selfLink` と " +"`status` を除いて計算する。 このハッシュの一致/不一致が `state diff` の判定基準。" msgstr "" "The SHA-256 hash value carried by each State entry. It is computed over the " "resource YAML with `metadata.resourceVersion`, `uid`, `creationTimestamp`, " @@ -2057,8 +1971,8 @@ msgstr "Diff type" #: src/concepts/glossary.md:52 msgid "" -"`tazuna state diff` がリソースごとに付ける分類。 `added` / `modified` / " -"`removed` / `always-sync` の 4 種類。" +"`tazuna state diff` がリソースごとに付ける分類。 `added` / `modified` / `removed` / " +"`always-sync` の 4 種類。" msgstr "" "The classification `tazuna state diff` assigns to each resource. There are " "four types: `added`, `modified`, `removed`, and `always-sync`." @@ -2069,23 +1983,21 @@ msgstr "always-sync" #: src/concepts/glossary.md:56 msgid "" -"GenesisSecret 由来 Secret のように、差分計算をスキップして毎回同期する扱いの " -"Diff type。 ContentHash で変化を判定できない / させない対象に使う。 " -"1Password 側で値が更新されてもクラスタ側のハッシュは変わらないため、 " -"ContentHash を使わずに毎回 Provider に問い合わせる形で同期する設計になってい" -"る。 利用例と運用上の扱いは [GenesisSecret スキーマ - State と always-sync]" -"(../reference/genesis-secret.md#state-と-always-sync) と [Drift モニタリング]" -"(../operations/drift-monitoring.md) を参照。" +"GenesisSecret 由来 Secret のように、差分計算をスキップして毎回同期する扱いの Diff type。 ContentHash " +"で変化を判定できない / させない対象に使う。 1Password 側で値が更新されてもクラスタ側のハッシュは変わらないため、 ContentHash " +"を使わずに毎回 Provider に問い合わせる形で同期する設計になっている。 利用例と運用上の扱いは [GenesisSecret スキーマ - " +"State と always-sync](../reference/genesis-secret.md#state-と-always-sync) と " +"[Drift モニタリング](../operations/drift-monitoring.md) を参照。" msgstr "" "A Diff type that skips diff calculation and syncs every time, such as for " -"Secrets derived from GenesisSecret. Used for targets whose changes cannot be " -"detected via ContentHash, or for which detection should not be done. Even " +"Secrets derived from GenesisSecret. Used for targets whose changes cannot be" +" detected via ContentHash, or for which detection should not be done. Even " "when the value is updated on the 1Password side, the cluster-side hash does " "not change, so the design is to query the Provider every time without " -"relying on ContentHash. See [GenesisSecret Schema - State and always-sync]" -"(../reference/genesis-secret.md#state-と-always-sync) and [Drift Monitoring]" -"(../operations/drift-monitoring.md) for usage examples and operational " -"treatment." +"relying on ContentHash. See [GenesisSecret Schema - State and always-" +"sync](../reference/genesis-secret.md#state-と-always-sync) and [Drift " +"Monitoring](../operations/drift-monitoring.md) for usage examples and " +"operational treatment." #: src/concepts/glossary.md:64 src/reference/genesis-secret.md:173 #: src/reference/genesis-secret.md:193 src/reference/secret-providers.md:29 @@ -2095,9 +2007,9 @@ msgstr "GenesisSecret" #: src/concepts/glossary.md:65 msgid "" -"1Password に保管された秘密情報から、Kubernetes Secret を **生成** するための" -"宣言。 Kubernetes CRD ではなく、Tazuna が読む YAML スキーマ。 `type: " -"genesissecret` の manifest として `tazuna.yaml` から参照する。" +"1Password に保管された秘密情報から、Kubernetes Secret を **生成** するための宣言。 Kubernetes CRD " +"ではなく、Tazuna が読む YAML スキーマ。 `type: genesissecret` の manifest として " +"`tazuna.yaml` から参照する。" msgstr "" "A declaration for **generating** Kubernetes Secrets from secret values " "stored in 1Password. It is not a Kubernetes CRD but a YAML schema that " @@ -2110,11 +2022,10 @@ msgstr "Provider (SecretProvider)" #: src/concepts/glossary.md:70 msgid "" -"GenesisSecret が秘匿情報を取り出す元を抽象化したインターフェース。 組み込み" -"で 1Password (`onepassword`) と envfile (`envfile`) の 2 種類が利用でき、 " -"`tazuna.yaml` の `spec.providers[]` で複数宣言・GenesisSecret 側の " -"`spec.provider` で 名前指定して使い分けられる。詳細は [Secret provider](../" -"reference/secret-providers.md) を参照。" +"GenesisSecret が秘匿情報を取り出す元を抽象化したインターフェース。 組み込みで 1Password (`onepassword`) と " +"envfile (`envfile`) の 2 種類が利用でき、 `tazuna.yaml` の `spec.providers[]` " +"で複数宣言・GenesisSecret 側の `spec.provider` で 名前指定して使い分けられる。詳細は [Secret " +"provider](../reference/secret-providers.md) を参照。" msgstr "" "An interface that abstracts the source from which GenesisSecret retrieves " "secrets. Two implementations are built in - 1Password (`onepassword`) and " @@ -2129,31 +2040,30 @@ msgstr "`default-op`" #: src/concepts/glossary.md:76 msgid "" -"組み込みの 1Password provider に予約された名前。 GenesisSecret の " -"`spec.provider` が空文字のときに後方互換のためフォールバックされる。 " -"`spec.providers[]` でこの名前を再宣言することはできない。" +"組み込みの 1Password provider に予約された名前。 GenesisSecret の `spec.provider` " +"が空文字のときに後方互換のためフォールバックされる。 `spec.providers[]` でこの名前を再宣言することはできない。" msgstr "" "The name reserved for the built-in 1Password provider. It is used as a " -"backward-compatibility fallback when a GenesisSecret's `spec.provider` is an " -"empty string. This name cannot be re-declared in `spec.providers[]`." +"backward-compatibility fallback when a GenesisSecret's `spec.provider` is an" +" empty string. This name cannot be re-declared in `spec.providers[]`." -#: src/concepts/glossary.md:80 src/reference/tazuna-yaml.md:98 -#: src/reference/tazuna-yaml.md:150 +#: src/concepts/glossary.md:80 src/reference/tazuna-yaml.md:200 +#: src/reference/tazuna-yaml.md:252 msgid "`dependsOn`" msgstr "`dependsOn`" #: src/concepts/glossary.md:81 msgid "" -"`manifests[]` のエントリで、その Manifest を apply する前に完了している必要が" -"ある Manifest 名のリスト。`tazuna.yaml` 内に 1 つでも `dependsOn` が書かれて" -"いれば Runner は DAG モードに切り替わり、同じ依存深度の Manifest を並列に実行" -"する。 詳細は [`dependsOn` による DAG 実行](./depends-on.md) を参照。" +"`manifests[]` のエントリで、その Manifest を apply する前に完了している必要がある Manifest " +"名のリスト。`tazuna.yaml` 内に 1 つでも `dependsOn` が書かれていれば Runner は DAG " +"モードに切り替わり、同じ依存深度の Manifest を並列に実行する。 詳細は [`dependsOn` による DAG 実行](./depends-" +"on.md) を参照。" msgstr "" "On a `manifests[]` entry, the list of Manifest names that must complete " "before that Manifest is applied. If even one `dependsOn` is written in " "`tazuna.yaml`, the Runner switches to DAG mode and runs Manifests at the " -"same dependency depth in parallel. See [DAG Execution via `dependsOn`](./" -"depends-on.md) for details." +"same dependency depth in parallel. See [DAG Execution via " +"`dependsOn`](./depends-on.md) for details." #: src/concepts/glossary.md:86 msgid "Layer (DAG 層)" @@ -2161,10 +2071,9 @@ msgstr "Layer (DAG layer)" #: src/concepts/glossary.md:87 msgid "" -"`dependsOn` を解決した結果として導出される、**並列に実行可能な Manifest の集" -"合**。 同一層に属する Manifest は互いに依存しておらず、Runner が goroutine で" -"並列に apply する。層単位の境界では待ち合わせが入るため、層をまたいだ順序保証" -"は崩れない。" +"`dependsOn` を解決した結果として導出される、**並列に実行可能な Manifest の集合**。 同一層に属する Manifest " +"は互いに依存しておらず、Runner が goroutine で並列に apply " +"する。層単位の境界では待ち合わせが入るため、層をまたいだ順序保証は崩れない。" msgstr "" "The **set of Manifests that can run in parallel**, derived as the result of " "resolving `dependsOn`. Manifests in the same layer do not depend on one " @@ -2178,30 +2087,29 @@ msgstr "`live-drifted` / `live-missing`" #: src/concepts/glossary.md:92 msgid "" -"`tazuna state drift` が出力する drift 分類。`live-drifted` は State の hash " -"と ライブクラスタの hash が一致しないリソース、`live-missing` は State に記録" -"は あるがライブクラスタから NotFound のリソース。" +"`tazuna state drift` が出力する drift 分類。`live-drifted` は State の hash と ライブクラスタの" +" hash が一致しないリソース、`live-missing` は State に記録は あるがライブクラスタから NotFound のリソース。" msgstr "" "The drift categories emitted by `tazuna state drift`. `live-drifted` is a " -"resource whose State hash and live-cluster hash do not match; `live-missing` " -"is a resource recorded in State but NotFound on the live cluster." +"resource whose State hash and live-cluster hash do not match; `live-missing`" +" is a resource recorded in State but NotFound on the live cluster." #: src/concepts/glossary.md:96 src/reference/tazuna-yaml.md:37 -#: src/reference/tazuna-yaml.md:61 +#: src/reference/tazuna-yaml.md:62 src/reference/tazuna-yaml.md:98 msgid "`context_matches`" msgstr "`context_matches`" #: src/concepts/glossary.md:97 msgid "" -"`tazuna.yaml` の `spec.context_matches`。 現在の kubeconfig context 名がマッ" -"チすべき正規表現の配列で、 誤クラスタへの apply を防ぐためのガード。" +"`tazuna.yaml` の `spec.context_matches`。 現在の kubeconfig context " +"名がマッチすべき正規表現の配列で、 誤クラスタへの apply を防ぐためのガード。" msgstr "" -"`spec.context_matches` in `tazuna.yaml`. An array of regular expressions the " -"current kubeconfig context name must match — a guard against applying to the " -"wrong cluster." +"`spec.context_matches` in `tazuna.yaml`. An array of regular expressions the" +" current kubeconfig context name must match — a guard against applying to " +"the wrong cluster." #: src/concepts/glossary.md:101 src/reference/tazuna-yaml.md:38 -#: src/reference/tazuna-yaml.md:69 +#: src/reference/tazuna-yaml.md:70 src/reference/tazuna-yaml.md:99 msgid "`context_match_mode`" msgstr "`context_match_mode`" @@ -2210,14 +2118,14 @@ msgid "`context_matches` の評価方式。`or`(デフォルト)または `a msgstr "" "The evaluation mode for `context_matches`: `or` (the default) or `and`." -#: src/concepts/glossary.md:104 src/reference/tazuna-yaml.md:226 +#: src/concepts/glossary.md:104 src/reference/tazuna-yaml.md:328 msgid "includes" msgstr "includes" #: src/concepts/glossary.md:105 msgid "" -"`manifests[]` のエントリで、別ファイルの `tazuna.yaml` を読み込み、 その " -"`manifests[]` を展開するための仕組み。ネストは不可。" +"`manifests[]` のエントリで、別ファイルの `tazuna.yaml` を読み込み、 その `manifests[]` " +"を展開するための仕組み。ネストは不可。" msgstr "" "A `manifests[]` entry that loads another `tazuna.yaml` file and expands its " "`manifests[]` inline. Nesting is not allowed." @@ -2228,8 +2136,8 @@ msgstr "Tag (manifest tag)" #: src/concepts/glossary.md:109 msgid "" -"`manifests[].tags` に書く文字列。`tazuna apply --tags foo,bar` のように 適用" -"対象を絞り込むときに使う。複数タグは **OR** で評価される。" +"`manifests[].tags` に書く文字列。`tazuna apply --tags foo,bar` のように " +"適用対象を絞り込むときに使う。複数タグは **OR** で評価される。" msgstr "" "A string written under `manifests[].tags`. Used to narrow down what gets " "applied, e.g. `tazuna apply --tags foo,bar`. Multiple tags are evaluated as " @@ -2241,21 +2149,19 @@ msgstr "Manifest path" #: src/concepts/glossary.md:113 msgid "" -"`manifests[].path`。`tazuna.yaml` 自身の置かれているディレクトリ起点の相対パ" -"スとして書く。 Tazuna は実行時に cwd 起点へ変換する。" +"`manifests[].path`。`tazuna.yaml` 自身の置かれているディレクトリ起点の相対パスとして書く。 Tazuna は実行時に " +"cwd 起点へ変換する。" msgstr "" "`manifests[].path`. Written as a path relative to the directory containing " -"`tazuna.yaml` itself. Tazuna converts it into a path relative to the current " -"working directory at runtime." +"`tazuna.yaml` itself. Tazuna converts it into a path relative to the current" +" working directory at runtime." #: src/concepts/glossary.md:116 msgid "`tazuna.hint.yaml`" msgstr "`tazuna.hint.yaml`" #: src/concepts/glossary.md:117 -msgid "" -"helmfile の `vars` が取りうる値の型・フォーマット制約を宣言するヒントファイ" -"ル。 `pkg/hint/` で読まれる。" +msgid "helmfile の `vars` が取りうる値の型・フォーマット制約を宣言するヒントファイル。 `pkg/hint/` で読まれる。" msgstr "" "A hint file that declares the type and format constraints on values that " "helmfile's `vars` may take. It is read by `pkg/hint/`." @@ -2265,8 +2171,7 @@ msgid "Kubernetes 側の用語(補足)" msgstr "Kubernetes terms (supplementary)" #: src/concepts/glossary.md:122 -msgid "" -"ここに挙げるのは Tazuna 内で頻出する Kubernetes 標準用語の短い定義です。" +msgid "ここに挙げるのは Tazuna 内で頻出する Kubernetes 標準用語の短い定義です。" msgstr "" "Below are short definitions of standard Kubernetes terms that come up " "frequently within Tazuna." @@ -2277,8 +2182,8 @@ msgstr "kubeconfig" #: src/concepts/glossary.md:125 msgid "" -"クラスタ接続情報(cluster / user / context)をまとめた YAML。 Tazuna はここか" -"ら `current-context` を読み、そのクラスタへ操作を行う。" +"クラスタ接続情報(cluster / user / context)をまとめた YAML。 Tazuna はここから `current-context`" +" を読み、そのクラスタへ操作を行う。" msgstr "" "A YAML file that bundles cluster connection information (cluster / user / " "context). Tazuna reads `current-context` from it and operates against the " @@ -2290,8 +2195,8 @@ msgstr "context (kubeconfig context)" #: src/concepts/glossary.md:129 msgid "" -"「どの cluster にどの user で繋ぐか」を 1 名前にまとめた kubeconfig の要素。 " -"`context_matches` が正規表現でチェックするのはこの context 名。" +"「どの cluster にどの user で繋ぐか」を 1 名前にまとめた kubeconfig の要素。 `context_matches` " +"が正規表現でチェックするのはこの context 名。" msgstr "" "A kubeconfig element that combines \"which user connects to which cluster\" " "under a single name. The context name is what `context_matches` checks with " @@ -2302,9 +2207,7 @@ msgid "GVK (Group/Version/Kind)" msgstr "GVK (Group/Version/Kind)" #: src/concepts/glossary.md:133 -msgid "" -"Kubernetes リソースの種別を一意に特定する 3 つ組。 Tazuna の State key も " -"GVK を含む。" +msgid "Kubernetes リソースの種別を一意に特定する 3 つ組。 Tazuna の State key も GVK を含む。" msgstr "" "The three-tuple that uniquely identifies a Kubernetes resource kind. " "Tazuna's State key also includes the GVK." @@ -2314,9 +2217,7 @@ msgid "namespaced / cluster-scoped" msgstr "namespaced / cluster-scoped" #: src/concepts/glossary.md:137 -msgid "" -"リソースが namespace に属するか属さないか。 State key の長さ(5 パートか 6 " -"パート)に反映される。" +msgid "リソースが namespace に属するか属さないか。 State key の長さ(5 パートか 6 パート)に反映される。" msgstr "" "Whether a resource belongs to a namespace or not. This is reflected in the " "length of the State key (5 parts or 6 parts)." @@ -2326,9 +2227,7 @@ msgid "ConfigMap" msgstr "ConfigMap" #: src/concepts/glossary.md:141 -msgid "" -"任意の key-value をクラスタに保存するための組み込みリソース。 Tazuna の " -"State の保存先として使われる。" +msgid "任意の key-value をクラスタに保存するための組み込みリソース。 Tazuna の State の保存先として使われる。" msgstr "" "A built-in resource for storing arbitrary key-value data in the cluster. " "Used as the storage location for Tazuna's State." @@ -2339,16 +2238,15 @@ msgstr "External tools" #: src/concepts/glossary.md:147 msgid "" -"Kubernetes manifest の overlay / patch 機構。 `type: kustomize` の Manager か" -"ら呼び出される。" +"Kubernetes manifest の overlay / patch 機構。 `type: kustomize` の Manager " +"から呼び出される。" msgstr "" -"An overlay/patch mechanism for Kubernetes manifests. Invoked from the `type: " -"kustomize` Manager." +"An overlay/patch mechanism for Kubernetes manifests. Invoked from the `type:" +" kustomize` Manager." #: src/concepts/glossary.md:151 msgid "" -"複数の Helm release を 1 YAML から束ねるツール。 `type: helmfile` の Manager " -"から呼び出される。" +"複数の Helm release を 1 YAML から束ねるツール。 `type: helmfile` の Manager から呼び出される。" msgstr "" "A tool that bundles multiple Helm releases from a single YAML. Invoked from " "the `type: helmfile` Manager." @@ -2367,9 +2265,8 @@ msgstr "ORAS / OCI artifact" #: src/concepts/glossary.md:158 msgid "" -"OCI registry に Kubernetes manifest のようなコンテナ以外の成果物を置く規格。 " -"`type: oras` で pull し、`delegate` に指定した helmfile / kustomize に処理を" -"委譲する。" +"OCI registry に Kubernetes manifest のようなコンテナ以外の成果物を置く規格。 `type: oras` で pull " +"し、`delegate` に指定した helmfile / kustomize に処理を委譲する。" msgstr "" "A standard for storing non-container artifacts — such as Kubernetes " "manifests — in an OCI registry. `type: oras` pulls them, then delegates " @@ -2381,17 +2278,16 @@ msgstr "1Password" #: src/concepts/glossary.md:162 msgid "" -"Tazuna が `GenesisSecret` や `helmfile.vars.op` で参照する Secret の格納先。 " -"取得は `op` コマンド経由。" +"Tazuna が `GenesisSecret` や `helmfile.vars.op` で参照する Secret の格納先。 取得は `op` " +"コマンド経由。" msgstr "" "The secret storage that Tazuna references from `GenesisSecret` and " "`helmfile.vars.op`. Retrieval is done via the `op` command." #: src/guides/index.md:3 msgid "" -"このセクションでは、Tazuna を使って実際に手を動かすための手順をまとめます。 " -"[概念](../concepts/index.md) が「なぜそうなっているか」を扱うのに対し、 ここ" -"では「何を、どの順で、どのコマンドで行うか」をタスク単位で示します。" +"このセクションでは、Tazuna を使って実際に手を動かすための手順をまとめます。 [概念](../concepts/index.md) " +"が「なぜそうなっているか」を扱うのに対し、 ここでは「何を、どの順で、どのコマンドで行うか」をタスク単位で示します。" msgstr "" "This section collects task-oriented procedures for actually working with " "Tazuna. While [Concepts](../concepts/index.md) covers *why* things are the " @@ -2400,14 +2296,14 @@ msgstr "" #: src/guides/index.md:7 msgid "" -"各ガイドは独立して読めるように書いていますが、まだ Tazuna に触れたことがない" -"場合は、 順番に通すと無理なく進められます。コマンドの細かい挙動やフラグの一覧" -"は [リファレンス](../reference/index.md) を参照してください。" +"各ガイドは独立して読めるように書いていますが、まだ Tazuna に触れたことがない場合は、 " +"順番に通すと無理なく進められます。コマンドの細かい挙動やフラグの一覧は [リファレンス](../reference/index.md) " +"を参照してください。" msgstr "" "Each guide is written to be readable independently, but if you have not yet " "touched Tazuna, working through them in order is the smoothest path. For " -"detailed command behavior and a flag listing, see the [Reference](../" -"reference/index.md)." +"detailed command behavior and a flag listing, see the " +"[Reference](../reference/index.md)." #: src/guides/index.md:11 msgid "入門" @@ -2421,20 +2317,29 @@ msgstr "" #: src/guides/index.md:15 msgid "" -"**[最初の tazuna.yaml を書く](./first-tazuna-yaml.md)** — 1 つの Kubernetes " -"クラスタに kustomize で書いた add-on を 1 つ入れるところまでを、 " -"`tazuna.yaml` の最初の 1 枚から `tazuna apply` までひと通り通します。" +"**[最初の tazuna.yaml を書く](./first-tazuna-yaml.md)** — 1 つの Kubernetes クラスタに " +"kustomize で書いた add-on を 1 つ入れるところまでを、 `tazuna.yaml` の最初の 1 枚から `tazuna " +"apply` までひと通り通します。" msgstr "" -"**[Writing Your First tazuna.yaml](./first-tazuna-yaml.md)** — walks you all " -"the way from the first `tazuna.yaml` to a `tazuna apply` that installs one " +"**[Writing Your First tazuna.yaml](./first-tazuna-yaml.md)** — walks you all" +" the way from the first `tazuna.yaml` to a `tazuna apply` that installs one " "kustomize-defined add-on into a single Kubernetes cluster." -#: src/guides/index.md:19 +#: src/guides/index.md:18 +msgid "" +"**[環境ごとに設定を切り替える](./environments.md)** — `{{ .Environment }}` テンプレート変数と " +"`spec.environments` を使い、1 つの `tazuna.yaml` を staging / production " +"など複数クラスタに安全に使い回します。" +msgstr "" +"**[Switch Configuration per Environment](./environments.md)** — Use the `{{ " +".Environment }}` template variable and `spec.environments` to safely reuse a" +" single `tazuna.yaml` across multiple clusters such as staging / production." + +#: src/guides/index.md:22 msgid "" -"これ以降のテーマ(複数 manifest の順序付け、`--tags` による絞り込み、 State " -"の確認、GenesisSecret、CI 連携など)は、ここで作った `tazuna.yaml` を 徐々に" -"拡張していく形で順次追加していきます。それまでの間、各テーマの **仕様** は以" -"下のリファレンスから引けます。" +"これ以降のテーマ(複数 manifest の順序付け、`--tags` による絞り込み、 State の確認、GenesisSecret、CI " +"連携など)は、ここで作った `tazuna.yaml` を 徐々に拡張していく形で順次追加していきます。それまでの間、各テーマの **仕様** " +"は以下のリファレンスから引けます。" msgstr "" "Subsequent topics (ordering multiple manifests, narrowing with `--tags`, " "inspecting State, GenesisSecret, CI integration, and so on) will be added " @@ -2442,13 +2347,13 @@ msgstr "" "meantime, the **specification** for each topic can be looked up in the " "references below." -#: src/guides/index.md:24 -msgid "" -"`--tags` の評価: [`tazuna.yaml` - tags](../reference/tazuna-yaml.md#tags)" +#: src/guides/index.md:27 +msgid "`--tags` の評価: [`tazuna.yaml` - tags](../reference/tazuna-yaml.md#tags)" msgstr "" -"`--tags` evaluation: [`tazuna.yaml` - tags](../reference/tazuna-yaml.md#tags)" +"`--tags` evaluation: [`tazuna.yaml` - tags](../reference/tazuna-" +"yaml.md#tags)" -#: src/guides/index.md:25 +#: src/guides/index.md:28 msgid "" "State の確認: [State の内部構造](../reference/state.md) / [`tazuna state " "list`](../reference/cli/state-list.md)" @@ -2456,29 +2361,27 @@ msgstr "" "Inspecting State: [Internal Structure of State](../reference/state.md) / " "[`tazuna state list`](../reference/cli/state-list.md)" -#: src/guides/index.md:26 +#: src/guides/index.md:29 msgid "GenesisSecret: [GenesisSecret スキーマ](../reference/genesis-secret.md)" msgstr "GenesisSecret: [GenesisSecret Schema](../reference/genesis-secret.md)" -#: src/guides/index.md:27 +#: src/guides/index.md:30 msgid "CI 連携: [CI パイプライン](../operations/ci-pipeline.md)" msgstr "CI integration: [CI Pipeline](../operations/ci-pipeline.md)" #: src/guides/first-tazuna-yaml.md:3 msgid "" -"このガイドは、これから Tazuna を導入する人が **最初の `tazuna.yaml`** を書" -"き、 1 つの Kubernetes クラスタに 1 つのアドオンを入れるところまでを通すため" -"の手順です。" +"このガイドは、これから Tazuna を導入する人が **最初の `tazuna.yaml`** を書き、 1 つの Kubernetes クラスタに " +"1 つのアドオンを入れるところまでを通すための手順です。" msgstr "" -"This guide walks first-time adopters of Tazuna through writing their **first " -"`tazuna.yaml`** and installing one add-on into one Kubernetes cluster." +"This guide walks first-time adopters of Tazuna through writing their **first" +" `tazuna.yaml`** and installing one add-on into one Kubernetes cluster." #: src/guides/first-tazuna-yaml.md:6 msgid "" -"ここでは題材として、`kustomize` で書いた小さな Deployment を 1 つ、 Tazuna 経" -"由でクラスタに入れます。実運用ではここに ingress-nginx や cert-manager、 " -"ArgoCD などが並びますが、最初の 1 枚を理解するためには Manifest は 1 つあれば" -"十分です。" +"ここでは題材として、`kustomize` で書いた小さな Deployment を 1 つ、 Tazuna 経由でクラスタに入れます。実運用ではここに" +" ingress-nginx や cert-manager、 ArgoCD などが並びますが、最初の 1 枚を理解するためには Manifest は 1" +" つあれば十分です。" msgstr "" "We use a small Deployment written with `kustomize` as the example, applied " "to a cluster through Tazuna. In real-world usage you would have ingress-" @@ -2490,9 +2393,7 @@ msgid "このガイドを終えると、次の状態になっています。" msgstr "By the end of this guide you will have:" #: src/guides/first-tazuna-yaml.md:12 -msgid "" -"`tazuna init` で生成した `tazuna.yaml` と kustomize ディレクトリが 1 セットあ" -"る" +msgid "`tazuna init` で生成した `tazuna.yaml` と kustomize ディレクトリが 1 セットある" msgstr "" "A `tazuna.yaml` generated by `tazuna init` paired with a kustomize directory" @@ -2520,33 +2421,30 @@ msgstr "Prepare One Kubernetes Cluster" #: src/guides/first-tazuna-yaml.md:21 msgid "" -"Tazuna はクラスタの作成そのものは行いません。コントロールプレーンの準備は前提" -"です。 試すだけであれば、手元で動かせる軽量なクラスタで十分です。" +"Tazuna はクラスタの作成そのものは行いません。コントロールプレーンの準備は前提です。 試すだけであれば、手元で動かせる軽量なクラスタで十分です。" msgstr "" "Tazuna does not create the cluster itself. Preparing the control plane is a " -"prerequisite. For experimenting, any lightweight cluster you can run locally " -"is sufficient." +"prerequisite. For experimenting, any lightweight cluster you can run locally" +" is sufficient." #: src/guides/first-tazuna-yaml.md:24 msgid "" -"手元で完結させたい場合: [KinD](https://kind.sigs.k8s.io/) や [minikube]" -"(https://minikube.sigs.k8s.io/) で 1 ノードのクラスタを立てる" +"手元で完結させたい場合: [KinD](https://kind.sigs.k8s.io/) や " +"[minikube](https://minikube.sigs.k8s.io/) で 1 ノードのクラスタを立てる" msgstr "" -"If you want to keep things local: stand up a single-node cluster with [KinD]" -"(https://kind.sigs.k8s.io/) or [minikube](https://minikube.sigs.k8s.io/)" +"If you want to keep things local: stand up a single-node cluster with " +"[KinD](https://kind.sigs.k8s.io/) or " +"[minikube](https://minikube.sigs.k8s.io/)" #: src/guides/first-tazuna-yaml.md:26 msgid "" -"リモートでまず触ってみたい場合: EKS / GKE / AKS などのマネージドクラスタ、 ま" -"たは `kubeadm` で立てた検証用クラスタ" +"リモートでまず触ってみたい場合: EKS / GKE / AKS などのマネージドクラスタ、 または `kubeadm` で立てた検証用クラスタ" msgstr "" -"If you want to try against a remote first: a managed cluster like EKS / " -"GKE / AKS, or a verification cluster brought up with `kubeadm`" +"If you want to try against a remote first: a managed cluster like EKS / GKE " +"/ AKS, or a verification cluster brought up with `kubeadm`" #: src/guides/first-tazuna-yaml.md:29 -msgid "" -"`kubectl get nodes` が `Ready` を返す状態になっていれば、どれを選んでも構いま" -"せん。" +msgid "`kubectl get nodes` が `Ready` を返す状態になっていれば、どれを選んでも構いません。" msgstr "Any of these works as long as `kubectl get nodes` returns `Ready`." #: src/guides/first-tazuna-yaml.md:31 @@ -2555,12 +2453,12 @@ msgstr "Prepare the tazuna Binary" #: src/guides/first-tazuna-yaml.md:33 msgid "" -"リリースページからバイナリを取得して `PATH` に置くか、`go install` で導入しま" -"す。 詳細は [はじめかた](../getting-started/index.md) を参照してください。" +"リリースページからバイナリを取得して `PATH` に置くか、`go install` で導入します。 詳細は [はじめかた](../getting-" +"started/index.md) を参照してください。" msgstr "" -"Either download the binary from the releases page and place it on `PATH`, or " -"install with `go install`. See [Getting Started](../getting-started/" -"index.md) for details." +"Either download the binary from the releases page and place it on `PATH`, or" +" install with `go install`. See [Getting Started](../getting-" +"started/index.md) for details." #: src/guides/first-tazuna-yaml.md:36 msgid "`tazuna version` が動けば準備完了です。" @@ -2572,9 +2470,8 @@ msgstr "Check the kubeconfig current-context" #: src/guides/first-tazuna-yaml.md:40 msgid "" -"Tazuna は kubeconfig の現在の context が指すクラスタに対して動きます。 **入れ" -"たい先のクラスタに current-context が向いていること** を、手を動かす前に必ず" -"確認します。" +"Tazuna は kubeconfig の現在の context が指すクラスタに対して動きます。 **入れたい先のクラスタに current-" +"context が向いていること** を、手を動かす前に必ず確認します。" msgstr "" "Tazuna operates against the cluster currently pointed to by the kubeconfig " "context. Before doing anything, **make absolutely sure your current-context " @@ -2582,10 +2479,8 @@ msgstr "" #: src/guides/first-tazuna-yaml.md:48 msgid "" -"複数クラスタを行き来する環境では、これを取り違えるのが最も典型的な事故の入口" -"です。 context を取り違えても気付けるようにする仕組みとして " -"`context_matches` がありますが、 最初の 1 枚では使わずに進めます(後続のガイ" -"ドで扱います)。" +"複数クラスタを行き来する環境では、これを取り違えるのが最も典型的な事故の入口です。 context を取り違えても気付けるようにする仕組みとして " +"`context_matches` がありますが、 最初の 1 枚では使わずに進めます(後続のガイドで扱います)。" msgstr "" "In environments where you switch between multiple clusters, mistaking this " "is the most typical entry point for incidents. `context_matches` is a " @@ -2602,8 +2497,8 @@ msgstr "In this guide, we will create the following directory layout." #: src/guides/first-tazuna-yaml.md:65 msgid "" -"`tazuna.yaml` が「何を入れるか」を宣言し、`kustomize/nginx/` がその実体で" -"す。 このガイドではこの 2 階層だけを覚えておけば十分です。" +"`tazuna.yaml` が「何を入れるか」を宣言し、`kustomize/nginx/` がその実体です。 このガイドではこの 2 " +"階層だけを覚えておけば十分です。" msgstr "" "`tazuna.yaml` declares \"what to install,\" and `kustomize/nginx/` is the " "actual content. For this guide, knowing just these two layers is enough." @@ -2614,9 +2509,8 @@ msgstr "1. Create the kustomize Directory" #: src/guides/first-tazuna-yaml.md:70 msgid "" -"まず、Tazuna が呼び出す側、つまり kustomize で書いた「入れたいもの」を用意し" -"ます。 ここでは練習用に、`nginx` という Deployment を 1 つだけ持つ最小構成に" -"します。" +"まず、Tazuna が呼び出す側、つまり kustomize で書いた「入れたいもの」を用意します。 ここでは練習用に、`nginx` という " +"Deployment を 1 つだけ持つ最小構成にします。" msgstr "" "First, prepare the side that Tazuna calls into — the \"thing you want to " "install\" written with kustomize. For practice, we use a minimal " @@ -2639,7 +2533,8 @@ msgid "`my-cluster/kustomize/nginx/deployment.yaml`:" msgstr "`my-cluster/kustomize/nginx/deployment.yaml`:" #: src/guides/first-tazuna-yaml.md:83 src/guides/first-tazuna-yaml.md:125 -#: src/guides/first-tazuna-yaml.md:144 src/reference/tazuna-yaml.md:22 +#: src/guides/first-tazuna-yaml.md:144 src/guides/environments.md:21 +#: src/guides/environments.md:49 src/reference/tazuna-yaml.md:22 #: src/reference/tazuna-hint-yaml.md:35 src/reference/genesis-secret.md:172 #: src/reference/genesis-secret.md:192 src/reference/test-plugin.md:101 #: src/reference/test-plugin.md:132 src/reference/test-plugin.md:144 @@ -2653,7 +2548,8 @@ msgid "apps/v1" msgstr "apps/v1" #: src/guides/first-tazuna-yaml.md:83 src/guides/first-tazuna-yaml.md:125 -#: src/guides/first-tazuna-yaml.md:144 src/reference/tazuna-yaml.md:22 +#: src/guides/first-tazuna-yaml.md:144 src/guides/environments.md:21 +#: src/guides/environments.md:49 src/reference/tazuna-yaml.md:22 #: src/reference/tazuna-hint-yaml.md:35 src/reference/genesis-secret.md:172 #: src/reference/genesis-secret.md:192 src/reference/secret-providers.md:28 #: src/reference/test-plugin.md:102 src/reference/test-plugin.md:133 @@ -2681,6 +2577,7 @@ msgstr "nginx" #: src/reference/genesis-secret.md:205 src/reference/secret-providers.md:39 #: src/reference/test-plugin.md:103 src/reference/test-plugin.md:134 #: src/reference/test-plugin.md:146 +#: src/reference/manifest-types/helmfile.md:38 msgid "namespace" msgstr "namespace" @@ -2732,10 +2629,9 @@ msgstr "containerPort" #: src/guides/first-tazuna-yaml.md:107 msgid "" -"この時点で、Tazuna を使わなくても `kubectl apply -k my-cluster/kustomize/" -"nginx` で同じものをクラスタに入れることができます。Tazuna はあくまでこれを **" -"宣言的に管理するための一段上の層** として乗せるだけ、と捉えておくと理解しやす" -"くなります。" +"この時点で、Tazuna を使わなくても `kubectl apply -k my-cluster/kustomize/nginx` " +"で同じものをクラスタに入れることができます。Tazuna はあくまでこれを **宣言的に管理するための一段上の層** " +"として乗せるだけ、と捉えておくと理解しやすくなります。" msgstr "" "At this point you could install the same content into the cluster with " "`kubectl apply -k my-cluster/kustomize/nginx`, without using Tazuna at all. " @@ -2748,9 +2644,8 @@ msgstr "2. Generate and write tazuna.yaml" #: src/guides/first-tazuna-yaml.md:113 msgid "" -"次に、Tazuna に対する「唯一の入力ファイル」である `tazuna.yaml` を用意しま" -"す。 ゼロから手書きしてもよいのですが、雛形は `tazuna init` で生成するところ" -"から始めるのが楽です。" +"次に、Tazuna に対する「唯一の入力ファイル」である `tazuna.yaml` を用意します。 ゼロから手書きしてもよいのですが、雛形は " +"`tazuna init` で生成するところから始めるのが楽です。" msgstr "" "Next, prepare `tazuna.yaml`, the single input file for Tazuna. You can hand-" "write it from scratch, but it is easier to start by generating the skeleton " @@ -2758,15 +2653,15 @@ msgstr "" #: src/guides/first-tazuna-yaml.md:121 msgid "" -"`my-cluster/tazuna.yaml` が次の内容で作られます(コメント行は省略していま" -"す。 `minimumSupportedTazunaVersion` の値は生成に使った tazuna のバージョンに" -"なります)。" +"`my-cluster/tazuna.yaml` が次の内容で作られます(コメント行は省略しています。 " +"`minimumSupportedTazunaVersion` の値は生成に使った tazuna のバージョンになります)。" msgstr "" "`my-cluster/tazuna.yaml` is created with the following content (comment " "lines omitted; the value of `minimumSupportedTazunaVersion` becomes the " "version of the tazuna used to generate it)." #: src/guides/first-tazuna-yaml.md:125 src/guides/first-tazuna-yaml.md:144 +#: src/guides/environments.md:21 src/guides/environments.md:49 #: src/reference/tazuna-yaml.md:22 src/reference/tazuna-hint-yaml.md:35 #: src/reference/genesis-secret.md:172 src/reference/genesis-secret.md:192 #: src/reference/secret-providers.md:28 src/reference/cli/init.md:25 @@ -2774,43 +2669,42 @@ msgid "tazuna.pepabo.com/v1" msgstr "tazuna.pepabo.com/v1" #: src/guides/first-tazuna-yaml.md:126 src/guides/first-tazuna-yaml.md:145 +#: src/guides/environments.md:22 src/guides/environments.md:50 #: src/reference/tazuna-yaml.md:23 src/reference/cli/init.md:26 msgid "Tazuna" msgstr "Tazuna" #: src/guides/first-tazuna-yaml.md:128 src/guides/first-tazuna-yaml.md:147 -#: src/reference/tazuna-yaml.md:57 +#: src/reference/tazuna-yaml.md:58 msgid "minimumSupportedTazunaVersion" msgstr "minimumSupportedTazunaVersion" #: src/guides/first-tazuna-yaml.md:128 src/guides/first-tazuna-yaml.md:147 -#: src/reference/tazuna-yaml.md:57 src/reference/cli/init.md:30 +#: src/reference/tazuna-yaml.md:58 src/reference/cli/init.md:30 msgid "\"1.4.0\"" msgstr "\"1.4.0\"" #: src/guides/first-tazuna-yaml.md:132 msgid "" "`tazuna init` を使う利点は、`apiVersion` / `kind` に加えて " -"**`minimumSupportedTazunaVersion`** を自動で埋めてくれる点です。これは「この " -"`tazuna.yaml` を処理するのに必要な tazuna の最小バージョン」で、 これを下回る" -"古い tazuna でうっかり処理しようとするとエラーで止まります。 チームやリポジト" -"リ間で tazuna のバージョンが混在しても事故りにくくなります (詳細は [`tazuna " -"init`](../reference/cli/init.md) と [`minimumSupportedTazunaVersion`](../" -"reference/tazuna-yaml.md#minimumsupportedtazunaversion) を参照)。" +"**`minimumSupportedTazunaVersion`** を自動で埋めてくれる点です。これは「この `tazuna.yaml` " +"を処理するのに必要な tazuna の最小バージョン」で、 これを下回る古い tazuna でうっかり処理しようとするとエラーで止まります。 " +"チームやリポジトリ間で tazuna のバージョンが混在しても事故りにくくなります (詳細は [`tazuna " +"init`](../reference/cli/init.md) と " +"[`minimumSupportedTazunaVersion`](../reference/tazuna-" +"yaml.md#minimumsupportedtazunaversion) を参照)。" msgstr "" "The benefit of using `tazuna init` is that, in addition to `apiVersion` / " "`kind`, it automatically fills in **`minimumSupportedTazunaVersion`**. This " -"is \"the minimum version of tazuna required to process this `tazuna.yaml`\"; " -"an older tazuna below it that tries to process the file stops with an error. " -"This makes accidents less likely even when tazuna versions are mixed across " -"teams or repositories (see [`tazuna init`](../reference/cli/init.md) and " -"[`minimumSupportedTazunaVersion`](../reference/tazuna-" +"is \"the minimum version of tazuna required to process this `tazuna.yaml`\";" +" an older tazuna below it that tries to process the file stops with an " +"error. This makes accidents less likely even when tazuna versions are mixed " +"across teams or repositories (see [`tazuna init`](../reference/cli/init.md) " +"and [`minimumSupportedTazunaVersion`](../reference/tazuna-" "yaml.md#minimumsupportedtazunaversion) for details)." #: src/guides/first-tazuna-yaml.md:139 -msgid "" -"あとは、生成された空の `manifests: []` を、今回入れたい nginx に置き換えま" -"す。" +msgid "あとは、生成された空の `manifests: []` を、今回入れたい nginx に置き換えます。" msgstr "" "After that, replace the generated empty `manifests: []` with the nginx you " "want to install this time." @@ -2829,35 +2723,31 @@ msgstr "At first, you only need to set these three fields." #: src/guides/first-tazuna-yaml.md:156 msgid "" -"`name` — この Manifest の識別子。State やログでこの名前が使われます。 半角英" -"数字とハイフン・アンダースコアで付けます。" +"`name` — この Manifest の識別子。State やログでこの名前が使われます。 半角英数字とハイフン・アンダースコアで付けます。" msgstr "" "`name` — the identifier for this Manifest. State entries and log lines use " "this name. Use alphanumerics, hyphens, and underscores." #: src/guides/first-tazuna-yaml.md:158 msgid "" -"`type` — Tazuna がどのバックエンドでこの Manifest を扱うか。 ここでは " -"`kustomize` を指定します。`helmfile` や `oras` といった選択肢もあります " -"([Manifest type](../concepts/glossary.md#manifest-type) 参照)。" +"`type` — Tazuna がどのバックエンドでこの Manifest を扱うか。 ここでは `kustomize` " +"を指定します。`helmfile` や `oras` といった選択肢もあります ([Manifest " +"type](../concepts/glossary.md#manifest-type) 参照)。" msgstr "" "`type` — which backend Tazuna uses for this Manifest. Here we specify " -"`kustomize`. Other options include `helmfile` and `oras` (see [Manifest type]" -"(../concepts/glossary.md#manifest-type))." +"`kustomize`. Other options include `helmfile` and `oras` (see [Manifest " +"type](../concepts/glossary.md#manifest-type))." #: src/guides/first-tazuna-yaml.md:161 -msgid "" -"`path` — 実体のあるディレクトリ。**`tazuna.yaml` 自身の置かれているディレクト" -"リ起点** の相対パスで書きます。" +msgid "`path` — 実体のあるディレクトリ。**`tazuna.yaml` 自身の置かれているディレクトリ起点** の相対パスで書きます。" msgstr "" "`path` — the directory holding the actual content. Written as a path " "relative to **the directory where `tazuna.yaml` itself resides**." #: src/guides/first-tazuna-yaml.md:164 msgid "" -"`path` の起点が「コマンドを実行した cwd」ではなく「`tazuna.yaml` 自身の場所」" -"である点には注意してください。 リポジトリのどこから `tazuna` を呼び出しても結" -"果が変わらないように、こちらに合わせています。" +"`path` の起点が「コマンドを実行した cwd」ではなく「`tazuna.yaml` 自身の場所」である点には注意してください。 " +"リポジトリのどこから `tazuna` を呼び出しても結果が変わらないように、こちらに合わせています。" msgstr "" "Note that `path` is resolved relative to **the location of `tazuna.yaml` " "itself**, not the cwd where the command was run. We chose this so that " @@ -2868,9 +2758,7 @@ msgid "3. check で妥当性を確認する" msgstr "3. Verify Validity With check" #: src/guides/first-tazuna-yaml.md:169 -msgid "" -"ファイルを書き終えたら、まずクラスタには触れずに `tazuna check` で " -"`tazuna.yaml` を検証します。" +msgid "ファイルを書き終えたら、まずクラスタには触れずに `tazuna check` で `tazuna.yaml` を検証します。" msgstr "" "Once you have finished writing the file, first validate `tazuna.yaml` " "without touching the cluster, using `tazuna check`." @@ -2892,9 +2780,7 @@ msgid "`path` の指す場所が実際に存在する" msgstr "The location referenced by `path` actually exists" #: src/guides/first-tazuna-yaml.md:182 -msgid "" -"ここで失敗するものは、すべて **クラスタに触る前に** 落とせます。 CI で最初に" -"通す対象として組み込みやすいコマンドでもあります。" +msgid "ここで失敗するものは、すべて **クラスタに触る前に** 落とせます。 CI で最初に通す対象として組み込みやすいコマンドでもあります。" msgstr "" "Anything that fails here can all be caught **before touching the cluster**. " "It is also a command that fits naturally as the first step in CI." @@ -2905,25 +2791,24 @@ msgstr "4. Inspect the Output Without Touching the Cluster Using build" #: src/guides/first-tazuna-yaml.md:187 msgid "" -"次に、`tazuna build` を使って「`tazuna apply` したら何が入るか」を、 クラスタ" -"には一切触れずに stdout に書き出します。" +"次に、`tazuna build` を使って「`tazuna apply` したら何が入るか」を、 クラスタには一切触れずに stdout " +"に書き出します。" msgstr "" "Next, use `tazuna build` to write \"what would be installed by `tazuna " "apply`\" to stdout, without touching the cluster at all." #: src/guides/first-tazuna-yaml.md:194 msgid "" -"`kustomize build` 相当の Kubernetes manifest が出力されます。 今回の例では先" -"ほど書いた `Deployment/nginx` がそのまま出てくるはずです。" +"`kustomize build` 相当の Kubernetes manifest が出力されます。 今回の例では先ほど書いた " +"`Deployment/nginx` がそのまま出てくるはずです。" msgstr "" "Kubernetes manifests equivalent to `kustomize build` are emitted. In this " "example, the `Deployment/nginx` you just wrote should come out as-is." #: src/guides/first-tazuna-yaml.md:197 msgid "" -"`build` はクラスタへの接続を必要としません。 **意図したものが本当に入ろうとし" -"ているか** をレビューしたい場面や、 レンダリング結果を別のツールに食わせたい" -"場面で使います。" +"`build` はクラスタへの接続を必要としません。 **意図したものが本当に入ろうとしているか** をレビューしたい場面や、 " +"レンダリング結果を別のツールに食わせたい場面で使います。" msgstr "" "`build` does not require a connection to the cluster. Use it when you want " "to review **whether what is about to be applied is really what you " @@ -2935,12 +2820,12 @@ msgstr "5. Reflect Into the Cluster With apply" #: src/guides/first-tazuna-yaml.md:203 msgid "" -"ここまで来れば、本番作業はあと 1 コマンドです。 current-context が入れたいク" -"ラスタを指していることをもう一度確認してから、 `tazuna apply` を実行します。" +"ここまで来れば、本番作業はあと 1 コマンドです。 current-context が入れたいクラスタを指していることをもう一度確認してから、 " +"`tazuna apply` を実行します。" msgstr "" "Once you reach this point, you are just one command away from the real " -"action. Confirm once more that current-context points to the target cluster, " -"then run `tazuna apply`." +"action. Confirm once more that current-context points to the target cluster," +" then run `tazuna apply`." #: src/guides/first-tazuna-yaml.md:208 msgid "# 入れたいクラスタを指していること\n" @@ -2960,30 +2845,28 @@ msgstr "Walks `manifests[]` in declaration order" #: src/guides/first-tazuna-yaml.md:216 msgid "" -"各 Manifest を対応する [Manager](../concepts/glossary.md#manager)(ここでは " -"kustomize Manager)に渡す" +"各 Manifest を対応する [Manager](../concepts/glossary.md#manager)(ここでは kustomize " +"Manager)に渡す" msgstr "" -"Hands each Manifest to its corresponding [Manager](../concepts/" -"glossary.md#manager) (here, the kustomize Manager)" +"Hands each Manifest to its corresponding " +"[Manager](../concepts/glossary.md#manager) (here, the kustomize Manager)" #: src/guides/first-tazuna-yaml.md:217 msgid "kustomize Manager が `path` をレンダリングし、結果をクラスタに反映する" msgstr "" -"The kustomize Manager renders `path` and reflects the result into the cluster" +"The kustomize Manager renders `path` and reflects the result into the " +"cluster" #: src/guides/first-tazuna-yaml.md:218 -msgid "" -"反映した結果を [State](../concepts/glossary.md#state) としてクラスタ内に記録" -"する" +msgid "反映した結果を [State](../concepts/glossary.md#state) としてクラスタ内に記録する" msgstr "" -"Records the reflected result inside the cluster as [State](../concepts/" -"glossary.md#state)" +"Records the reflected result inside the cluster as " +"[State](../concepts/glossary.md#state)" #: src/guides/first-tazuna-yaml.md:220 msgid "" -"State はクラスタ内 `tazuna` namespace の ConfigMap (`tazuna-state-`) に置かれます。`tazuna` namespace が無ければ自動的に作られるので、 事" -"前に作っておく必要はありません。" +"State はクラスタ内 `tazuna` namespace の ConfigMap (`tazuna-state-`)" +" に置かれます。`tazuna` namespace が無ければ自動的に作られるので、 事前に作っておく必要はありません。" msgstr "" "State is placed in a ConfigMap (`tazuna-state-`) under the " "`tazuna` namespace inside the cluster. The `tazuna` namespace is created " @@ -3002,15 +2885,14 @@ msgstr "" #: src/guides/first-tazuna-yaml.md:233 msgid "" -"`tazuna state list` には、いま Tazuna が「自分が入れたもの」として記録してい" -"る リソースが一覧で出ます。今回のガイドでは `Deployment/nginx` 1 件が出ている" -"はずです。 ここに出ているリソースは、後で `tazuna destroy` で安全に取り外せる" -"対象でもあります。" +"`tazuna state list` には、いま Tazuna が「自分が入れたもの」として記録している リソースが一覧で出ます。今回のガイドでは " +"`Deployment/nginx` 1 件が出ているはずです。 ここに出ているリソースは、後で `tazuna destroy` " +"で安全に取り外せる対象でもあります。" msgstr "" "`tazuna state list` shows the resources Tazuna currently records as " -"\"installed by me.\" In this guide, you should see a single `Deployment/" -"nginx` entry. The resources listed here are also what `tazuna destroy` can " -"later safely remove." +"\"installed by me.\" In this guide, you should see a single " +"`Deployment/nginx` entry. The resources listed here are also what `tazuna " +"destroy` can later safely remove." #: src/guides/first-tazuna-yaml.md:237 msgid "よくある落とし穴" @@ -3019,13 +2901,13 @@ msgstr "Common Pitfalls" #: src/guides/first-tazuna-yaml.md:239 msgid "最初の 1 枚を書くときによく踏むものを並べておきます。" msgstr "" -"Here are some common things people stumble over when writing their first one." +"Here are some common things people stumble over when writing their first " +"one." #: src/guides/first-tazuna-yaml.md:241 msgid "" -"**`path` の起点を勘違いする** — `tazuna.yaml` 自身のディレクトリ起点です。 " -"`cd` した場所からの相対パスのつもりで書くと、CI とローカルで挙動が食い違う原" -"因になります。" +"**`path` の起点を勘違いする** — `tazuna.yaml` 自身のディレクトリ起点です。 `cd` " +"した場所からの相対パスのつもりで書くと、CI とローカルで挙動が食い違う原因になります。" msgstr "" "**Misunderstanding the `path` base** — it is relative to the directory " "containing `tazuna.yaml` itself. Writing it as a path relative to your " @@ -3033,9 +2915,8 @@ msgstr "" #: src/guides/first-tazuna-yaml.md:243 msgid "" -"**クラスタを取り違える** — `kubectl config current-context` の確認を apply の" -"直前に必ず入れる運用にします。`context_matches` を導入すれば仕組みで防げます" -"が、 まずは目視確認を習慣にします。" +"**クラスタを取り違える** — `kubectl config current-context` の確認を apply " +"の直前に必ず入れる運用にします。`context_matches` を導入すれば仕組みで防げますが、 まずは目視確認を習慣にします。" msgstr "" "**Mistaking which cluster** — make it a habit to check `kubectl config " "current-context` immediately before `apply`. `context_matches` lets you " @@ -3043,9 +2924,8 @@ msgstr "" #: src/guides/first-tazuna-yaml.md:246 msgid "" -"**kustomize 側のエラーを Tazuna のエラーだと思う** — `tazuna build` が失敗す" -"るときは、 ほとんどの場合 kustomize 側のエラーがそのまま伝播してきています。 " -"`kustomize build ./path` を直接実行して切り分けると速いです。" +"**kustomize 側のエラーを Tazuna のエラーだと思う** — `tazuna build` が失敗するときは、 ほとんどの場合 " +"kustomize 側のエラーがそのまま伝播してきています。 `kustomize build ./path` を直接実行して切り分けると速いです。" msgstr "" "**Mistaking kustomize errors for Tazuna errors** — when `tazuna build` " "fails, in most cases the underlying error is from kustomize, propagated as-" @@ -3054,9 +2934,8 @@ msgstr "" #: src/guides/first-tazuna-yaml.md:249 msgid "" -"**手で `kubectl apply` したものを混ぜる** — 同じクラスタに対して Tazuna 経由" -"と 手作業を混在させると、State と実体がずれていきます。混ぜる場合は、 あとか" -"ら `tazuna state diff` で差分を見られることだけ覚えておきます。" +"**手で `kubectl apply` したものを混ぜる** — 同じクラスタに対して Tazuna 経由と 手作業を混在させると、State " +"と実体がずれていきます。混ぜる場合は、 あとから `tazuna state diff` で差分を見られることだけ覚えておきます。" msgstr "" "**Mixing in things applied via hand `kubectl apply`** — if you mix Tazuna-" "driven apply with manual operations against the same cluster, State and " @@ -3069,23 +2948,280 @@ msgstr "Next Steps" #: src/guides/first-tazuna-yaml.md:255 msgid "" -"次のガイドでは、ここで作った `tazuna.yaml` に Manifest を増やし、 **複数のア" -"ドオンを順序付きでクラスタに入れる** ところを扱う予定です。 そこから先で `--" -"tags` による絞り込み、`includes` による分割、`context_matches` による 誤クラ" -"スタ事故の防止といった話に段階的に踏み込んでいきます。" +"次のガイドでは、ここで作った `tazuna.yaml` に Manifest を増やし、 **複数のアドオンを順序付きでクラスタに入れる** " +"ところを扱う予定です。 そこから先で `--tags` による絞り込み、`includes` による分割、`context_matches` による " +"誤クラスタ事故の防止といった話に段階的に踏み込んでいきます。" msgstr "" "The next guide will add more Manifests to the `tazuna.yaml` you built here, " -"covering **installing multiple add-ons into a cluster in order**. From there " -"we will gradually move into `--tags`-based filtering, splitting via " +"covering **installing multiple add-ons into a cluster in order**. From there" +" we will gradually move into `--tags`-based filtering, splitting via " "`includes`, and preventing the-wrong-cluster accidents with " "`context_matches`." +#: src/guides/environments.md:3 +msgid "" +"1 つの `tazuna.yaml` を staging / production など複数のクラスタに使い回したい、 " +"という場面は珍しくありません。Tazuna は次の 2 つの仕組みでこれを支えます。" +msgstr "" +"It is common to want to reuse a single `tazuna.yaml` across multiple " +"clusters such as staging / production. Tazuna supports this with the " +"following two mechanisms." + +#: src/guides/environments.md:6 +msgid "" +"**`{{ .Environment }}` テンプレート変数** — `tazuna.yaml` を Go template として " +"描画し、`-e/--environment` で渡した環境名を値として埋め込みます。" +msgstr "" +"**The `{{ .Environment }}` template variable** — renders `tazuna.yaml` as a " +"Go template and embeds the environment name passed via `-e/--environment` as" +" its value." + +#: src/guides/environments.md:8 +msgid "" +"**`spec.environments`** — 環境ごとに `context_matches` を宣言し、`-e` で選んだ " +"環境の値で「どのクラスタへの適用を許すか」を切り替えます。" +msgstr "" +"**`spec.environments`** — declares `context_matches` per environment, and " +"switches which clusters may be applied to based on the value of the " +"environment selected with `-e`." + +#: src/guides/environments.md:11 +msgid "" +"このガイドでは、この 2 つを組み合わせて「環境ごとにオーバーレイを切り替えつつ、 誤ったクラスタへの適用を防ぐ」ところまでを通します。仕様の詳細は " +"[`tazuna.yaml` スキーマ - environments](../reference/tazuna-" +"yaml.md#environments) / [テンプレート変数](../reference/tazuna-yaml.md#テンプレート変数) " +"を参照してください。" +msgstr "" +"This guide walks through combining these two so that you can switch overlays" +" per environment while preventing application to the wrong cluster. For the " +"full specification, see [`tazuna.yaml` schema - " +"environments](../reference/tazuna-yaml.md#environments) / [Template " +"variables](../reference/tazuna-yaml.md#template-variables)." + +#: src/guides/environments.md:16 +msgid "1. `{{ .Environment }}` を埋め込む" +msgstr "1. Embed `{{ .Environment }}`" + +#: src/guides/environments.md:18 +msgid "まず、環境名でマニフェストのパスを切り替えます。" +msgstr "First, switch the manifest path by environment name." + +#: src/guides/environments.md:27 src/guides/environments.md:65 +#: src/guides/environments.md:106 src/reference/tazuna-yaml.md:137 +msgid "./overlays/{{ .Environment }}" +msgstr "./overlays/{{ .Environment }}" + +#: src/guides/environments.md:30 +msgid "" +"`-e staging` を渡すと `path` は `./overlays/staging` に、`-e production` を渡すと " +"`./overlays/production` に描画されます。" +msgstr "" +"Passing `-e staging` renders `path` as `./overlays/staging`, and `-e " +"production` as `./overlays/production`." + +#: src/guides/environments.md:38 +msgid "" +"`-e` を渡さない場合、`{{ .Environment }}` は **空文字列** に展開されます (この例では `path: " +"./overlays/` になります)。描画は `tazuna.yaml` を読み込む すべてのコマンドで行われるため、`build` " +"で結果を確認してから `apply` するとよいでしょう。" +msgstr "" +"If you do not pass `-e`, `{{ .Environment }}` expands to an **empty string**" +" (in this example, `path: ./overlays/`). Since rendering happens for every " +"command that reads `tazuna.yaml`, it is a good idea to check the result with" +" `build` before running `apply`." + +#: src/guides/environments.md:42 +msgid "2. 環境ごとに適用先クラスタを限定する" +msgstr "2. Restrict Target Clusters per Environment" + +#: src/guides/environments.md:44 +msgid "" +"テンプレート変数だけでは「production 用の設定を、間違えて staging クラスタに 適用してしまう」事故は防げません。そこで " +"`spec.environments` で環境ごとに `context_matches`(許可する kubeconfig context " +"名の正規表現)を宣言します。" +msgstr "" +"Template variables alone cannot prevent accidents such as applying a " +"production configuration to the staging cluster by mistake. To handle that, " +"declare `context_matches` (a regular expression for the allowed kubeconfig " +"context names) per environment under `spec.environments`." + +#: src/guides/environments.md:52 src/reference/tazuna-yaml.md:124 +msgid "environments" +msgstr "environments" + +#: src/guides/environments.md:53 src/guides/environments.md:99 +#: src/reference/tazuna-yaml.md:125 +#: src/reference/manifest-types/kustomize.md:46 +msgid "staging" +msgstr "staging" + +#: src/guides/environments.md:54 src/guides/environments.md:59 +#: src/guides/environments.md:96 src/guides/environments.md:100 +#: src/guides/environments.md:102 src/operations/destroy-runbook.md:22 +#: src/reference/tazuna-yaml.md:80 src/reference/tazuna-yaml.md:126 +#: src/reference/tazuna-yaml.md:131 +msgid "context_matches" +msgstr "context_matches" + +#: src/guides/environments.md:55 src/reference/tazuna-yaml.md:127 +msgid "^staging-tokyo$" +msgstr "^staging-tokyo$" + +#: src/guides/environments.md:56 src/reference/tazuna-yaml.md:128 +msgid "^staging-osaka$" +msgstr "^staging-osaka$" + +#: src/guides/environments.md:57 src/guides/environments.md:61 +#: src/operations/destroy-runbook.md:24 src/reference/tazuna-yaml.md:83 +#: src/reference/tazuna-yaml.md:129 src/reference/tazuna-yaml.md:133 +msgid "context_match_mode" +msgstr "context_match_mode" + +#: src/guides/environments.md:57 src/operations/destroy-runbook.md:24 +#: src/reference/tazuna-yaml.md:129 +msgid "or" +msgstr "or" + +#: src/guides/environments.md:58 src/guides/environments.md:101 +#: src/reference/tazuna-yaml.md:130 +msgid "production" +msgstr "production" + +#: src/guides/environments.md:60 src/operations/destroy-runbook.md:23 +#: src/reference/tazuna-yaml.md:132 +msgid "^prod-tokyo$" +msgstr "^prod-tokyo$" + +#: src/guides/environments.md:61 src/reference/tazuna-yaml.md:83 +#: src/reference/tazuna-yaml.md:133 +msgid "and" +msgstr "and" + +#: src/guides/environments.md:68 +msgid "" +"`tazuna apply -e staging` は、current-context が `staging-tokyo` または `staging-" +"osaka` のときだけ実行されます。それ以外の context では中断します。" +msgstr "" +"`tazuna apply -e staging` runs only when the current-context is `staging-" +"tokyo` or `staging-osaka`. It aborts for any other context." + +#: src/guides/environments.md:70 +msgid "" +"`tazuna apply -e production` は、current-context が `prod-tokyo` のときだけ 実行されます。" +msgstr "" +"`tazuna apply -e production` runs only when the current-context is `prod-" +"tokyo`." + +#: src/guides/environments.md:73 +msgid "" +"`-e` に対応する環境が `environments` に宣言されていない場合、 `apply` / `destroy` / `check` " +"はエラーになります。タイプミスによる誤適用も防げます。" +msgstr "" +"If the environment corresponding to `-e` is not declared under " +"`environments`, `apply` / `destroy` / `check` fail with an error. This also " +"prevents mis-application caused by typos." + +#: src/guides/environments.md:76 +msgid "3. `check` で事前検証する" +msgstr "3. Pre-validate With `check`" + +#: src/guides/environments.md:78 +msgid "" +"`tazuna check -e ` は、`tazuna.yaml` の描画・バリデーションに加えて、 指定した環境が " +"`environments` に存在するかまで確認します。CI で `tazuna check -e production` " +"を回しておくと、production 適用前に設定ミスを検知できます。" +msgstr "" +"In addition to rendering and validating `tazuna.yaml`, `tazuna check -e " +"` also verifies that the specified environment exists under " +"`environments`. Running `tazuna check -e production` in CI lets you detect " +"configuration mistakes before applying to production." + +#: src/guides/environments.md:82 +msgid "" +"```console\n" +"$ tazuna check -e production\n" +"$ tazuna check -e typo-env\n" +"error: environment \"typo-env\" is not declared under spec.environments\n" +"```" +msgstr "" +"```console\n" +"$ tazuna check -e production\n" +"$ tazuna check -e typo-env\n" +"error: environment \"typo-env\" is not declared under spec.environments\n" +"```" + +#: src/guides/environments.md:88 +msgid "`-e` を渡さないとき(ローカル開発)" +msgstr "When You Do Not Pass `-e` (Local Development)" + +#: src/guides/environments.md:90 +msgid "" +"`-e` を省略すると、`environments` は無視され、ルート直下の `context_matches` / " +"`context_match_mode` が使われます。ローカルの kind クラスタ向けの設定を ルート直下に、staging / " +"production を `environments` に置く、という使い分けが可能です。" +msgstr "" +"If you omit `-e`, `environments` is ignored and the top-level " +"`context_matches` / `context_match_mode` are used. You can, for example, " +"keep settings for a local kind cluster at the top level while placing " +"staging / production under `environments`." + +#: src/guides/environments.md:97 +msgid "" +"^kind- # -e なしのローカル実行で使われる\n" +" environments" +msgstr "" +"^kind- # used for local runs without -e\n" +" environments" + +#: src/guides/environments.md:100 src/reference/tazuna-yaml.md:81 +msgid "^staging-" +msgstr "^staging-" + +#: src/guides/environments.md:102 +msgid "^prod-" +msgstr "^prod-" + +#: src/guides/environments.md:109 +msgid "まとめ" +msgstr "Summary" + +#: src/guides/environments.md:111 +msgid "やりたいこと" +msgstr "Goal" + +#: src/guides/environments.md:111 +msgid "使う仕組み" +msgstr "Mechanism" + +#: src/guides/environments.md:113 +msgid "環境名で値・パスを差し替える" +msgstr "Substitute values / paths by environment name" + +#: src/guides/environments.md:113 src/reference/tazuna-yaml.md:169 +msgid "`{{ .Environment }}`" +msgstr "`{{ .Environment }}`" + +#: src/guides/environments.md:114 +msgid "環境ごとに適用先クラスタを限定する" +msgstr "Restrict target clusters per environment" + +#: src/guides/environments.md:114 +msgid "`spec.environments[].context_matches`" +msgstr "`spec.environments[].context_matches`" + +#: src/guides/environments.md:115 +msgid "適用前に環境設定を検証する" +msgstr "Validate environment configuration before applying" + +#: src/guides/environments.md:115 +msgid "`tazuna check -e `" +msgstr "`tazuna check -e `" + #: src/operations/index.md:3 msgid "" -"このセクションは、Tazuna を **継続的に使う** 局面の指針をまとめます。 タスク" -"単位の手順(「新しい add-on を入れる」「tazuna.yaml を書く」など)は [ガイド]" -"(../guides/index.md) を、コマンドやスキーマの仕様は [リファレンス](../" -"reference/index.md) を参照してください。" +"このセクションは、Tazuna を **継続的に使う** 局面の指針をまとめます。 タスク単位の手順(「新しい add-on " +"を入れる」「tazuna.yaml を書く」など)は [ガイド](../guides/index.md) を、コマンドやスキーマの仕様は " +"[リファレンス](../reference/index.md) を参照してください。" msgstr "" "This section collects guidance for **continuously using** Tazuna. For task-" "level procedures (\"installing a new add-on,\" \"writing tazuna.yaml,\" " @@ -3093,12 +3229,10 @@ msgstr "" "specifications, see the [Reference](../reference/index.md)." #: src/operations/index.md:8 -msgid "" -"このセクションでは、**事故を起こさない運用** と **drift を発見できる運用** を" -"中心に扱います。" +msgid "このセクションでは、**事故を起こさない運用** と **drift を発見できる運用** を中心に扱います。" msgstr "" -"This section focuses on **operations that avoid incidents** and **operations " -"that can detect drift**." +"This section focuses on **operations that avoid incidents** and **operations" +" that can detect drift**." #: src/operations/index.md:10 src/reference/index.md:10 #: src/reference/manifest-types/index.md:16 src/contributing/index.md:7 @@ -3108,8 +3242,8 @@ msgstr "Contents" #: src/operations/index.md:12 msgid "" "**[`tazuna destroy` の運用](./destroy-runbook.md)** — 本番クラスタで destroy " -"を打つときに踏むべき手順、`TAZUNA_DESTROY_EXECUTABLE` と `context_matches` の" -"二段ガード、事故が起きやすいシナリオ。" +"を打つときに踏むべき手順、`TAZUNA_DESTROY_EXECUTABLE` と `context_matches` " +"の二段ガード、事故が起きやすいシナリオ。" msgstr "" "**[Operating `tazuna destroy`](./destroy-runbook.md)** — the procedure to " "follow when running destroy on a production cluster, the two-layer guard of " @@ -3118,9 +3252,8 @@ msgstr "" #: src/operations/index.md:15 msgid "" -"**[Drift モニタリング](./drift-monitoring.md)** — `tazuna state diff` と " -"`tazuna state drift` を定期実行して 2 種類の drift を 可視化する運用、出力" -"フォーマットと通知の組み立て方。" +"**[Drift モニタリング](./drift-monitoring.md)** — `tazuna state diff` と `tazuna " +"state drift` を定期実行して 2 種類の drift を 可視化する運用、出力フォーマットと通知の組み立て方。" msgstr "" "**[Drift Monitoring](./drift-monitoring.md)** — operating `tazuna state " "diff` and `tazuna state drift` on a periodic schedule to visualize the two " @@ -3128,8 +3261,8 @@ msgstr "" #: src/operations/index.md:18 msgid "" -"**[CI パイプライン](./ci-pipeline.md)** — PR で `check` / `build` / `plan`、" -"`main` マージで `apply` を回す典型構成、 `destroy` の置き場、状態同期の選択。" +"**[CI パイプライン](./ci-pipeline.md)** — PR で `check` / `build` / `plan`、`main` " +"マージで `apply` を回す典型構成、 `destroy` の置き場、状態同期の選択。" msgstr "" "**[CI Pipeline](./ci-pipeline.md)** — the typical setup that runs `check` / " "`build` / `plan` on PRs and `apply` on `main` merges, where to place " @@ -3137,9 +3270,8 @@ msgstr "" #: src/operations/index.md:21 msgid "" -"**[オブザーバビリティ](./observability.md)** — `--otlp-endpoint` で " -"OpenTelemetry trace を export する設定、3 階層 trace tree と主な span " -"attribute の説明。" +"**[オブザーバビリティ](./observability.md)** — `--otlp-endpoint` で OpenTelemetry " +"trace を export する設定、3 階層 trace tree と主な span attribute の説明。" msgstr "" "**[Observability](./observability.md)** — configuring OpenTelemetry trace " "export via `--otlp-endpoint`, the 3-layer trace tree, and the main span " @@ -3147,14 +3279,14 @@ msgstr "" #: src/operations/destroy-runbook.md:3 msgid "" -"このページは、本番に近いクラスタで `tazuna destroy` を打つときの **手順と備え" -"るべきガード** をまとめます。 コマンドの仕様そのものは [`tazuna destroy` リ" -"ファレンス](../reference/cli/destroy.md) を参照してください。" +"このページは、本番に近いクラスタで `tazuna destroy` を打つときの **手順と備えるべきガード** をまとめます。 " +"コマンドの仕様そのものは [`tazuna destroy` リファレンス](../reference/cli/destroy.md) " +"を参照してください。" msgstr "" "This page summarizes **the procedure and the guards you should have in " -"place** when running `tazuna destroy` against a near-production cluster. For " -"the command specification itself, see the [`tazuna destroy` reference](../" -"reference/cli/destroy.md)." +"place** when running `tazuna destroy` against a near-production cluster. For" +" the command specification itself, see the [`tazuna destroy` " +"reference](../reference/cli/destroy.md)." #: src/operations/destroy-runbook.md:6 msgid "なぜ runbook 化するか" @@ -3162,25 +3294,23 @@ msgstr "Why Make a Runbook" #: src/operations/destroy-runbook.md:8 msgid "" -"`destroy` は Tazuna 管理下のリソースをクラスタから取り除く操作で、影響範囲が " -"**クラスタ全体に及び得る** 唯一の系統的な書き込みコマンドです。手で `kubectl " -"delete` していくのと違い、Tazuna が「自分の管理対象」と見なすものはまとめて消" -"えます。" +"`destroy` は Tazuna 管理下のリソースをクラスタから取り除く操作で、影響範囲が **クラスタ全体に及び得る** " +"唯一の系統的な書き込みコマンドです。手で `kubectl delete` していくのと違い、Tazuna " +"が「自分の管理対象」と見なすものはまとめて消えます。" msgstr "" "`destroy` is the operation that removes Tazuna-managed resources from the " -"cluster, and it is the only systematic write command whose impact can **span " -"the entire cluster**. Unlike running `kubectl delete` by hand, anything " +"cluster, and it is the only systematic write command whose impact can **span" +" the entire cluster**. Unlike running `kubectl delete` by hand, anything " "Tazuna considers its own management target disappears in one shot." #: src/operations/destroy-runbook.md:12 msgid "" -"二段ガード(プロンプト + 環境変数)は仕組みとしての防御線ですが、運用側でも " -"**「何が消えるかを事前に確認する」「context を取り違えない」** を組み立ててお" -"く必要があります。" +"二段ガード(プロンプト + 環境変数)は仕組みとしての防御線ですが、運用側でも **「何が消えるかを事前に確認する」「context " +"を取り違えない」** を組み立てておく必要があります。" msgstr "" -"The two-layer guard (prompt + environment variable) is a structural defense, " -"but on the operational side you also need to build in **\"confirm what will " -"be deleted in advance\"** and **\"don't mistake the context.\"**" +"The two-layer guard (prompt + environment variable) is a structural defense," +" but on the operational side you also need to build in **\"confirm what will" +" be deleted in advance\"** and **\"don't mistake the context.\"**" #: src/operations/destroy-runbook.md:15 msgid "前提として整える" @@ -3188,39 +3318,22 @@ msgstr "What to Prepare in Advance" #: src/operations/destroy-runbook.md:17 msgid "" -"destroy をクラスタに対して使う可能性があるなら、その `tazuna.yaml` には " -"**`spec.context_matches` を入れておく** ことを強く推奨します。" +"destroy をクラスタに対して使う可能性があるなら、その `tazuna.yaml` には **`spec.context_matches` " +"を入れておく** ことを強く推奨します。" msgstr "" "If there is any possibility you will run destroy against the cluster, we " "strongly recommend **including `spec.context_matches`** in that " "`tazuna.yaml`." -#: src/operations/destroy-runbook.md:22 src/reference/tazuna-yaml.md:79 -msgid "context_matches" -msgstr "context_matches" - -#: src/operations/destroy-runbook.md:23 -msgid "^prod-tokyo$" -msgstr "^prod-tokyo$" - -#: src/operations/destroy-runbook.md:24 src/reference/tazuna-yaml.md:82 -msgid "context_match_mode" -msgstr "context_match_mode" - -#: src/operations/destroy-runbook.md:24 -msgid "or" -msgstr "or" - #: src/operations/destroy-runbook.md:26 src/reference/test-plugin.md:58 msgid "# ...\n" msgstr "# ...\n" #: src/operations/destroy-runbook.md:29 msgid "" -"これがあると、`destroy` 時に current-context が `prod-tokyo` でなければ クラ" -"スタには一切触れずに失敗します。手元の context 設定ミスに対する、もっとも安価" -"な 保険です。詳細は [`tazuna.yaml` - context_matches](../reference/tazuna-" -"yaml.md#context_matches) を参照。" +"これがあると、`destroy` 時に current-context が `prod-tokyo` でなければ " +"クラスタには一切触れずに失敗します。手元の context 設定ミスに対する、もっとも安価な 保険です。詳細は [`tazuna.yaml` - " +"context_matches](../reference/tazuna-yaml.md#context_matches) を参照。" msgstr "" "With this in place, `destroy` will fail without touching the cluster at all " "if current-context is not `prod-tokyo`. It is the cheapest possible " @@ -3233,13 +3346,12 @@ msgstr "Standard Flow" #: src/operations/destroy-runbook.md:35 msgid "" -"以下の 1〜3 は **`tazuna destroy` の内部処理ではなく、運用上の事前確認手順** " -"です。 Tazuna 自身は `state list` を呼びませんが、destroy 前に手で打つことを" -"強く推奨します。" +"以下の 1〜3 は **`tazuna destroy` の内部処理ではなく、運用上の事前確認手順** です。 Tazuna 自身は `state " +"list` を呼びませんが、destroy 前に手で打つことを強く推奨します。" msgstr "" "Steps 1 to 3 below are **operational pre-checks, not internal processing of " -"`tazuna destroy`**. Tazuna itself does not call `state list`, but running it " -"by hand before `destroy` is strongly recommended." +"`tazuna destroy`**. Tazuna itself does not call `state list`, but running it" +" by hand before `destroy` is strongly recommended." #: src/operations/destroy-runbook.md:39 msgid "# 1. current-context を確認(destroy 直前は必ず)\n" @@ -3253,8 +3365,8 @@ msgstr "# 2. Understand what will disappear (recommended)\n" #: src/operations/destroy-runbook.md:45 msgid "# 3. 必要なら範囲を絞る(実行時とまったく同じ --tags を付ける)\n" msgstr "" -"# 3. Narrow the scope if needed (use exactly the same --tags as at execution " -"time)\n" +"# 3. Narrow the scope if needed (use exactly the same --tags as at execution" +" time)\n" #: src/operations/destroy-runbook.md:47 msgid "# 確認用\n" @@ -3263,8 +3375,8 @@ msgstr "# For confirmation\n" #: src/operations/destroy-runbook.md:48 msgid "# 4. 本実行。プロンプトと環境変数の両方を満たして初めて削除が走る\n" msgstr "" -"# 4. Real execution. Deletion only proceeds when both the prompt and the env " -"var are satisfied\n" +"# 4. Real execution. Deletion only proceeds when both the prompt and the env" +" var are satisfied\n" #: src/operations/destroy-runbook.md:53 msgid "`tazuna destroy` 自体は次の順で動きます。" @@ -3292,8 +3404,8 @@ msgstr "If all guards are satisfied, invoke each Manager's Destroy in order." #: src/operations/destroy-runbook.md:61 msgid "" -"「プロンプトに Yes」と「環境変数 `TAZUNA_DESTROY_EXECUTABLE=true`」の **両方" -"** が 揃わない限り、リソースは消えません。" +"「プロンプトに Yes」と「環境変数 `TAZUNA_DESTROY_EXECUTABLE=true`」の **両方** が " +"揃わない限り、リソースは消えません。" msgstr "" "Resources are not deleted unless **both** \"Yes at the prompt\" and \"the " "env var `TAZUNA_DESTROY_EXECUTABLE=true`\" are set." @@ -3303,9 +3415,7 @@ msgid "範囲を絞る運用" msgstr "Narrowing the Scope" #: src/operations/destroy-runbook.md:66 -msgid "" -"クラスタ全体ではなく、特定のグループだけを取り外したい場合は `--tags` で絞り" -"込みます。" +msgid "クラスタ全体ではなく、特定のグループだけを取り外したい場合は `--tags` で絞り込みます。" msgstr "" "If you want to remove only a specific group rather than the entire cluster, " "narrow it down with `--tags`." @@ -3318,8 +3428,8 @@ msgstr "true" #: src/operations/destroy-runbook.md:72 msgid "" "`--tags` は OR 評価です([`tazuna.yaml` - tags](../reference/tazuna-" -"yaml.md#tags))。 廃止予定のものに `lifecycle:deprecated` のような専用タグを" -"付けておき、その単位で削除する、 というパターンが扱いやすくなります。" +"yaml.md#tags))。 廃止予定のものに `lifecycle:deprecated` のような専用タグを付けておき、その単位で削除する、 " +"というパターンが扱いやすくなります。" msgstr "" "`--tags` is evaluated as OR (see [`tazuna.yaml` - tags](../reference/tazuna-" "yaml.md#tags)). A useful pattern is to attach a dedicated tag like " @@ -3328,9 +3438,8 @@ msgstr "" #: src/operations/destroy-runbook.md:76 msgid "" -"`tazuna destroy --tags <空>` は全 Manifest が対象です。**絞らない destroy** " -"を行うときは 事前に `tazuna state list` で全量を見ておき、想定外のリソースが" -"入っていないことを確認してください。" +"`tazuna destroy --tags <空>` は全 Manifest が対象です。**絞らない destroy** を行うときは 事前に " +"`tazuna state list` で全量を見ておき、想定外のリソースが入っていないことを確認してください。" msgstr "" "`tazuna destroy --tags ` targets all Manifests. When you are doing " "**an unnarrowed destroy**, look at the full inventory in advance with " @@ -3368,11 +3477,10 @@ msgstr "" #: src/operations/destroy-runbook.md:85 msgid "" -"本番系の `tazuna.yaml` には必ず `context_matches` を入れる。プロンプトで止ま" -"れるよう `--force` は付けない。" +"本番系の `tazuna.yaml` には必ず `context_matches` を入れる。プロンプトで止まれるよう `--force` は付けない。" msgstr "" -"Always include `context_matches` in production-tier `tazuna.yaml`. Avoid `--" -"force` so that the prompt remains as a stop." +"Always include `context_matches` in production-tier `tazuna.yaml`. Avoid " +"`--force` so that the prompt remains as a stop." #: src/operations/destroy-runbook.md:86 msgid "CI に destroy を組み込み、誤って `main` で発火" @@ -3380,16 +3488,14 @@ msgstr "Wiring destroy into CI and triggering it accidentally on `main`" #: src/operations/destroy-runbook.md:86 msgid "" -"環境変数を付けていないなら 4 で止まる。`TAZUNA_DESTROY_EXECUTABLE=true` を " -"CI 全体に常設していると進んでしまう。" +"環境変数を付けていないなら 4 で止まる。`TAZUNA_DESTROY_EXECUTABLE=true` を CI 全体に常設していると進んでしまう。" msgstr "" -"Without the env var, it stops at step 4. If `TAZUNA_DESTROY_EXECUTABLE=true` " -"is permanently set across CI, execution proceeds." +"Without the env var, it stops at step 4. If `TAZUNA_DESTROY_EXECUTABLE=true`" +" is permanently set across CI, execution proceeds." #: src/operations/destroy-runbook.md:86 msgid "" -"CI には destroy を組み込まない。どうしても必要なら、専用の手動 workflow を作" -"り、その job だけで一時的に環境変数を渡す。" +"CI には destroy を組み込まない。どうしても必要なら、専用の手動 workflow を作り、その job だけで一時的に環境変数を渡す。" msgstr "" "Do not wire destroy into CI. If you absolutely need it, create a dedicated " "manual workflow and pass the env var only in that job temporarily." @@ -3403,29 +3509,24 @@ msgid "プロンプトと環境変数の両方を満たすと進む。" msgstr "Execution proceeds when both the prompt and env var are satisfied." #: src/operations/destroy-runbook.md:87 -msgid "" -"「絞りなしの destroy」を本番に近いクラスタで打たない運用にする。打つときは事" -"前 `state list` を必ず通す。" +msgid "「絞りなしの destroy」を本番に近いクラスタで打たない運用にする。打つときは事前 `state list` を必ず通す。" msgstr "" "Treat \"unnarrowed destroy\" as something you do not do on near-production " "clusters. When you do, always run `state list` beforehand." #: src/operations/destroy-runbook.md:88 msgid "手作業で `kubectl apply` したものは destroy で消えない" -msgstr "Things applied by hand with `kubectl apply` are not removed by destroy" +msgstr "" +"Things applied by hand with `kubectl apply` are not removed by destroy" #: src/operations/destroy-runbook.md:88 -msgid "" -"State に無いリソースは Tazuna 管理対象外として扱われ、`destroy` の対象になら" -"ない。" +msgid "State に無いリソースは Tazuna 管理対象外として扱われ、`destroy` の対象にならない。" msgstr "" "Resources not in State are treated as outside Tazuna's management and are " "not targets of `destroy`." #: src/operations/destroy-runbook.md:88 -msgid "" -"状態が乖離していると判断したら、`tazuna state diff` で乖離を見える化した上で" -"対応を決める。" +msgid "状態が乖離していると判断したら、`tazuna state diff` で乖離を見える化した上で対応を決める。" msgstr "" "If you decide state has diverged, visualize the divergence with `tazuna " "state diff` first, then decide on the response." @@ -3435,25 +3536,24 @@ msgid "destroy の代わりに使える緩い手段" msgstr "Looser Alternatives to destroy" #: src/operations/destroy-runbook.md:92 -msgid "" -"リソースを「いま完全に消す」必要がない場合、次の選択肢があることを覚えておき" -"ます。" +msgid "リソースを「いま完全に消す」必要がない場合、次の選択肢があることを覚えておきます。" msgstr "" "When you do not need to \"delete it completely right now,\" remember that " "the following options exist." #: src/operations/destroy-runbook.md:94 msgid "" -"**`tazuna apply --sync --prune`** — `tazuna.yaml` から Manifest を消したうえ" -"で `apply --sync --prune` を打つと、 `removed` 分類で削除されます ([`tazuna " +"**`tazuna apply --sync --prune`** — `tazuna.yaml` から Manifest を消したうえで `apply" +" --sync --prune` を打つと、 `removed` 分類で削除されます ([`tazuna " "apply`](../reference/cli/apply.md#state-連携---sync----prune----atomic))。 " "`tazuna.yaml` のソースの真実を変えずに reset したいときには使えません。" msgstr "" "**`tazuna apply --sync --prune`** — if you remove a Manifest from " "`tazuna.yaml` and then run `apply --sync --prune`, it is deleted under the " -"`removed` classification (see [`tazuna apply`](../reference/cli/" -"apply.md#state-連携---sync----prune----atomic)). This cannot be used when " -"you want to reset without changing the source of truth in `tazuna.yaml`." +"`removed` classification (see [`tazuna " +"apply`](../reference/cli/apply.md#state-連携---sync----prune----atomic)). This" +" cannot be used when you want to reset without changing the source of truth " +"in `tazuna.yaml`." #: src/operations/destroy-runbook.md:99 msgid "**`--tags` で絞った destroy** — 上記参照。" @@ -3478,16 +3578,15 @@ msgstr "" #: src/operations/drift-monitoring.md:3 msgid "" -"このページは、`tazuna state diff` と `tazuna state drift` を **定期的に回し" -"て drift を 可視化する運用** の作り方をまとめます。 コマンドの仕様は " -"[`tazuna state diff`](../reference/cli/state-diff.md) と [`tazuna state " -"drift`](../reference/cli/state-drift.md) を、 State の中身の仕様は [State の" -"内部構造](../reference/state.md) を参照してください。" +"このページは、`tazuna state diff` と `tazuna state drift` を **定期的に回して drift を " +"可視化する運用** の作り方をまとめます。 コマンドの仕様は [`tazuna state diff`](../reference/cli/state-" +"diff.md) と [`tazuna state drift`](../reference/cli/state-drift.md) を、 State " +"の中身の仕様は [State の内部構造](../reference/state.md) を参照してください。" msgstr "" "This page summarizes how to set up **operations that periodically run " "`tazuna state diff` and `tazuna state drift` to visualize drift**. For the " -"command specs, see [`tazuna state diff`](../reference/cli/state-diff.md) and " -"[`tazuna state drift`](../reference/cli/state-drift.md); for the spec of " +"command specs, see [`tazuna state diff`](../reference/cli/state-diff.md) and" +" [`tazuna state drift`](../reference/cli/state-drift.md); for the spec of " "State's contents, see [Internal Structure of State](../reference/state.md)." #: src/operations/drift-monitoring.md:9 @@ -3536,16 +3635,15 @@ msgstr "[`tazuna state drift`](../reference/cli/state-drift.md)" #: src/operations/drift-monitoring.md:18 msgid "" -"**宣言 drift** は「`tazuna.yaml` を更新したのに反映していない」「Manifest を" -"外したのに クラスタには残っている」を捉えます。**ライブ drift** は" -"「`tazuna.yaml` は変えていないのに、 誰かが直接 `kubectl apply` した」「クラ" -"スタ側で手で消された」を捉えます。" +"**宣言 drift** は「`tazuna.yaml` を更新したのに反映していない」「Manifest を外したのに " +"クラスタには残っている」を捉えます。**ライブ drift** は「`tazuna.yaml` は変えていないのに、 誰かが直接 `kubectl " +"apply` した」「クラスタ側で手で消された」を捉えます。" msgstr "" "**Declared drift** captures \"you updated `tazuna.yaml` but haven't applied " "it\" and \"you removed a Manifest but it still remains on the cluster.\" " "**Live drift** captures \"you didn't change `tazuna.yaml`, but someone ran " -"`kubectl apply` directly\" and \"it was deleted by hand on the cluster side." -"\"" +"`kubectl apply` directly\" and \"it was deleted by hand on the cluster " +"side.\"" #: src/operations/drift-monitoring.md:22 msgid "何を drift と呼ぶか(宣言 drift)" @@ -3553,9 +3651,8 @@ msgstr "What we call drift (declared drift)" #: src/operations/drift-monitoring.md:24 msgid "" -"ここでの drift は、`tazuna.yaml` から生成されるべきリソース集合(**Build 結果" -"**)と、 クラスタ内 State に記録されているリソース集合の差です。 これは " -"`tazuna state diff` の出力そのものに当たります。" +"ここでの drift は、`tazuna.yaml` から生成されるべきリソース集合(**Build 結果**)と、 クラスタ内 State " +"に記録されているリソース集合の差です。 これは `tazuna state diff` の出力そのものに当たります。" msgstr "" "Drift here is the difference between the resource set that should be " "generated from `tazuna.yaml` (**the Build result**) and the resource set " @@ -3631,13 +3728,13 @@ msgstr "" #: src/operations/drift-monitoring.md:35 msgid "" -"`tazuna state diff` は **クラスタの実体までは見ていません**。 クラスタに対し" -"て手で `kubectl apply` した結果(State には無いリソース)は ここでは検出され" -"ません。Tazuna の管理対象外として無視されます。" +"`tazuna state diff` は **クラスタの実体までは見ていません**。 クラスタに対して手で `kubectl apply` " +"した結果(State には無いリソース)は ここでは検出されません。Tazuna の管理対象外として無視されます。" msgstr "" -"`tazuna state diff` **does not look at the cluster's actual state**. Results " -"of hand-running `kubectl apply` against the cluster (resources not in State) " -"are not detected here. They are ignored as outside Tazuna's management." +"`tazuna state diff` **does not look at the cluster's actual state**. Results" +" of hand-running `kubectl apply` against the cluster (resources not in " +"State) are not detected here. They are ignored as outside Tazuna's " +"management." #: src/operations/drift-monitoring.md:39 src/reference/cli/plan.md:37 #: src/reference/cli/status.md:48 src/reference/cli/state-drift.md:40 @@ -3653,30 +3750,22 @@ msgstr "" msgid "" "```text\n" "Manifest: ingress-nginx\n" -" STATUS " -"RESOURCE HASH\n" -" modified ingress-nginx/apps/v1/Deployment/ingress-nginx/" -"controller abc123... -> def456...\n" +" STATUS RESOURCE HASH\n" +" modified ingress-nginx/apps/v1/Deployment/ingress-nginx/controller abc123... -> def456...\n" "\n" "Manifest: aws-credentials\n" -" STATUS " -"RESOURCE HASH\n" -" always-sync aws-credentials//v1/Secret/default/aws-" -"credentials xyz789...\n" +" STATUS RESOURCE HASH\n" +" always-sync aws-credentials//v1/Secret/default/aws-credentials xyz789...\n" "```" msgstr "" "```text\n" "Manifest: ingress-nginx\n" -" STATUS " -"RESOURCE HASH\n" -" modified ingress-nginx/apps/v1/Deployment/ingress-nginx/" -"controller abc123... -> def456...\n" +" STATUS RESOURCE HASH\n" +" modified ingress-nginx/apps/v1/Deployment/ingress-nginx/controller abc123... -> def456...\n" "\n" "Manifest: aws-credentials\n" -" STATUS " -"RESOURCE HASH\n" -" always-sync aws-credentials//v1/Secret/default/aws-" -"credentials xyz789...\n" +" STATUS RESOURCE HASH\n" +" always-sync aws-credentials//v1/Secret/default/aws-credentials xyz789...\n" "```" #: src/operations/drift-monitoring.md:53 @@ -3686,10 +3775,9 @@ msgstr "" #: src/operations/drift-monitoring.md:59 msgid "" -"「drift なし」の判定は **この 1 行で判断するのが現状もっとも素朴** です (出" -"力に `No changes detected.` を含むかどうかでフィルタする)。 `tazuna state " -"diff` 自体は差分の有無で終了コードは変えません。 差分があってもエラーにはなら" -"ない、という点に注意してください。" +"「drift なし」の判定は **この 1 行で判断するのが現状もっとも素朴** です (出力に `No changes detected.` " +"を含むかどうかでフィルタする)。 `tazuna state diff` 自体は差分の有無で終了コードは変えません。 " +"差分があってもエラーにはならない、という点に注意してください。" msgstr "" "**The most straightforward way to judge \"no drift\" today is by this one " "line** (filter on whether the output contains `No changes detected.`). " @@ -3701,9 +3789,7 @@ msgid "監視のかたち" msgstr "Shapes of Monitoring" #: src/operations/drift-monitoring.md:66 -msgid "" -"実運用での「drift モニタリング」は次のいずれか(または組み合わせ)になりま" -"す。" +msgid "実運用での「drift モニタリング」は次のいずれか(または組み合わせ)になります。" msgstr "" "In practice, \"drift monitoring\" is one of (or a combination of) the " "following." @@ -3713,25 +3799,19 @@ msgid "a. CI ジョブを定期実行する" msgstr "a. Run a CI Job Periodically" #: src/operations/drift-monitoring.md:70 -msgid "" -"GitHub Actions の `schedule` で 1 日に数回 `tazuna state diff` を回し、出力を" -"保存します。" +msgid "GitHub Actions の `schedule` で 1 日に数回 `tazuna state diff` を回し、出力を保存します。" msgstr "" "Run `tazuna state diff` a few times a day with GitHub Actions' `schedule` " "and save the output." #: src/operations/drift-monitoring.md:72 -msgid "" -"**メリット**: 既存の CI 認証を再利用できる。差分が出たら Slack 等に投げやす" -"い。" +msgid "**メリット**: 既存の CI 認証を再利用できる。差分が出たら Slack 等に投げやすい。" msgstr "" "**Pro**: Reuses existing CI credentials. Easy to post to Slack or similar " "when differences appear." #: src/operations/drift-monitoring.md:73 -msgid "" -"**デメリット**: クラスタ接続情報を CI に持ち込む必要がある。短い周期には向か" -"ない。" +msgid "**デメリット**: クラスタ接続情報を CI に持ち込む必要がある。短い周期には向かない。" msgstr "" "**Con**: Cluster connection info must be brought into CI. Not suitable for " "short intervals." @@ -3741,18 +3821,15 @@ msgid "ポイント:" msgstr "Points to note:" #: src/operations/drift-monitoring.md:77 -msgid "" -"ジョブには **クラスタへの read 権限だけ** あれば足ります(`tazuna state " -"diff` は クラスタを変更しません)。" +msgid "ジョブには **クラスタへの read 権限だけ** あれば足ります(`tazuna state diff` は クラスタを変更しません)。" msgstr "" "The job only needs **read access** to the cluster (`tazuna state diff` does " "not modify the cluster)." #: src/operations/drift-monitoring.md:79 msgid "" -"出力を `tazuna state diff -f path/to/tazuna.yaml > diff.txt` のようにファイル" -"に落とし、 `No changes detected.` を含まない場合だけ通知を投げると、無風時の" -"ノイズが消えます。" +"出力を `tazuna state diff -f path/to/tazuna.yaml > diff.txt` のようにファイルに落とし、 `No " +"changes detected.` を含まない場合だけ通知を投げると、無風時のノイズが消えます。" msgstr "" "Dump the output to a file with `tazuna state diff -f path/to/tazuna.yaml > " "diff.txt` and only send a notification when it does not contain `No changes " @@ -3763,9 +3840,7 @@ msgid "b. クラスタ内 Job として走らせる" msgstr "b. Run as an In-cluster Job" #: src/operations/drift-monitoring.md:84 -msgid "" -"`tazuna` バイナリを含むコンテナイメージを用意し、CronJob として定期実行する方" -"法です。" +msgid "`tazuna` バイナリを含むコンテナイメージを用意し、CronJob として定期実行する方法です。" msgstr "" "Build a container image including the `tazuna` binary and run it " "periodically as a CronJob." @@ -3778,18 +3853,17 @@ msgstr "" #: src/operations/drift-monitoring.md:87 msgid "" -"**デメリット**: イメージのビルド・配布が必要。CI と同じ `tazuna.yaml` リポジ" -"トリへの アクセスを Job 側にも持たせる必要がある。" +"**デメリット**: イメージのビルド・配布が必要。CI と同じ `tazuna.yaml` リポジトリへの アクセスを Job " +"側にも持たせる必要がある。" msgstr "" -"**Con**: You need to build and distribute the image. The job side also needs " -"access to the same `tazuna.yaml` repository as CI." +"**Con**: You need to build and distribute the image. The job side also needs" +" access to the same `tazuna.yaml` repository as CI." #: src/operations/drift-monitoring.md:90 msgid "" -"`type: oras` を使って `tazuna.yaml` 一式を OCI artifact として配布しておく" -"と、Job 側で リポジトリの clone を持たずに済みます([`tazuna apply --" -"offline`](../reference/cli/index.md#環境変数) と組み合わせると registry も不" -"要になります)。" +"`type: oras` を使って `tazuna.yaml` 一式を OCI artifact として配布しておくと、Job 側で リポジトリの " +"clone を持たずに済みます([`tazuna apply --offline`](../reference/cli/index.md#環境変数) " +"と組み合わせると registry も不要になります)。" msgstr "" "If you distribute the full `tazuna.yaml` set as an OCI artifact via `type: " "oras`, the job side does not need to clone the repository. Combined with " @@ -3802,7 +3876,8 @@ msgstr "Wiring Up Notifications" #: src/operations/drift-monitoring.md:96 msgid "通知側で読みたい情報は次の 3 つです。" -msgstr "The notification side wants the following three pieces of information." +msgstr "" +"The notification side wants the following three pieces of information." #: src/operations/drift-monitoring.md:98 msgid "どの **Manifest** に差分があるか" @@ -3818,15 +3893,15 @@ msgstr "Which **resource** it is (in State key form)" #: src/operations/drift-monitoring.md:102 msgid "" -"State key の形式は `manifest/group/version/kind/namespace/name`(cluster-" -"scoped は `namespace` 抜き)で固定なので、grep ベースの後段処理に十分なりま" -"す。 詳細は [State の内部構造 - State key](../reference/state.md#state-key) " -"を参照してください。" +"State key の形式は `manifest/group/version/kind/namespace/name`(cluster-scoped は" +" `namespace` 抜き)で固定なので、grep ベースの後段処理に十分なります。 詳細は [State の内部構造 - State " +"key](../reference/state.md#state-key) を参照してください。" msgstr "" -"The State key format is fixed as `manifest/group/version/kind/namespace/" -"name` (cluster-scoped resources omit `namespace`), so grep-based post-" -"processing is sufficient. See [Internal Structure of State - State key](../" -"reference/state.md#state-key) for details." +"The State key format is fixed as " +"`manifest/group/version/kind/namespace/name` (cluster-scoped resources omit " +"`namespace`), so grep-based post-processing is sufficient. See [Internal " +"Structure of State - State key](../reference/state.md#state-key) for " +"details." #: src/operations/drift-monitoring.md:106 msgid "通知の最小プロトタイプ:" @@ -3847,9 +3922,9 @@ msgstr "\"$(jq -Rs '{text: .}' < diff.txt)\"" #: src/operations/drift-monitoring.md:114 msgid "" -"`jq -Rs '{text: .}'` は、`diff.txt` の中身を **生文字列のまま** Slack の " -"Incoming Webhook が 期待する `{\"text\": \"...\"}` 形式 JSON に包み直すための" -"定型です(`-R` で raw 入力、`-s` で 全行を 1 つの文字列にスラープ)。" +"`jq -Rs '{text: .}'` は、`diff.txt` の中身を **生文字列のまま** Slack の Incoming Webhook " +"が 期待する `{\"text\": \"...\"}` 形式 JSON に包み直すための定型です(`-R` で raw 入力、`-s` で 全行を 1" +" つの文字列にスラープ)。" msgstr "" "`jq -Rs '{text: .}'` is the standard idiom for wrapping the contents of " "`diff.txt` **as a raw string** into the `{\"text\": \"...\"}` JSON format " @@ -3866,8 +3941,7 @@ msgstr "When drift appears, your options are one of the following." #: src/operations/drift-monitoring.md:122 msgid "" -"**意図した変更だった**: `tazuna apply`(`--sync` を付けると差分のみ反映)で " -"State を クラスタに追従させる。" +"**意図した変更だった**: `tazuna apply`(`--sync` を付けると差分のみ反映)で State を クラスタに追従させる。" msgstr "" "**The change was intentional**: catch State up to the cluster with `tazuna " "apply` (add `--sync` to apply only the diff)." @@ -3878,34 +3952,33 @@ msgstr "**The change was unintentional**:" #: src/operations/drift-monitoring.md:125 msgid "" -"**`modified`**: 誰がいつ変えたかを git log / クラスタの監査ログ等で追い、 変" -"更を巻き戻すか `tazuna.yaml` 側に取り込むかを判断する。" +"**`modified`**: 誰がいつ変えたかを git log / クラスタの監査ログ等で追い、 変更を巻き戻すか `tazuna.yaml` " +"側に取り込むかを判断する。" msgstr "" "**`modified`**: track who changed it when via git log / cluster audit log, " "then decide whether to roll back or absorb the change into `tazuna.yaml`." #: src/operations/drift-monitoring.md:127 msgid "" -"**`added`**: `tazuna.yaml` 側に Manifest を増やしたが反映していない、という" -"ケースが多い。 意図に合わせて apply するか、`tazuna.yaml` 側を元に戻す。" +"**`added`**: `tazuna.yaml` 側に Manifest を増やしたが反映していない、というケースが多い。 意図に合わせて " +"apply するか、`tazuna.yaml` 側を元に戻す。" msgstr "" "**`added`**: most often this is a Manifest added to `tazuna.yaml` but not " "yet applied. Either apply, or revert `tazuna.yaml`, depending on intent." #: src/operations/drift-monitoring.md:129 msgid "" -"**`removed`**: Tazuna から Manifest を外したが、リソースはクラスタに残ってい" -"る。 [`tazuna destroy`](../reference/cli/destroy.md) の `--tags` 絞り込み" -"や、 `tazuna apply --sync --prune` で片付ける。" +"**`removed`**: Tazuna から Manifest を外したが、リソースはクラスタに残っている。 [`tazuna " +"destroy`](../reference/cli/destroy.md) の `--tags` 絞り込みや、 `tazuna apply " +"--sync --prune` で片付ける。" msgstr "" "**`removed`**: a Manifest was removed from Tazuna but the resource still " -"exists in the cluster. Clean it up with [`tazuna destroy`](../reference/cli/" -"destroy.md) narrowed by `--tags`, or with `tazuna apply --sync --prune`." +"exists in the cluster. Clean it up with [`tazuna " +"destroy`](../reference/cli/destroy.md) narrowed by `--tags`, or with `tazuna" +" apply --sync --prune`." #: src/operations/drift-monitoring.md:132 -msgid "" -"**GenesisSecret の `always-sync`**: drift ではないので通知から除外して構いま" -"せん。" +msgid "**GenesisSecret の `always-sync`**: drift ではないので通知から除外して構いません。" msgstr "" "**GenesisSecret's `always-sync`**: this is not drift, so it is fine to " "exclude it from notifications." @@ -3916,10 +3989,10 @@ msgstr "Detecting live drift" #: src/operations/drift-monitoring.md:136 msgid "" -"`tazuna state diff` が「Build 結果 vs State」だけを見るのに対し、 [`tazuna " -"state drift`](../reference/cli/state-drift.md) は「State vs ライブクラスタ」" -"を 比較します。`tazuna.yaml` を変えていなくても、`kubectl apply` で手で書き換" -"えられた リソースや、`kubectl delete` で消えたリソースが検知できます。" +"`tazuna state diff` が「Build 結果 vs State」だけを見るのに対し、 [`tazuna state " +"drift`](../reference/cli/state-drift.md) は「State vs ライブクラスタ」を " +"比較します。`tazuna.yaml` を変えていなくても、`kubectl apply` で手で書き換えられた リソースや、`kubectl " +"delete` で消えたリソースが検知できます。" msgstr "" "Whereas `tazuna state diff` looks only at \"Build result vs State,\" " "[`tazuna state drift`](../reference/cli/state-drift.md) compares \"State vs " @@ -3940,18 +4013,15 @@ msgid "\"$(jq -Rs '{text: .}' < drift.txt)\"" msgstr "\"$(jq -Rs '{text: .}' < drift.txt)\"" #: src/operations/drift-monitoring.md:148 -msgid "" -"出力分類は `live-drifted`(ハッシュ不一致)と `live-missing`(クラスタから消" -"えている)の 2 種類です。" +msgid "出力分類は `live-drifted`(ハッシュ不一致)と `live-missing`(クラスタから消えている)の 2 種類です。" msgstr "" "There are two output categories: `live-drifted` (hash mismatch) and `live-" "missing` (gone from the cluster)." #: src/operations/drift-monitoring.md:151 msgid "" -"ライブ drift と宣言 drift を **両方** モニタリングするのが推奨構成です。前者" -"は クラスタ運用者のオペレーションミスを、後者は GitOps パイプラインの reach " -"の問題を、 それぞれ別にあぶり出せます。" +"ライブ drift と宣言 drift を **両方** モニタリングするのが推奨構成です。前者は クラスタ運用者のオペレーションミスを、後者は " +"GitOps パイプラインの reach の問題を、 それぞれ別にあぶり出せます。" msgstr "" "Monitoring **both** live drift and declared drift is the recommended setup. " "The former surfaces operational mistakes by cluster operators, while the " @@ -3959,34 +4029,33 @@ msgstr "" #: src/operations/drift-monitoring.md:157 msgid "" -"コマンド仕様: [`tazuna state diff`](../reference/cli/state-diff.md) / " -"[`tazuna state drift`](../reference/cli/state-drift.md) / [`tazuna apply`]" -"(../reference/cli/apply.md)" +"コマンド仕様: [`tazuna state diff`](../reference/cli/state-diff.md) / [`tazuna " +"state drift`](../reference/cli/state-drift.md) / [`tazuna " +"apply`](../reference/cli/apply.md)" msgstr "" "Command spec: [`tazuna state diff`](../reference/cli/state-diff.md) / " -"[`tazuna state drift`](../reference/cli/state-drift.md) / [`tazuna apply`]" -"(../reference/cli/apply.md)" +"[`tazuna state drift`](../reference/cli/state-drift.md) / [`tazuna " +"apply`](../reference/cli/apply.md)" #: src/operations/drift-monitoring.md:160 msgid "State の内部構造: [State の内部構造](../reference/state.md)" msgstr "" -"Internal structure of State: [Internal Structure of State](../reference/" -"state.md)" +"Internal structure of State: [Internal Structure of " +"State](../reference/state.md)" #: src/operations/drift-monitoring.md:161 msgid "" -"用語: [Diff type](../concepts/glossary.md#diff-type) / [always-sync](../" -"concepts/glossary.md#always-sync)" +"用語: [Diff type](../concepts/glossary.md#diff-type) / [always-" +"sync](../concepts/glossary.md#always-sync)" msgstr "" -"Terminology: [Diff type](../concepts/glossary.md#diff-type) / [always-sync]" -"(../concepts/glossary.md#always-sync)" +"Terminology: [Diff type](../concepts/glossary.md#diff-type) / [always-" +"sync](../concepts/glossary.md#always-sync)" #: src/operations/ci-pipeline.md:3 msgid "" -"このページは、`tazuna.yaml` を持つリポジトリで **CI / CD パイプラインに " -"Tazuna を組み込む** ときの典型構成をまとめます。Tazuna は手元で `apply` する" -"ためにも、CI から `apply` するためにも使えます。ここでは後者の組み立て方を中" -"心に扱います。" +"このページは、`tazuna.yaml` を持つリポジトリで **CI / CD パイプラインに Tazuna を組み込む** " +"ときの典型構成をまとめます。Tazuna は手元で `apply` するためにも、CI から `apply` " +"するためにも使えます。ここでは後者の組み立て方を中心に扱います。" msgstr "" "This page covers the typical layout for **incorporating Tazuna into a CI / " "CD pipeline** in a repository that holds `tazuna.yaml`. Tazuna can be used " @@ -4059,9 +4128,8 @@ msgstr "Delete Tazuna-managed resources" #: src/operations/ci-pipeline.md:17 msgid "" -"「検証」は全 PR で走らせて構いません。「反映」は通常 `main` への push をトリ" -"ガにします。 「取り外し」は **CI に常設しない** ことを推奨します([`tazuna " -"destroy` の運用](./destroy-runbook.md) 参照)。" +"「検証」は全 PR で走らせて構いません。「反映」は通常 `main` への push をトリガにします。 「取り外し」は **CI に常設しない** " +"ことを推奨します([`tazuna destroy` の運用](./destroy-runbook.md) 参照)。" msgstr "" "\"Verify\" is fine to run on every PR. \"Apply\" is usually triggered by " "pushes to `main`. We recommend **not making \"Remove\" a permanent fixture " @@ -4073,8 +4141,8 @@ msgstr "Verification Stage" #: src/operations/ci-pipeline.md:22 msgid "" -"`tazuna.yaml` を CI に乗せる場合、最低限の通過条件として `tazuna check` を入" -"れます。 クラスタに触れずに走るので、PR でのコストはほぼゼロです。" +"`tazuna.yaml` を CI に乗せる場合、最低限の通過条件として `tazuna check` を入れます。 クラスタに触れずに走るので、PR" +" でのコストはほぼゼロです。" msgstr "" "If you put `tazuna.yaml` on CI, the minimum bar to clear is to run `tazuna " "check`. It runs without touching the cluster, so the PR cost is nearly zero." @@ -4107,10 +4175,9 @@ msgstr "tazuna build -f tazuna.yaml > rendered.yaml" #: src/operations/ci-pipeline.md:34 msgid "" -"PR で `build` 結果をアーティファクトに残しておくと、レビュー時に「最終的に何" -"が apply されるか」を レンダリング結果ベースで確認できます。`type: oras` を" -"使っているなら `--offline` を 付けて先取り cache を使う構成も検討できます" -"([`tazuna build`](../reference/cli/build.md))。" +"PR で `build` 結果をアーティファクトに残しておくと、レビュー時に「最終的に何が apply されるか」を " +"レンダリング結果ベースで確認できます。`type: oras` を使っているなら `--offline` を 付けて先取り cache " +"を使う構成も検討できます([`tazuna build`](../reference/cli/build.md))。" msgstr "" "Keeping `build` output as an artifact on PRs lets reviewers verify \"what " "will ultimately be applied\" from the rendered result. If you use `type: " @@ -4119,12 +4186,11 @@ msgstr "" #: src/operations/ci-pipeline.md:38 msgid "" -"クラスタへの read 権限を CI に渡せる場合は、`tazuna plan` を PR で回しておく" -"と 「実際に何のフィールドが変わるか」を unified diff で PR コメントに貼れま" -"す。" +"クラスタへの read 権限を CI に渡せる場合は、`tazuna plan` を PR で回しておくと 「実際に何のフィールドが変わるか」を " +"unified diff で PR コメントに貼れます。" msgstr "" -"If you can grant CI read access to the cluster, running `tazuna plan` on PRs " -"lets you paste \"which fields actually change\" into a PR comment as a " +"If you can grant CI read access to the cluster, running `tazuna plan` on PRs" +" lets you paste \"which fields actually change\" into a PR comment as a " "unified diff." #: src/operations/ci-pipeline.md:42 @@ -4148,8 +4214,7 @@ msgid "post plan to PR" msgstr "post plan to PR" #: src/operations/ci-pipeline.md:51 -msgid "" -"`tazuna plan` は読み取り専用なので、PR の権限境界に乗せやすいのが利点です。" +msgid "`tazuna plan` は読み取り専用なので、PR の権限境界に乗せやすいのが利点です。" msgstr "" "Because `tazuna plan` is read-only, its advantage is that it fits easily " "within a PR's permission boundary." @@ -4236,8 +4301,8 @@ msgstr "" #: src/operations/ci-pipeline.md:85 msgid "" -"`tazuna apply` の current-context は kubeconfig の current-context そのもので" -"す。 CI で current-context を切り替えるステップを必ず明示します。" +"`tazuna apply` の current-context は kubeconfig の current-context そのものです。 CI で" +" current-context を切り替えるステップを必ず明示します。" msgstr "" "The current-context for `tazuna apply` is exactly the kubeconfig current-" "context. In CI, always explicitly include a step that sets the current-" @@ -4246,9 +4311,8 @@ msgstr "" #: src/operations/ci-pipeline.md:87 msgid "" "`tazuna.yaml` に [`spec.context_matches`](../reference/tazuna-" -"yaml.md#context_matches) を 入れておけば、誤って違うクラスタを向いた " -"kubeconfig で apply しようとしても 即終了します。CI でも有効な保険になりま" -"す。" +"yaml.md#context_matches) を 入れておけば、誤って違うクラスタを向いた kubeconfig で apply しようとしても " +"即終了します。CI でも有効な保険になります。" msgstr "" "Including [`spec.context_matches`](../reference/tazuna-" "yaml.md#context_matches) in `tazuna.yaml` makes the system fail fast if it " @@ -4257,8 +4321,8 @@ msgstr "" #: src/operations/ci-pipeline.md:90 msgid "" -"Tazuna は失敗時に非ゼロ終了するので、CI 側で特別なエラーハンドリングは不要で" -"す ([CLI - 終了コード](../reference/cli/index.md#終了コード))。" +"Tazuna は失敗時に非ゼロ終了するので、CI 側で特別なエラーハンドリングは不要です ([CLI - " +"終了コード](../reference/cli/index.md#終了コード))。" msgstr "" "Tazuna exits non-zero on failure, so no special error handling is needed on " "the CI side (see [CLI - Exit Codes](../reference/cli/index.md#終了コード))." @@ -4269,11 +4333,12 @@ msgstr "`apply` operating modes" #: src/operations/ci-pipeline.md:95 msgid "" -"`tazuna apply` には 3 つの動作モードがあります(詳細は [`tazuna apply`](../" -"reference/cli/apply.md#state-連携---sync----prune----atomic) を参照)。" +"`tazuna apply` には 3 つの動作モードがあります(詳細は [`tazuna " +"apply`](../reference/cli/apply.md#state-連携---sync----prune----atomic) を参照)。" msgstr "" -"`tazuna apply` has three operating modes (see [`tazuna apply`](../reference/" -"cli/apply.md#state-連携---sync----prune----atomic) for details)." +"`tazuna apply` has three operating modes (see [`tazuna " +"apply`](../reference/cli/apply.md#state-連携---sync----prune----atomic) for " +"details)." #: src/operations/ci-pipeline.md:98 msgid "モード" @@ -4301,9 +4366,7 @@ msgid "`tazuna apply --sync`" msgstr "`tazuna apply --sync`" #: src/operations/ci-pipeline.md:101 -msgid "" -"Build 結果と State を比較し、差分(`added` / `modified` / `always-sync`)だけ" -"反映" +msgid "Build 結果と State を比較し、差分(`added` / `modified` / `always-sync`)だけ反映" msgstr "" "Compares the Build result with State, and only reflects the differences " "(`added` / `modified` / `always-sync`)" @@ -4319,24 +4382,21 @@ msgstr "`tazuna apply --sync --prune`" #: src/operations/ci-pipeline.md:102 msgid "上記に加え、State にあって Build 結果に無いリソースを削除" msgstr "" -"In addition to the above, deletes resources present in State but absent from " -"the Build result" +"In addition to the above, deletes resources present in State but absent from" +" the Build result" #: src/operations/ci-pipeline.md:104 msgid "おおまかな指針:" msgstr "Rough guidance:" #: src/operations/ci-pipeline.md:106 -msgid "" -"ブートストラップ初期 / Manifest 数が少ない: `tazuna apply` が単純で予測しやす" -"い。" +msgid "ブートストラップ初期 / Manifest 数が少ない: `tazuna apply` が単純で予測しやすい。" msgstr "" "Bootstrap phase / small number of Manifests: `tazuna apply` is simple and " "predictable." #: src/operations/ci-pipeline.md:107 -msgid "" -"Manifest 数が増えて 1 回の `apply` が重くなった: `--sync` で差分のみに絞る。" +msgid "Manifest 数が増えて 1 回の `apply` が重くなった: `--sync` で差分のみに絞る。" msgstr "" "Manifest count grows and a single `apply` becomes heavy: narrow to the diff " "only with `--sync`." @@ -4353,17 +4413,17 @@ msgstr "Whether to Use `--atomic`" #: src/operations/ci-pipeline.md:112 msgid "" -"`tazuna apply --sync --atomic` を付けると、いずれかのリソースでエラーが出たと" -"きに State を更新せず終了します。**反映自体は途中まで進む** ため、CI で「全部" -"入ったか 何も入らなかったか」の二値にはなりませんが、State 上の整合性は守れま" -"す。 詳細は [`tazuna apply`](../reference/cli/apply.md#state-連携---sync----" -"prune----atomic) を参照。" +"`tazuna apply --sync --atomic` を付けると、いずれかのリソースでエラーが出たときに State " +"を更新せず終了します。**反映自体は途中まで進む** ため、CI で「全部入ったか 何も入らなかったか」の二値にはなりませんが、State " +"上の整合性は守れます。 詳細は [`tazuna apply`](../reference/cli/apply.md#state-連携---sync" +"----prune----atomic) を参照。" msgstr "" "With `tazuna apply --sync --atomic`, it exits without updating State if any " "resource errors out. **The apply itself still progresses partway**, so CI " "cannot treat the run as the binary \"either everything went in or nothing " -"did,\" but State-level consistency is preserved. See [`tazuna apply`](../" -"reference/cli/apply.md#state-連携---sync----prune----atomic) for details." +"did,\" but State-level consistency is preserved. See [`tazuna " +"apply`](../reference/cli/apply.md#state-連携---sync----prune----atomic) for " +"details." #: src/operations/ci-pipeline.md:117 msgid "取り外しステージ" @@ -4375,9 +4435,8 @@ msgstr "We do not recommend running `tazuna destroy` from CI." #: src/operations/ci-pipeline.md:121 msgid "" -"環境変数 `TAZUNA_DESTROY_EXECUTABLE=true` を CI に常設すると、誤発火時のガー" -"ドが プロンプトしか残らなくなる(しかも CI ではプロンプトに答えられないので、" -"`--force` と組み合わさると無条件で消えます)。" +"環境変数 `TAZUNA_DESTROY_EXECUTABLE=true` を CI に常設すると、誤発火時のガードが " +"プロンプトしか残らなくなる(しかも CI ではプロンプトに答えられないので、`--force` と組み合わさると無条件で消えます)。" msgstr "" "Setting the environment variable `TAZUNA_DESTROY_EXECUTABLE=true` " "permanently in CI leaves only the prompt as a guard against accidental " @@ -4386,15 +4445,13 @@ msgstr "" #: src/operations/ci-pipeline.md:124 msgid "" -"どうしても CI から消す必要がある場合は、**手動トリガの専用 workflow** を作" -"り、 その job に限って環境変数を渡す構成にします。" +"どうしても CI から消す必要がある場合は、**手動トリガの専用 workflow** を作り、 その job に限って環境変数を渡す構成にします。" msgstr "" "If you absolutely need to delete from CI, create a **dedicated manually-" "triggered workflow** and pass the env var only for that job." #: src/operations/ci-pipeline.md:127 -msgid "" -"詳細は [`tazuna destroy` の運用](./destroy-runbook.md) を参照してください。" +msgid "詳細は [`tazuna destroy` の運用](./destroy-runbook.md) を参照してください。" msgstr "See [Operating `tazuna destroy`](./destroy-runbook.md) for details." #: src/operations/ci-pipeline.md:129 @@ -4403,14 +4460,13 @@ msgstr "Phased Apply With Tags" #: src/operations/ci-pipeline.md:131 msgid "" -"`tazuna apply --tags` で、CI で反映する Manifest を絞り込めます。 たとえば" -"「インフラレイヤと application レイヤを分けて回す」「実験 add-on を独立した " -"job で回す」といった段階的反映に向きます。" +"`tazuna apply --tags` で、CI で反映する Manifest を絞り込めます。 たとえば「インフラレイヤと application" +" レイヤを分けて回す」「実験 add-on を独立した job で回す」といった段階的反映に向きます。" msgstr "" "`tazuna apply --tags` lets you narrow down which Manifests CI applies. For " "example, this fits patterns like \"run the infrastructure layer and the " -"application layer in separate CI passes\" or \"run experimental add-ons in a " -"separate job.\"" +"application layer in separate CI passes\" or \"run experimental add-ons in a" +" separate job.\"" #: src/operations/ci-pipeline.md:136 msgid "# 先に基盤を入れる\n" @@ -4425,8 +4481,8 @@ msgid "" "タグの設計は `tazuna.yaml` 側の [`manifests[].tags`](../reference/tazuna-" "yaml.md#tags) で 行います。" msgstr "" -"Tag design happens on the `tazuna.yaml` side via [`manifests[].tags`](../" -"reference/tazuna-yaml.md#tags)." +"Tag design happens on the `tazuna.yaml` side via " +"[`manifests[].tags`](../reference/tazuna-yaml.md#tags)." #: src/operations/ci-pipeline.md:143 msgid "監視・通知との接続" @@ -4434,10 +4490,9 @@ msgstr "Wiring Up Monitoring and Notifications" #: src/operations/ci-pipeline.md:145 msgid "" -"CI とは別系で、`tazuna state diff` の定期実行を回しておくのが推奨構成です。 " -"詳細は [Drift モニタリング](./drift-monitoring.md) を参照してください。 CI " -"で `apply` の成否を見るだけだと、「`tazuna.yaml` の更新が無いのに drift が起" -"きている」 ケースを取り逃がします。" +"CI とは別系で、`tazuna state diff` の定期実行を回しておくのが推奨構成です。 詳細は [Drift " +"モニタリング](./drift-monitoring.md) を参照してください。 CI で `apply` " +"の成否を見るだけだと、「`tazuna.yaml` の更新が無いのに drift が起きている」 ケースを取り逃がします。" msgstr "" "The recommended setup is to run periodic `tazuna state diff` on a separate " "path from CI. See [Drift Monitoring](./drift-monitoring.md) for details. If " @@ -4446,13 +4501,15 @@ msgstr "" #: src/operations/ci-pipeline.md:152 msgid "" -"仕様: [`tazuna apply`](../reference/cli/apply.md) / [`tazuna build`](../" -"reference/cli/build.md) / [`tazuna check`](../reference/cli/check.md) / " -"[`tazuna plan`](../reference/cli/plan.md)" +"仕様: [`tazuna apply`](../reference/cli/apply.md) / [`tazuna " +"build`](../reference/cli/build.md) / [`tazuna " +"check`](../reference/cli/check.md) / [`tazuna " +"plan`](../reference/cli/plan.md)" msgstr "" -"Spec: [`tazuna apply`](../reference/cli/apply.md) / [`tazuna build`](../" -"reference/cli/build.md) / [`tazuna check`](../reference/cli/check.md) / " -"[`tazuna plan`](../reference/cli/plan.md)" +"Spec: [`tazuna apply`](../reference/cli/apply.md) / [`tazuna " +"build`](../reference/cli/build.md) / [`tazuna " +"check`](../reference/cli/check.md) / [`tazuna " +"plan`](../reference/cli/plan.md)" #: src/operations/ci-pipeline.md:156 msgid "事故防止: [`tazuna destroy` の運用](./destroy-runbook.md)" @@ -4469,18 +4526,15 @@ msgstr "tracing: [Observability](./observability.md)" #: src/operations/observability.md:3 msgid "" -"Tazuna は **OpenTelemetry** ベースのトレーシングを組み込みでサポートします。 " -"すべての CLI コマンドが OTLP/gRPC 経由で trace を export でき、CI / クラスタ" -"運用上の 時間計測やエラー追跡に使えます。" +"Tazuna は **OpenTelemetry** ベースのトレーシングを組み込みでサポートします。 すべての CLI コマンドが OTLP/gRPC" +" 経由で trace を export でき、CI / クラスタ運用上の 時間計測やエラー追跡に使えます。" msgstr "" "Tazuna has built-in support for **OpenTelemetry**-based tracing. Every CLI " "command can export traces via OTLP/gRPC, which you can use for timing " "measurements and error tracking in CI and cluster operations." #: src/operations/observability.md:7 -msgid "" -"トレーシングは **opt-in** です。何もフラグを渡さなければ no-op tracer が使わ" -"れ、 外部依存はゼロのままです。" +msgid "トレーシングは **opt-in** です。何もフラグを渡さなければ no-op tracer が使われ、 外部依存はゼロのままです。" msgstr "" "Tracing is **opt-in**. If you pass no flags, a no-op tracer is used and " "there are zero external dependencies." @@ -4504,14 +4558,16 @@ msgstr "The following global flags have been added to the root command." #: src/reference/cli/state-list.md:21 src/reference/cli/state-diff.md:41 #: src/reference/cli/state-drift.md:69 #: src/reference/cli/secret-to-genesissecret.md:30 -#: src/reference/cli/secret-to-genesissecret.md:34 src/reference/cli/tags.md:27 -#: src/reference/cli/tags.md:31 src/reference/cli/version.md:28 +#: src/reference/cli/secret-to-genesissecret.md:34 +#: src/reference/cli/tags.md:27 src/reference/cli/tags.md:31 +#: src/reference/cli/version.md:28 msgid "フラグ" msgstr "Flag" #: src/operations/observability.md:14 src/reference/tazuna-yaml.md:13 -#: src/reference/tazuna-yaml.md:33 src/reference/tazuna-yaml.md:91 -#: src/reference/tazuna-yaml.md:202 src/reference/tazuna-yaml.md:216 +#: src/reference/tazuna-yaml.md:33 src/reference/tazuna-yaml.md:96 +#: src/reference/tazuna-yaml.md:167 src/reference/tazuna-yaml.md:193 +#: src/reference/tazuna-yaml.md:304 src/reference/tazuna-yaml.md:318 #: src/reference/tazuna-hint-yaml.md:21 src/reference/tazuna-hint-yaml.md:50 #: src/reference/tazuna-hint-yaml.md:97 src/reference/genesis-secret.md:25 #: src/reference/genesis-secret.md:37 src/reference/genesis-secret.md:47 @@ -4521,36 +4577,39 @@ msgstr "Flag" #: src/reference/test-plugin.md:66 src/reference/test-plugin.md:112 #: src/reference/state.md:62 src/reference/state.md:75 #: src/reference/manifest-types/kustomize.md:17 -#: src/reference/manifest-types/helmfile.md:21 -#: src/reference/manifest-types/helmfile.md:46 -#: src/reference/manifest-types/helmfile.md:60 +#: src/reference/manifest-types/helmfile.md:62 +#: src/reference/manifest-types/helmfile.md:87 +#: src/reference/manifest-types/helmfile.md:101 #: src/reference/manifest-types/oras.md:21 #: src/reference/manifest-types/oras.md:32 #: src/reference/manifest-types/oras.md:41 src/reference/cli/index.md:30 #: src/reference/cli/init.md:60 src/reference/cli/apply.md:49 #: src/reference/cli/build.md:25 src/reference/cli/check.md:25 #: src/reference/cli/destroy.md:34 src/reference/cli/plan.md:76 -#: src/reference/cli/secret-to-genesissecret.md:34 src/reference/cli/tags.md:31 +#: src/reference/cli/secret-to-genesissecret.md:34 +#: src/reference/cli/tags.md:31 msgid "型" msgstr "Type" #: src/operations/observability.md:14 src/reference/tazuna-yaml.md:13 -#: src/reference/tazuna-yaml.md:33 src/reference/tazuna-yaml.md:91 -#: src/reference/tazuna-yaml.md:202 src/reference/tazuna-yaml.md:216 -#: src/reference/tazuna-hint-yaml.md:21 src/reference/tazuna-hint-yaml.md:50 -#: src/reference/tazuna-hint-yaml.md:97 src/reference/genesis-secret.md:25 -#: src/reference/genesis-secret.md:37 src/reference/genesis-secret.md:47 -#: src/reference/genesis-secret.md:77 src/reference/genesis-secret.md:99 -#: src/reference/genesis-secret.md:131 src/reference/secret-providers.md:64 -#: src/reference/secret-providers.md:107 src/reference/test-plugin.md:25 +#: src/reference/tazuna-yaml.md:33 src/reference/tazuna-yaml.md:96 +#: src/reference/tazuna-yaml.md:193 src/reference/tazuna-yaml.md:304 +#: src/reference/tazuna-yaml.md:318 src/reference/tazuna-hint-yaml.md:21 +#: src/reference/tazuna-hint-yaml.md:50 src/reference/tazuna-hint-yaml.md:97 +#: src/reference/genesis-secret.md:25 src/reference/genesis-secret.md:37 +#: src/reference/genesis-secret.md:47 src/reference/genesis-secret.md:77 +#: src/reference/genesis-secret.md:99 src/reference/genesis-secret.md:131 +#: src/reference/secret-providers.md:64 src/reference/secret-providers.md:107 +#: src/reference/test-plugin.md:25 #: src/reference/manifest-types/kustomize.md:17 -#: src/reference/manifest-types/helmfile.md:21 +#: src/reference/manifest-types/helmfile.md:62 #: src/reference/manifest-types/oras.md:21 #: src/reference/manifest-types/oras.md:41 src/reference/cli/index.md:30 #: src/reference/cli/init.md:60 src/reference/cli/apply.md:49 #: src/reference/cli/build.md:25 src/reference/cli/check.md:25 #: src/reference/cli/destroy.md:34 src/reference/cli/plan.md:76 -#: src/reference/cli/secret-to-genesissecret.md:34 src/reference/cli/tags.md:31 +#: src/reference/cli/secret-to-genesissecret.md:34 +#: src/reference/cli/tags.md:31 msgid "デフォルト" msgstr "Default" @@ -4560,10 +4619,11 @@ msgstr "`--otlp-endpoint`" #: src/operations/observability.md:16 src/reference/tazuna-yaml.md:15 #: src/reference/tazuna-yaml.md:16 src/reference/tazuna-yaml.md:35 -#: src/reference/tazuna-yaml.md:38 src/reference/tazuna-yaml.md:93 -#: src/reference/tazuna-yaml.md:94 src/reference/tazuna-yaml.md:95 -#: src/reference/tazuna-yaml.md:96 src/reference/tazuna-yaml.md:204 -#: src/reference/tazuna-yaml.md:205 src/reference/tazuna-yaml.md:218 +#: src/reference/tazuna-yaml.md:38 src/reference/tazuna-yaml.md:99 +#: src/reference/tazuna-yaml.md:169 src/reference/tazuna-yaml.md:195 +#: src/reference/tazuna-yaml.md:196 src/reference/tazuna-yaml.md:197 +#: src/reference/tazuna-yaml.md:198 src/reference/tazuna-yaml.md:306 +#: src/reference/tazuna-yaml.md:307 src/reference/tazuna-yaml.md:320 #: src/reference/tazuna-hint-yaml.md:23 src/reference/tazuna-hint-yaml.md:24 #: src/reference/tazuna-hint-yaml.md:39 src/reference/tazuna-hint-yaml.md:42 #: src/reference/tazuna-hint-yaml.md:52 src/reference/tazuna-hint-yaml.md:55 @@ -4582,15 +4642,15 @@ msgstr "`--otlp-endpoint`" #: src/reference/test-plugin.md:117 src/reference/state.md:64 #: src/reference/state.md:77 src/reference/state.md:78 #: src/reference/manifest-types/kustomize.md:19 -#: src/reference/manifest-types/helmfile.md:25 -#: src/reference/manifest-types/helmfile.md:29 -#: src/reference/manifest-types/helmfile.md:48 -#: src/reference/manifest-types/helmfile.md:49 -#: src/reference/manifest-types/helmfile.md:50 -#: src/reference/manifest-types/helmfile.md:62 -#: src/reference/manifest-types/helmfile.md:63 -#: src/reference/manifest-types/helmfile.md:64 -#: src/reference/manifest-types/helmfile.md:65 +#: src/reference/manifest-types/helmfile.md:66 +#: src/reference/manifest-types/helmfile.md:70 +#: src/reference/manifest-types/helmfile.md:89 +#: src/reference/manifest-types/helmfile.md:90 +#: src/reference/manifest-types/helmfile.md:91 +#: src/reference/manifest-types/helmfile.md:103 +#: src/reference/manifest-types/helmfile.md:104 +#: src/reference/manifest-types/helmfile.md:105 +#: src/reference/manifest-types/helmfile.md:106 #: src/reference/manifest-types/oras.md:23 #: src/reference/manifest-types/oras.md:24 #: src/reference/manifest-types/oras.md:34 @@ -4608,12 +4668,12 @@ msgid "string" msgstr "string" #: src/operations/observability.md:16 src/reference/tazuna-yaml.md:35 -#: src/reference/tazuna-yaml.md:94 src/reference/tazuna-hint-yaml.md:55 +#: src/reference/tazuna-yaml.md:196 src/reference/tazuna-hint-yaml.md:55 #: src/reference/tazuna-hint-yaml.md:56 src/reference/tazuna-hint-yaml.md:101 #: src/reference/genesis-secret.md:39 src/reference/genesis-secret.md:138 #: src/reference/manifest-types/kustomize.md:19 -#: src/reference/manifest-types/helmfile.md:25 -#: src/reference/manifest-types/helmfile.md:29 +#: src/reference/manifest-types/helmfile.md:66 +#: src/reference/manifest-types/helmfile.md:70 #: src/reference/manifest-types/oras.md:24 src/reference/cli/index.md:34 #: src/reference/cli/secret-to-genesissecret.md:38 #: src/reference/cli/secret-to-genesissecret.md:39 @@ -4623,9 +4683,7 @@ msgid "`\"\"`" msgstr "`\"\"`" #: src/operations/observability.md:16 -msgid "" -"OTLP/gRPC collector のエンドポイント(例: `localhost:4317`)。空文字なら no-" -"op。" +msgid "OTLP/gRPC collector のエンドポイント(例: `localhost:4317`)。空文字なら no-op。" msgstr "" "The endpoint of the OTLP/gRPC collector (e.g. `localhost:4317`). No-op when " "empty." @@ -4636,8 +4694,8 @@ msgstr "`--otlp-insecure`" #: src/operations/observability.md:17 src/reference/tazuna-hint-yaml.md:53 #: src/reference/genesis-secret.md:51 src/reference/test-plugin.md:118 -#: src/reference/manifest-types/helmfile.md:24 -#: src/reference/manifest-types/helmfile.md:27 +#: src/reference/manifest-types/helmfile.md:65 +#: src/reference/manifest-types/helmfile.md:68 #: src/reference/manifest-types/oras.md:25 #: src/reference/manifest-types/oras.md:26 src/reference/cli/index.md:35 #: src/reference/cli/init.md:62 src/reference/cli/apply.md:52 @@ -4661,19 +4719,17 @@ msgstr "Use plaintext gRPC for the OTLP exporter (no TLS)." #: src/operations/observability.md:19 msgid "" -"`--otlp-endpoint` を渡したコマンドだけが trace を発火します。短命 CLI が " -"collector に ぶら下がってしまわないよう、shutdown には 5 秒のタイムアウトが" -"入っています。" +"`--otlp-endpoint` を渡したコマンドだけが trace を発火します。短命 CLI が collector に " +"ぶら下がってしまわないよう、shutdown には 5 秒のタイムアウトが入っています。" msgstr "" "Only commands passed `--otlp-endpoint` fire traces. To keep a short-lived " "CLI from hanging on the collector, shutdown has a 5-second timeout." #: src/operations/observability.md:23 -msgid "" -"# Jaeger / Tempo / OTel Collector など、OTLP/gRPC を受けられる先に向ける\n" +msgid "# Jaeger / Tempo / OTel Collector など、OTLP/gRPC を受けられる先に向ける\n" msgstr "" -"# Point it at something that can receive OTLP/gRPC, such as Jaeger / Tempo / " -"OTel Collector\n" +"# Point it at something that can receive OTLP/gRPC, such as Jaeger / Tempo /" +" OTel Collector\n" #: src/operations/observability.md:28 msgid "トレースの構造" @@ -4685,8 +4741,8 @@ msgstr "Tazuna emits a 3-layer trace tree." #: src/operations/observability.md:39 msgid "" -"**Runner span**(tracer 名 `tazuna/runner`)— トップレベルコマンドの実行時間" -"を まとめて測ります。CLI から最初に開く span です。" +"**Runner span**(tracer 名 `tazuna/runner`)— トップレベルコマンドの実行時間を まとめて測ります。CLI " +"から最初に開く span です。" msgstr "" "**Runner span** (tracer name `tazuna/runner`) - measures the overall " "execution time of a top-level command. It is the first span opened from the " @@ -4694,9 +4750,8 @@ msgstr "" #: src/operations/observability.md:41 msgid "" -"**Manager span**(tracer 名 `tazuna/manager`)— 各 Manifest type 固有の処理 " -"(`kubectl apply` 相当 / `helmfile sync` / oras pull / etc.)を 1 span ずつ計" -"測します。" +"**Manager span**(tracer 名 `tazuna/manager`)— 各 Manifest type 固有の処理 (`kubectl" +" apply` 相当 / `helmfile sync` / oras pull / etc.)を 1 span ずつ計測します。" msgstr "" "**Manager span** (tracer name `tazuna/manager`) - measures each Manifest-" "type-specific operation (equivalent to `kubectl apply` / `helmfile sync` / " @@ -4704,11 +4759,11 @@ msgstr "" #: src/operations/observability.md:44 msgid "" -"Runner span と Manager span の名前を分けてあるので、Datadog / Jaeger 等で " -"service / operation 単位の分析がしやすくなっています。" +"Runner span と Manager span の名前を分けてあるので、Datadog / Jaeger 等で service / " +"operation 単位の分析がしやすくなっています。" msgstr "" -"Because the Runner span and Manager span names are kept separate, it is easy " -"to analyze by service / operation in Datadog / Jaeger and the like." +"Because the Runner span and Manager span names are kept separate, it is easy" +" to analyze by service / operation in Datadog / Jaeger and the like." #: src/operations/observability.md:47 msgid "主な span attribute" @@ -4810,9 +4865,7 @@ msgid "`primary-op` / `default-op`" msgstr "`primary-op` / `default-op`" #: src/operations/observability.md:61 -msgid "" -"エラー時には span に `error` ステータスが付き、メッセージは " -"`span.RecordError` で ぶら下がります。" +msgid "エラー時には span に `error` ステータスが付き、メッセージは `span.RecordError` で ぶら下がります。" msgstr "" "On error, the span is marked with an `error` status and the message is " "attached via `span.RecordError`." @@ -4823,8 +4876,8 @@ msgstr "Using it in CI" #: src/operations/observability.md:66 msgid "" -"Datadog / Honeycomb / Grafana Cloud などの SaaS collector を使うと、apply の" -"所要時間や 失敗率を時系列で追えます。CI から渡す例:" +"Datadog / Honeycomb / Grafana Cloud などの SaaS collector を使うと、apply の所要時間や " +"失敗率を時系列で追えます。CI から渡す例:" msgstr "" "Using a SaaS collector such as Datadog / Honeycomb / Grafana Cloud lets you " "track apply duration and failure rate over time. An example of passing it " @@ -4839,8 +4892,8 @@ msgid "tazuna apply (with tracing)" msgstr "tazuna apply (with tracing)" #: src/operations/observability.md:72 -#: src/reference/manifest-types/helmfile.md:109 -#: src/reference/manifest-types/helmfile.md:110 +#: src/reference/manifest-types/helmfile.md:150 +#: src/reference/manifest-types/helmfile.md:151 msgid "env" msgstr "env" @@ -4858,18 +4911,15 @@ msgstr "tazuna apply -f tazuna.yaml --otlp-endpoint=otel.example.com:4317" #: src/operations/observability.md:77 msgid "" -"short-lived な CLI なので、collector 側で `service.name=tazuna` で絞ると、CI " -"run ごとの span tree がそのまま見えるはずです。" +"short-lived な CLI なので、collector 側で `service.name=tazuna` で絞ると、CI run ごとの " +"span tree がそのまま見えるはずです。" msgstr "" "Since it is a short-lived CLI, filtering by `service.name=tazuna` on the " "collector side should let you see the span tree for each CI run directly." #: src/operations/observability.md:82 -msgid "" -"フラグ仕様: [CLI - グローバルフラグ](../reference/cli/index.md#グローバルフラ" -"グ)" -msgstr "" -"Flag spec: [CLI - Global flags](../reference/cli/index.md#グローバルフラグ)" +msgid "フラグ仕様: [CLI - グローバルフラグ](../reference/cli/index.md#グローバルフラグ)" +msgstr "Flag spec: [CLI - Global flags](../reference/cli/index.md#グローバルフラグ)" #: src/operations/observability.md:83 msgid "Drift モニタリング: [Drift モニタリング](./drift-monitoring.md)" @@ -4881,8 +4931,7 @@ msgstr "CI integration: [CI Pipeline](./ci-pipeline.md)" #: src/reference/index.md:3 msgid "" -"このセクションは、Tazuna が受け付ける入力ファイルや CLI、内部データ構造の**仕" -"様**を、 規約書として参照しやすい形でまとめます。" +"このセクションは、Tazuna が受け付ける入力ファイルや CLI、内部データ構造の**仕様**を、 規約書として参照しやすい形でまとめます。" msgstr "" "This section collects the **specifications** of the input files, CLI, and " "internal data structures that Tazuna accepts, in a form intended to be " @@ -4890,18 +4939,18 @@ msgstr "" #: src/reference/index.md:6 msgid "" -"「なぜそうなっているか」は [概念](../concepts/index.md)、 「どう使うか」の手" -"順は [ガイド](../guides/index.md) を参照してください。 リファレンスは事実の列" -"挙に徹し、フィールド・型・デフォルト・例を中心に書きます。" +"「なぜそうなっているか」は [概念](../concepts/index.md)、 「どう使うか」の手順は " +"[ガイド](../guides/index.md) を参照してください。 " +"リファレンスは事実の列挙に徹し、フィールド・型・デフォルト・例を中心に書きます。" msgstr "" "For *why* it is shaped this way, see [Concepts](../concepts/index.md); for " -"*how to* drive it, see [Guides](../guides/index.md). The reference sticks to " -"enumerating facts, focusing on fields, types, defaults, and examples." +"*how to* drive it, see [Guides](../guides/index.md). The reference sticks to" +" enumerating facts, focusing on fields, types, defaults, and examples." #: src/reference/index.md:12 msgid "" -"現在掲載しているリファレンスは次のとおりです。 ここから順次、Manifest type 別" -"の詳細や CLI、Test plugin、State の内部構造などを拡充していきます。" +"現在掲載しているリファレンスは次のとおりです。 ここから順次、Manifest type 別の詳細や CLI、Test plugin、State " +"の内部構造などを拡充していきます。" msgstr "" "Currently the reference includes the following pages. From here we will " "progressively expand into per-Manifest-type details, CLI, Test plugin, and " @@ -4909,9 +4958,9 @@ msgstr "" #: src/reference/index.md:15 msgid "" -"**[`tazuna.yaml` スキーマ](./tazuna-yaml.md)** — Tazuna への唯一の入力ファイ" -"ルである `tazuna.yaml` のトップレベル構造と、 `spec.manifests[]` / " -"`spec.context_matches` / `includes` などの共通フィールドの仕様。" +"**[`tazuna.yaml` スキーマ](./tazuna-yaml.md)** — Tazuna への唯一の入力ファイルである " +"`tazuna.yaml` のトップレベル構造と、 `spec.manifests[]` / `spec.context_matches` / " +"`includes` などの共通フィールドの仕様。" msgstr "" "**[`tazuna.yaml` schema](./tazuna-yaml.md)** — the top-level structure of " "`tazuna.yaml`, the only input file to Tazuna, and the common-field " @@ -4920,20 +4969,20 @@ msgstr "" #: src/reference/index.md:18 msgid "" -"**[`tazuna.hint.yaml` スキーマ](./tazuna-hint-yaml.md)** — helmfile Manifest " -"の `vars` に対する制約を宣言するヒントファイルのスキーマ。 型・必須・条件付き" -"必須・フォーマット検証ルールと、`oneof_required` などのトップレベルルール。" +"**[`tazuna.hint.yaml` スキーマ](./tazuna-hint-yaml.md)** — helmfile Manifest の " +"`vars` に対する制約を宣言するヒントファイルのスキーマ。 型・必須・条件付き必須・フォーマット検証ルールと、`oneof_required` " +"などのトップレベルルール。" msgstr "" "**[`tazuna.hint.yaml` schema](./tazuna-hint-yaml.md)** — the schema of the " "hint file that declares constraints over the `vars` of a helmfile Manifest. " -"Type, required, conditional-required, format-validation rules, and top-level " -"rules such as `oneof_required`." +"Type, required, conditional-required, format-validation rules, and top-level" +" rules such as `oneof_required`." #: src/reference/index.md:21 msgid "" -"**[GenesisSecret スキーマ](./genesis-secret.md)** — 外部 Secret ストア" -"(1Password)から Kubernetes Secret を生成するための YAML スキーマ。 `type: " -"genesissecret` の Manifest として `tazuna.yaml` から参照されます。" +"**[GenesisSecret スキーマ](./genesis-secret.md)** — 外部 Secret ストア(1Password)から " +"Kubernetes Secret を生成するための YAML スキーマ。 `type: genesissecret` の Manifest として " +"`tazuna.yaml` から参照されます。" msgstr "" "**[GenesisSecret schema](./genesis-secret.md)** — the YAML schema for " "generating Kubernetes Secrets from an external secret store (1Password). It " @@ -4941,9 +4990,8 @@ msgstr "" #: src/reference/index.md:24 msgid "" -"**[Test plugin](./test-plugin.md)** — `manifests[].tests` および " -"`spec.tests` に書く `TestPluginSpec` の共通フィールドと、 組み込みプラグイン " -"`WaitUntil` / `ExistNonExist` の仕様。" +"**[Test plugin](./test-plugin.md)** — `manifests[].tests` および `spec.tests` " +"に書く `TestPluginSpec` の共通フィールドと、 組み込みプラグイン `WaitUntil` / `ExistNonExist` の仕様。" msgstr "" "**[Test plugin](./test-plugin.md)** — the common fields of `TestPluginSpec` " "(written under `manifests[].tests` and `spec.tests`) and the spec for the " @@ -4952,8 +5000,7 @@ msgstr "" #: src/reference/index.md:27 msgid "" "**[State の内部構造](./state.md)** — State の保存先(`tazuna` namespace の " -"ConfigMap)、State key の文字列形式、 ContentHash の計算ルール、Diff type の" -"分類仕様。" +"ConfigMap)、State key の文字列形式、 ContentHash の計算ルール、Diff type の分類仕様。" msgstr "" "**[Internal Structure of State](./state.md)** — State's storage location " "(ConfigMaps in the `tazuna` namespace), the string format of State keys, " @@ -4961,9 +5008,9 @@ msgstr "" #: src/reference/index.md:30 msgid "" -"**[Secret provider](./secret-providers.md)** — GenesisSecret から参照される " -"Secret provider の宣言方法。組み込みの `onepassword` / `envfile` の使い分け" -"と、`spec.providers[]` の宣言、`default-op` 予約名。" +"**[Secret provider](./secret-providers.md)** — GenesisSecret から参照される Secret " +"provider の宣言方法。組み込みの `onepassword` / `envfile` の使い分けと、`spec.providers[]` " +"の宣言、`default-op` 予約名。" msgstr "" "**[Secret provider](./secret-providers.md)** — how to declare the Secret " "providers referenced by GenesisSecret: choosing between the built-in " @@ -4972,20 +5019,19 @@ msgstr "" #: src/reference/index.md:33 msgid "" -"**[Manifest type 別](./manifest-types/index.md)** — `kustomize` / " -"`helmfile` / `oras` / `genesissecret` の 4 type について、 `path` の意味・固" -"有フィールド・apply / destroy / build 時の振る舞いを 1 ページずつ。" +"**[Manifest type 別](./manifest-types/index.md)** — `kustomize` / `helmfile` " +"/ `oras` / `genesissecret` の 4 type について、 `path` の意味・固有フィールド・apply / destroy" +" / build 時の振る舞いを 1 ページずつ。" msgstr "" "**[Per Manifest type](./manifest-types/index.md)** — one page each for the " -"four types `kustomize` / `helmfile` / `oras` / `genesissecret`, covering the " -"meaning of `path`, type-specific fields, and apply / destroy / build " +"four types `kustomize` / `helmfile` / `oras` / `genesissecret`, covering the" +" meaning of `path`, type-specific fields, and apply / destroy / build " "behavior." #: src/reference/index.md:36 msgid "" -"**[CLI](./cli/index.md)** — `tazuna` バイナリのサブコマンド・グローバルフラ" -"グ・環境変数の仕様。 各サブコマンドは 1 ページずつに分けて、フラグと振る舞い" -"をまとめています。" +"**[CLI](./cli/index.md)** — `tazuna` バイナリのサブコマンド・グローバルフラグ・環境変数の仕様。 各サブコマンドは " +"1 ページずつに分けて、フラグと振る舞いをまとめています。" msgstr "" "**[CLI](./cli/index.md)** — the spec of subcommands, global flags, and " "environment variables of the `tazuna` binary. Each subcommand has its own " @@ -5005,28 +5051,24 @@ msgstr "All fields without a **Required** annotation are optional." #: src/reference/index.md:44 msgid "" -"「デフォルト」は値を省略したときに Tazuna が採用する値を示します。 ゼロ値(空" -"文字 / 空スライス / `false` / `0`)はとくに注記しない限りそのまま採用されま" -"す。" +"「デフォルト」は値を省略したときに Tazuna が採用する値を示します。 ゼロ値(空文字 / 空スライス / `false` / " +"`0`)はとくに注記しない限りそのまま採用されます。" msgstr "" "\"Default\" is the value Tazuna uses when the field is omitted. Zero values " "(empty string / empty slice / `false` / `0`) are taken as-is unless " "otherwise noted." #: src/reference/index.md:46 -msgid "" -"例示する YAML は最小構成で書きます。 実運用で必要になる追加フィールドは各セク" -"ションで個別に説明します。" +msgid "例示する YAML は最小構成で書きます。 実運用で必要になる追加フィールドは各セクションで個別に説明します。" msgstr "" "Example YAML is written in its minimal form. Additional fields needed in " "real operation are described individually in each section." #: src/reference/tazuna-yaml.md:3 msgid "" -"このページは Tazuna への唯一の入力ファイルである `tazuna.yaml` の仕様をまとめ" -"ます。 ここでは Manifest type 別の固有フィールド(`kustomize` / `helmfile` / " -"`genesissecret` / `oras`)と Test plugin のフィールドには深入りしません。 そ" -"れらは順次、専用のリファレンスページで扱います。" +"このページは Tazuna への唯一の入力ファイルである `tazuna.yaml` の仕様をまとめます。 ここでは Manifest type " +"別の固有フィールド(`kustomize` / `helmfile` / `genesissecret` / `oras`)と Test plugin " +"のフィールドには深入りしません。 それらは順次、専用のリファレンスページで扱います。" msgstr "" "This page describes the spec of `tazuna.yaml`, Tazuna's only input file. We " "do not go deep here into manifest-type-specific fields (`kustomize` / " @@ -5039,27 +5081,28 @@ msgstr "Root (`Tazuna`)" #: src/reference/tazuna-yaml.md:10 msgid "" -"`tazuna.yaml` のルートオブジェクトです。Kubernetes manifest と同じ " -"`apiVersion` / `kind` / `spec` の 3 つを持ちます。" +"`tazuna.yaml` のルートオブジェクトです。Kubernetes manifest と同じ `apiVersion` / `kind` / " +"`spec` の 3 つを持ちます。" msgstr "" "The root object of `tazuna.yaml`. Like a Kubernetes manifest, it has three " "fields: `apiVersion` / `kind` / `spec`." #: src/reference/tazuna-yaml.md:13 src/reference/tazuna-yaml.md:33 -#: src/reference/tazuna-yaml.md:91 src/reference/tazuna-yaml.md:202 -#: src/reference/tazuna-yaml.md:216 src/reference/tazuna-yaml.md:245 -#: src/reference/tazuna-hint-yaml.md:21 src/reference/tazuna-hint-yaml.md:50 -#: src/reference/tazuna-hint-yaml.md:97 src/reference/genesis-secret.md:25 -#: src/reference/genesis-secret.md:37 src/reference/genesis-secret.md:47 -#: src/reference/genesis-secret.md:77 src/reference/genesis-secret.md:99 -#: src/reference/genesis-secret.md:131 src/reference/secret-providers.md:64 -#: src/reference/secret-providers.md:107 src/reference/test-plugin.md:25 -#: src/reference/test-plugin.md:66 src/reference/test-plugin.md:112 -#: src/reference/state.md:62 src/reference/state.md:75 -#: src/reference/state.md:91 src/reference/manifest-types/kustomize.md:17 -#: src/reference/manifest-types/helmfile.md:21 -#: src/reference/manifest-types/helmfile.md:46 -#: src/reference/manifest-types/helmfile.md:60 +#: src/reference/tazuna-yaml.md:96 src/reference/tazuna-yaml.md:193 +#: src/reference/tazuna-yaml.md:304 src/reference/tazuna-yaml.md:318 +#: src/reference/tazuna-yaml.md:347 src/reference/tazuna-hint-yaml.md:21 +#: src/reference/tazuna-hint-yaml.md:50 src/reference/tazuna-hint-yaml.md:97 +#: src/reference/genesis-secret.md:25 src/reference/genesis-secret.md:37 +#: src/reference/genesis-secret.md:47 src/reference/genesis-secret.md:77 +#: src/reference/genesis-secret.md:99 src/reference/genesis-secret.md:131 +#: src/reference/secret-providers.md:64 src/reference/secret-providers.md:107 +#: src/reference/test-plugin.md:25 src/reference/test-plugin.md:66 +#: src/reference/test-plugin.md:112 src/reference/state.md:62 +#: src/reference/state.md:75 src/reference/state.md:91 +#: src/reference/manifest-types/kustomize.md:17 +#: src/reference/manifest-types/helmfile.md:62 +#: src/reference/manifest-types/helmfile.md:87 +#: src/reference/manifest-types/helmfile.md:101 #: src/reference/manifest-types/oras.md:21 #: src/reference/manifest-types/oras.md:32 #: src/reference/manifest-types/oras.md:41 @@ -5067,19 +5110,19 @@ msgid "フィールド" msgstr "Field" #: src/reference/tazuna-yaml.md:13 src/reference/tazuna-yaml.md:33 -#: src/reference/tazuna-yaml.md:91 src/reference/tazuna-yaml.md:202 -#: src/reference/tazuna-yaml.md:216 src/reference/tazuna-hint-yaml.md:21 -#: src/reference/tazuna-hint-yaml.md:50 src/reference/tazuna-hint-yaml.md:97 -#: src/reference/genesis-secret.md:25 src/reference/genesis-secret.md:37 -#: src/reference/genesis-secret.md:47 src/reference/genesis-secret.md:77 -#: src/reference/genesis-secret.md:99 src/reference/genesis-secret.md:131 -#: src/reference/secret-providers.md:64 src/reference/secret-providers.md:107 -#: src/reference/test-plugin.md:25 src/reference/test-plugin.md:66 -#: src/reference/test-plugin.md:112 +#: src/reference/tazuna-yaml.md:96 src/reference/tazuna-yaml.md:193 +#: src/reference/tazuna-yaml.md:304 src/reference/tazuna-yaml.md:318 +#: src/reference/tazuna-hint-yaml.md:21 src/reference/tazuna-hint-yaml.md:50 +#: src/reference/tazuna-hint-yaml.md:97 src/reference/genesis-secret.md:25 +#: src/reference/genesis-secret.md:37 src/reference/genesis-secret.md:47 +#: src/reference/genesis-secret.md:77 src/reference/genesis-secret.md:99 +#: src/reference/genesis-secret.md:131 src/reference/secret-providers.md:64 +#: src/reference/secret-providers.md:107 src/reference/test-plugin.md:25 +#: src/reference/test-plugin.md:66 src/reference/test-plugin.md:112 #: src/reference/manifest-types/kustomize.md:17 -#: src/reference/manifest-types/helmfile.md:21 -#: src/reference/manifest-types/helmfile.md:46 -#: src/reference/manifest-types/helmfile.md:60 +#: src/reference/manifest-types/helmfile.md:62 +#: src/reference/manifest-types/helmfile.md:87 +#: src/reference/manifest-types/helmfile.md:101 #: src/reference/manifest-types/oras.md:21 #: src/reference/manifest-types/oras.md:32 #: src/reference/manifest-types/oras.md:41 @@ -5096,41 +5139,43 @@ msgstr "`apiVersion`" #: src/reference/tazuna-yaml.md:17 src/reference/tazuna-yaml.md:35 #: src/reference/tazuna-yaml.md:36 src/reference/tazuna-yaml.md:37 #: src/reference/tazuna-yaml.md:38 src/reference/tazuna-yaml.md:39 -#: src/reference/tazuna-yaml.md:40 src/reference/tazuna-yaml.md:93 -#: src/reference/tazuna-yaml.md:94 src/reference/tazuna-yaml.md:95 -#: src/reference/tazuna-yaml.md:96 src/reference/tazuna-yaml.md:97 +#: src/reference/tazuna-yaml.md:40 src/reference/tazuna-yaml.md:41 #: src/reference/tazuna-yaml.md:98 src/reference/tazuna-yaml.md:99 -#: src/reference/tazuna-yaml.md:100 src/reference/tazuna-yaml.md:101 -#: src/reference/tazuna-yaml.md:102 src/reference/tazuna-yaml.md:103 -#: src/reference/tazuna-yaml.md:104 src/reference/tazuna-yaml.md:204 -#: src/reference/tazuna-yaml.md:205 src/reference/tazuna-yaml.md:218 -#: src/reference/tazuna-hint-yaml.md:23 src/reference/tazuna-hint-yaml.md:24 -#: src/reference/tazuna-hint-yaml.md:25 src/reference/tazuna-hint-yaml.md:26 -#: src/reference/tazuna-hint-yaml.md:52 src/reference/tazuna-hint-yaml.md:53 -#: src/reference/tazuna-hint-yaml.md:54 src/reference/tazuna-hint-yaml.md:55 -#: src/reference/tazuna-hint-yaml.md:56 src/reference/tazuna-hint-yaml.md:57 -#: src/reference/tazuna-hint-yaml.md:58 src/reference/tazuna-hint-yaml.md:99 -#: src/reference/tazuna-hint-yaml.md:100 src/reference/tazuna-hint-yaml.md:101 -#: src/reference/genesis-secret.md:27 src/reference/genesis-secret.md:28 -#: src/reference/genesis-secret.md:29 src/reference/genesis-secret.md:39 -#: src/reference/genesis-secret.md:40 src/reference/genesis-secret.md:41 -#: src/reference/genesis-secret.md:49 src/reference/genesis-secret.md:50 -#: src/reference/genesis-secret.md:51 src/reference/genesis-secret.md:79 -#: src/reference/genesis-secret.md:133 src/reference/genesis-secret.md:134 -#: src/reference/genesis-secret.md:135 src/reference/genesis-secret.md:136 -#: src/reference/genesis-secret.md:137 src/reference/genesis-secret.md:138 -#: src/reference/secret-providers.md:66 src/reference/secret-providers.md:67 -#: src/reference/secret-providers.md:109 src/reference/test-plugin.md:27 -#: src/reference/test-plugin.md:30 src/reference/test-plugin.md:31 -#: src/reference/test-plugin.md:32 src/reference/test-plugin.md:33 +#: src/reference/tazuna-yaml.md:195 src/reference/tazuna-yaml.md:196 +#: src/reference/tazuna-yaml.md:197 src/reference/tazuna-yaml.md:198 +#: src/reference/tazuna-yaml.md:199 src/reference/tazuna-yaml.md:200 +#: src/reference/tazuna-yaml.md:201 src/reference/tazuna-yaml.md:202 +#: src/reference/tazuna-yaml.md:203 src/reference/tazuna-yaml.md:204 +#: src/reference/tazuna-yaml.md:205 src/reference/tazuna-yaml.md:206 +#: src/reference/tazuna-yaml.md:306 src/reference/tazuna-yaml.md:307 +#: src/reference/tazuna-yaml.md:320 src/reference/tazuna-hint-yaml.md:23 +#: src/reference/tazuna-hint-yaml.md:24 src/reference/tazuna-hint-yaml.md:25 +#: src/reference/tazuna-hint-yaml.md:26 src/reference/tazuna-hint-yaml.md:52 +#: src/reference/tazuna-hint-yaml.md:53 src/reference/tazuna-hint-yaml.md:54 +#: src/reference/tazuna-hint-yaml.md:55 src/reference/tazuna-hint-yaml.md:56 +#: src/reference/tazuna-hint-yaml.md:57 src/reference/tazuna-hint-yaml.md:58 +#: src/reference/tazuna-hint-yaml.md:99 src/reference/tazuna-hint-yaml.md:100 +#: src/reference/tazuna-hint-yaml.md:101 src/reference/genesis-secret.md:27 +#: src/reference/genesis-secret.md:28 src/reference/genesis-secret.md:29 +#: src/reference/genesis-secret.md:39 src/reference/genesis-secret.md:40 +#: src/reference/genesis-secret.md:41 src/reference/genesis-secret.md:49 +#: src/reference/genesis-secret.md:50 src/reference/genesis-secret.md:51 +#: src/reference/genesis-secret.md:79 src/reference/genesis-secret.md:133 +#: src/reference/genesis-secret.md:134 src/reference/genesis-secret.md:135 +#: src/reference/genesis-secret.md:136 src/reference/genesis-secret.md:137 +#: src/reference/genesis-secret.md:138 src/reference/secret-providers.md:66 +#: src/reference/secret-providers.md:67 src/reference/secret-providers.md:109 +#: src/reference/test-plugin.md:27 src/reference/test-plugin.md:30 +#: src/reference/test-plugin.md:31 src/reference/test-plugin.md:32 +#: src/reference/test-plugin.md:33 #: src/reference/manifest-types/kustomize.md:19 -#: src/reference/manifest-types/helmfile.md:23 -#: src/reference/manifest-types/helmfile.md:24 -#: src/reference/manifest-types/helmfile.md:25 -#: src/reference/manifest-types/helmfile.md:26 -#: src/reference/manifest-types/helmfile.md:27 -#: src/reference/manifest-types/helmfile.md:28 -#: src/reference/manifest-types/helmfile.md:29 +#: src/reference/manifest-types/helmfile.md:64 +#: src/reference/manifest-types/helmfile.md:65 +#: src/reference/manifest-types/helmfile.md:66 +#: src/reference/manifest-types/helmfile.md:67 +#: src/reference/manifest-types/helmfile.md:68 +#: src/reference/manifest-types/helmfile.md:69 +#: src/reference/manifest-types/helmfile.md:70 #: src/reference/manifest-types/oras.md:23 #: src/reference/manifest-types/oras.md:24 #: src/reference/manifest-types/oras.md:25 @@ -5161,9 +5206,7 @@ msgid "\\-" msgstr "\\-" #: src/reference/tazuna-yaml.md:15 -msgid "" -"設定する場合は `tazuna.pepabo.com/v1` と完全一致である必要があります。省略" -"可。" +msgid "設定する場合は `tazuna.pepabo.com/v1` と完全一致である必要があります。省略可。" msgstr "When set, must be exactly `tazuna.pepabo.com/v1`. May be omitted." #: src/reference/tazuna-yaml.md:16 src/reference/tazuna-hint-yaml.md:24 @@ -5184,8 +5227,8 @@ msgid "[TazunaSpec](#tazunaspec)" msgstr "[TazunaSpec](#tazunaspec)" #: src/reference/tazuna-yaml.md:17 src/reference/tazuna-yaml.md:36 -#: src/reference/tazuna-yaml.md:93 src/reference/tazuna-yaml.md:204 -#: src/reference/tazuna-yaml.md:205 src/reference/tazuna-yaml.md:218 +#: src/reference/tazuna-yaml.md:195 src/reference/tazuna-yaml.md:306 +#: src/reference/tazuna-yaml.md:307 src/reference/tazuna-yaml.md:320 #: src/reference/tazuna-hint-yaml.md:25 src/reference/tazuna-hint-yaml.md:52 #: src/reference/tazuna-hint-yaml.md:99 src/reference/tazuna-hint-yaml.md:100 #: src/reference/genesis-secret.md:29 src/reference/genesis-secret.md:40 @@ -5199,11 +5242,11 @@ msgstr "[TazunaSpec](#tazunaspec)" #: src/reference/test-plugin.md:72 src/reference/test-plugin.md:114 #: src/reference/test-plugin.md:115 src/reference/test-plugin.md:116 #: src/reference/test-plugin.md:117 src/reference/test-plugin.md:118 -#: src/reference/manifest-types/helmfile.md:48 -#: src/reference/manifest-types/helmfile.md:62 -#: src/reference/manifest-types/helmfile.md:63 -#: src/reference/manifest-types/helmfile.md:64 -#: src/reference/manifest-types/helmfile.md:65 +#: src/reference/manifest-types/helmfile.md:89 +#: src/reference/manifest-types/helmfile.md:103 +#: src/reference/manifest-types/helmfile.md:104 +#: src/reference/manifest-types/helmfile.md:105 +#: src/reference/manifest-types/helmfile.md:106 #: src/reference/manifest-types/oras.md:23 #: src/reference/manifest-types/oras.md:28 #: src/reference/manifest-types/oras.md:43 @@ -5224,19 +5267,19 @@ msgstr "Minimal example:" msgid "TazunaSpec" msgstr "TazunaSpec" -#: src/reference/tazuna-yaml.md:35 src/reference/tazuna-yaml.md:42 +#: src/reference/tazuna-yaml.md:35 src/reference/tazuna-yaml.md:43 msgid "`minimumSupportedTazunaVersion`" msgstr "`minimumSupportedTazunaVersion`" #: src/reference/tazuna-yaml.md:35 msgid "" -"この `tazuna.yaml` を処理するのに必要な tazuna バイナリの最小バージョン" -"(semver)。詳細は [`minimumSupportedTazunaVersion`]" -"(#minimumsupportedtazunaversion) 参照。" +"この `tazuna.yaml` を処理するのに必要な tazuna バイナリの最小バージョン(semver)。詳細は " +"[`minimumSupportedTazunaVersion`](#minimumsupportedtazunaversion) 参照。" msgstr "" "The minimum version (semver) of the tazuna binary required to process this " -"`tazuna.yaml`. See [`minimumSupportedTazunaVersion`]" -"(#minimumsupportedtazunaversion) for details." +"`tazuna.yaml`. See " +"[`minimumSupportedTazunaVersion`](#minimumsupportedtazunaversion) for " +"details." #: src/reference/tazuna-yaml.md:36 msgid "`manifests`" @@ -5248,27 +5291,29 @@ msgstr "\\[[Manifest](#manifest)\\]" #: src/reference/tazuna-yaml.md:36 msgid "" -"Tazuna が処理する Manifest の配列。空配列は許容されません。`dependsOn` が使わ" -"れていれば依存グラフから導出した層順、未使用なら宣言順で実行されます。" +"Tazuna が処理する Manifest の配列。空配列は許容されません。`dependsOn` " +"が使われていれば依存グラフから導出した層順、未使用なら宣言順で実行されます。" msgstr "" "The array of Manifests Tazuna processes. An empty array is not allowed. If " -"`dependsOn` is used, they run in the layer order derived from the dependency " -"graph; otherwise in declaration order." +"`dependsOn` is used, they run in the layer order derived from the dependency" +" graph; otherwise in declaration order." -#: src/reference/tazuna-yaml.md:37 src/reference/tazuna-yaml.md:97 -#: src/reference/tazuna-yaml.md:98 src/reference/tazuna-hint-yaml.md:57 -#: src/reference/tazuna-hint-yaml.md:58 src/reference/tazuna-hint-yaml.md:100 -#: src/reference/manifest-types/helmfile.md:26 -#: src/reference/manifest-types/helmfile.md:51 +#: src/reference/tazuna-yaml.md:37 src/reference/tazuna-yaml.md:98 +#: src/reference/tazuna-yaml.md:199 src/reference/tazuna-yaml.md:200 +#: src/reference/tazuna-hint-yaml.md:57 src/reference/tazuna-hint-yaml.md:58 +#: src/reference/tazuna-hint-yaml.md:100 +#: src/reference/manifest-types/helmfile.md:67 +#: src/reference/manifest-types/helmfile.md:92 msgid "\\[string\\]" msgstr "\\[string\\]" -#: src/reference/tazuna-yaml.md:37 src/reference/tazuna-yaml.md:39 -#: src/reference/tazuna-yaml.md:40 src/reference/tazuna-yaml.md:97 -#: src/reference/tazuna-yaml.md:98 src/reference/tazuna-yaml.md:99 -#: src/reference/tazuna-yaml.md:104 src/reference/tazuna-hint-yaml.md:26 -#: src/reference/tazuna-hint-yaml.md:57 src/reference/tazuna-hint-yaml.md:58 -#: src/reference/manifest-types/helmfile.md:26 src/reference/cli/apply.md:51 +#: src/reference/tazuna-yaml.md:37 src/reference/tazuna-yaml.md:40 +#: src/reference/tazuna-yaml.md:41 src/reference/tazuna-yaml.md:98 +#: src/reference/tazuna-yaml.md:199 src/reference/tazuna-yaml.md:200 +#: src/reference/tazuna-yaml.md:201 src/reference/tazuna-yaml.md:206 +#: src/reference/tazuna-hint-yaml.md:26 src/reference/tazuna-hint-yaml.md:57 +#: src/reference/tazuna-hint-yaml.md:58 +#: src/reference/manifest-types/helmfile.md:67 src/reference/cli/apply.md:51 #: src/reference/cli/build.md:27 src/reference/cli/destroy.md:37 #: src/reference/cli/plan.md:78 src/reference/cli/tags.md:33 msgid "`[]`" @@ -5276,8 +5321,7 @@ msgstr "`[]`" #: src/reference/tazuna-yaml.md:37 msgid "" -"現在の kubeconfig context 名がマッチすべき正規表現の配列。空でなければ " -"`apply` / `destroy` 前に評価されます。" +"現在の kubeconfig context 名がマッチすべき正規表現の配列。空でなければ `apply` / `destroy` 前に評価されます。" msgstr "" "An array of regular expressions that the current kubeconfig context name " "must match. If non-empty, it is evaluated before `apply` / `destroy`." @@ -5287,167 +5331,389 @@ msgid "`or`" msgstr "`or`" #: src/reference/tazuna-yaml.md:38 -msgid "" -"`context_matches` の評価モード。`or`(いずれかに一致)または `and`(すべてに" -"一致)。" +msgid "`context_matches` の評価モード。`or`(いずれかに一致)または `and`(すべてに一致)。" msgstr "" "Evaluation mode for `context_matches`. Either `or` (match any) or `and` " "(match all)." -#: src/reference/tazuna-yaml.md:39 src/reference/tazuna-yaml.md:104 +#: src/reference/tazuna-yaml.md:39 src/reference/tazuna-yaml.md:87 +msgid "`environments`" +msgstr "`environments`" + +#: src/reference/tazuna-yaml.md:39 +msgid "map\\[string\\][EnvironmentSpec](#environments)" +msgstr "map\\[string\\][EnvironmentSpec](#environments)" + +#: src/reference/tazuna-yaml.md:39 src/reference/manifest-types/helmfile.md:64 +msgid "`{}`" +msgstr "`{}`" + +#: src/reference/tazuna-yaml.md:39 +msgid "" +"環境名をキーとする環境ごとの設定マップ。`-e/--environment ` で選択します。詳細は " +"[`environments`](#environments) 参照。" +msgstr "" +"A per-environment configuration map keyed by environment name. Selected with" +" `-e/--environment `. See [`environments`](#environments) for details." + +#: src/reference/tazuna-yaml.md:40 src/reference/tazuna-yaml.md:206 msgid "`tests`" msgstr "`tests`" -#: src/reference/tazuna-yaml.md:39 +#: src/reference/tazuna-yaml.md:40 msgid "\\[[TestPluginSpec](#tests-フィールド)\\]" msgstr "\\[[TestPluginSpec](#tests-フィールド)\\]" -#: src/reference/tazuna-yaml.md:39 +#: src/reference/tazuna-yaml.md:40 msgid "すべての Manifest 適用後に実行される Test plugin の配列。" -msgstr "An array of Test plugins to run after all Manifests have been applied." +msgstr "" +"An array of Test plugins to run after all Manifests have been applied." -#: src/reference/tazuna-yaml.md:40 +#: src/reference/tazuna-yaml.md:41 msgid "`providers`" msgstr "`providers`" -#: src/reference/tazuna-yaml.md:40 +#: src/reference/tazuna-yaml.md:41 msgid "\\[[ProviderConfig](#providers)\\]" msgstr "\\[[ProviderConfig](#providers)\\]" -#: src/reference/tazuna-yaml.md:40 +#: src/reference/tazuna-yaml.md:41 msgid "" -"GenesisSecret から参照される Secret provider の宣言リスト。組み込みの " -"`default-op` 以外を使う場合に書きます。" +"GenesisSecret から参照される Secret provider の宣言リスト。組み込みの `default-op` " +"以外を使う場合に書きます。" msgstr "" "The list of Secret provider declarations referenced by GenesisSecret. Write " "it when you use something other than the built-in `default-op`." -#: src/reference/tazuna-yaml.md:44 +#: src/reference/tazuna-yaml.md:45 msgid "" -"この `tazuna.yaml` を安全に処理できる tazuna バイナリの **最小バージョン** " -"を semver 形式で宣言します(例: `1.4.0`)。先頭の `v` は許容されます" -"(`v1.4.0` も可)。" +"この `tazuna.yaml` を安全に処理できる tazuna バイナリの **最小バージョン** を semver 形式で宣言します(例: " +"`1.4.0`)。先頭の `v` は許容されます(`v1.4.0` も可)。" msgstr "" "Declares, in semver form, the **minimum version** of the tazuna binary that " "can safely process this `tazuna.yaml` (e.g. `1.4.0`). A leading `v` is " "accepted (`v1.4.0` also works)." -#: src/reference/tazuna-yaml.md:46 +#: src/reference/tazuna-yaml.md:47 msgid "" -"`tazuna.yaml` を読み込む **任意の操作**(`apply` / `destroy` / `plan` / " -"`build` / `check` / `status` / `tags` / `state *` など)で、実行中の tazuna " -"のバージョンが この値を **下回る** とエラーで終了します。新しい記法を要求す" -"る `tazuna.yaml` を 古いバイナリで誤って処理してしまう事故を防ぎます。" +"`tazuna.yaml` を読み込む **任意の操作**(`apply` / `destroy` / `plan` / `build` / " +"`check` / `status` / `tags` / `state *` など)で、実行中の tazuna のバージョンが この値を " +"**下回る** とエラーで終了します。新しい記法を要求する `tazuna.yaml` を 古いバイナリで誤って処理してしまう事故を防ぎます。" msgstr "" -"On **any operation** that loads `tazuna.yaml` (`apply` / `destroy` / " -"`plan` / `build` / `check` / `status` / `tags` / `state *`, etc.), if the " -"running tazuna's version is **below** this value it exits with an error. " -"This prevents accidentally processing a `tazuna.yaml` that requires newer " -"syntax with an old binary." +"On **any operation** that loads `tazuna.yaml` (`apply` / `destroy` / `plan` " +"/ `build` / `check` / `status` / `tags` / `state *`, etc.), if the running " +"tazuna's version is **below** this value it exits with an error. This " +"prevents accidentally processing a `tazuna.yaml` that requires newer syntax " +"with an old binary." -#: src/reference/tazuna-yaml.md:50 +#: src/reference/tazuna-yaml.md:51 msgid "未設定(空文字)の場合は制約なしです。" msgstr "When unset (empty string), there is no constraint." -#: src/reference/tazuna-yaml.md:51 +#: src/reference/tazuna-yaml.md:52 msgid "値が semver として不正な場合は設定エラーになります。" msgstr "If the value is not a valid semver, it is a configuration error." -#: src/reference/tazuna-yaml.md:52 +#: src/reference/tazuna-yaml.md:53 msgid "" -"実行中の tazuna がローカルビルド(`dev` など semver でないバージョン)の場合" -"は 比較をスキップします。ローカル開発がこのゲートでブロックされないようにする" -"ためです。" +"実行中の tazuna がローカルビルド(`dev` など semver でないバージョン)の場合は " +"比較をスキップします。ローカル開発がこのゲートでブロックされないようにするためです。" msgstr "" "When the running tazuna is a local build (a non-semver version such as " "`dev`), the comparison is skipped, so that local development is not blocked " "by this gate." -#: src/reference/tazuna-yaml.md:63 +#: src/reference/tazuna-yaml.md:64 msgid "" -"各要素は Go の `regexp` パッケージでコンパイル可能な正規表現でなければなりま" -"せん。 コンパイルに失敗すると `tazuna check` の段階で弾かれます。" +"各要素は Go の `regexp` パッケージでコンパイル可能な正規表現でなければなりません。 コンパイルに失敗すると `tazuna check` " +"の段階で弾かれます。" msgstr "" "Each element must be a regular expression compilable with Go's `regexp` " "package. Compilation failure is caught at the `tazuna check` stage." -#: src/reference/tazuna-yaml.md:65 +#: src/reference/tazuna-yaml.md:66 msgid "空配列または未設定の場合、context のチェックは行われません。" msgstr "If empty or unset, the context check is skipped." -#: src/reference/tazuna-yaml.md:66 +#: src/reference/tazuna-yaml.md:67 msgid "" -"設定されている場合、`tazuna apply` / `tazuna destroy` はクラスタに触る前に " -"current-context を検証します。マッチしないと処理を中断します。" +"設定されている場合、`tazuna apply` / `tazuna destroy` はクラスタに触る前に current-context " +"を検証します。マッチしないと処理を中断します。" msgstr "" "When set, `tazuna apply` / `tazuna destroy` verify current-context before " "touching the cluster. Mismatch aborts processing." -#: src/reference/tazuna-yaml.md:71 -msgid "" -"`or`(デフォルト): `context_matches` のいずれか 1 つにでもマッチすれば OK。" +#: src/reference/tazuna-yaml.md:72 +msgid "`or`(デフォルト): `context_matches` のいずれか 1 つにでもマッチすれば OK。" msgstr "`or` (default): matching any one of `context_matches` is enough." -#: src/reference/tazuna-yaml.md:72 +#: src/reference/tazuna-yaml.md:73 msgid "`and`: `context_matches` の **すべて** にマッチする必要があります。" msgstr "`and`: must match **all** of `context_matches`." -#: src/reference/tazuna-yaml.md:73 +#: src/reference/tazuna-yaml.md:74 msgid "それ以外の値を指定するとバリデーションエラーになります。" msgstr "Any other value is a validation error." -#: src/reference/tazuna-yaml.md:75 src/reference/tazuna-yaml.md:162 -#: src/reference/genesis-secret.md:64 src/reference/genesis-secret.md:81 +#: src/reference/tazuna-yaml.md:76 src/reference/tazuna-yaml.md:117 +#: src/reference/tazuna-yaml.md:264 src/reference/genesis-secret.md:64 +#: src/reference/genesis-secret.md:81 msgid "例:" msgstr "Example:" -#: src/reference/tazuna-yaml.md:80 -msgid "^staging-" -msgstr "^staging-" - -#: src/reference/tazuna-yaml.md:81 +#: src/reference/tazuna-yaml.md:82 msgid "-tokyo$" msgstr "-tokyo$" -#: src/reference/tazuna-yaml.md:82 -msgid "and" -msgstr "and" +#: src/reference/tazuna-yaml.md:89 +msgid "" +"`environments` は **環境名をキーとするマップ** です。`-e/--environment ` " +"フラグで環境を選択すると、ルート直下の `context_matches` / `context_match_mode` " +"の代わりに、選択した環境のものが使われます。同じ `tazuna.yaml` を staging / production " +"など複数のクラスタに向けて安全に使い回すための仕組みです。" +msgstr "" +"`environments` is a **map keyed by environment name**. When you select an " +"environment with the `-e/--environment ` flag, the selected " +"environment's values are used instead of the top-level `context_matches` / " +"`context_match_mode`. It is the mechanism for safely reusing the same " +"`tazuna.yaml` across multiple clusters such as staging / production." + +#: src/reference/tazuna-yaml.md:94 +msgid "各エントリ(`EnvironmentSpec`)は次のフィールドを持ちます。" +msgstr "Each entry (`EnvironmentSpec`) has the following fields." + +#: src/reference/tazuna-yaml.md:98 +msgid "" +"この環境で有効にする `context_matches` パターン。ルート直下の `context_matches` を " +"**完全に置き換えます**(マージしません)。" +msgstr "" +"The `context_matches` patterns to enable for this environment. It " +"**completely replaces** the top-level `context_matches` (it does not merge)." + +#: src/reference/tazuna-yaml.md:99 +msgid "ルートの値" +msgstr "Root value" + +#: src/reference/tazuna-yaml.md:99 +msgid "この環境における評価モード。空ならルート直下の `context_match_mode` を継承し、それも空なら `or` になります。" +msgstr "" +"The evaluation mode for this environment. If empty, it inherits the top-" +"level `context_match_mode`; if that is also empty, it defaults to `or`." + +#: src/reference/tazuna-yaml.md:101 +msgid "解決ルール:" +msgstr "Resolution rules:" + +#: src/reference/tazuna-yaml.md:103 +msgid "" +"`-e` を **渡さない** 場合、`environments` は無視され、ルート直下の `context_matches` / " +"`context_match_mode` が使われます(従来どおりの挙動)。" +msgstr "" +"If you do **not** pass `-e`, `environments` is ignored and the top-level " +"`context_matches` / `context_match_mode` are used (the conventional " +"behavior)." + +#: src/reference/tazuna-yaml.md:105 +msgid "" +"`-e ` を渡した場合、`environments.` が使われます。ルート直下の `context_matches` " +"は参照されません。" +msgstr "" +"If you pass `-e `, `environments.` is used. The top-level " +"`context_matches` is not referenced." + +#: src/reference/tazuna-yaml.md:107 +msgid "" +"`-e ` に対応する環境が `environments` に **宣言されていない** 場合、 `apply` / `destroy` /" +" `check` はエラーで終了します。" +msgstr "" +"If the environment corresponding to `-e ` is **not declared** under " +"`environments`, `apply` / `destroy` / `check` exit with an error." + +#: src/reference/tazuna-yaml.md:109 +msgid "" +"`environments..context_matches` が空(または未設定)の場合、その環境では context " +"チェックは行われません。" +msgstr "" +"If `environments..context_matches` is empty (or unset), no context " +"check is performed for that environment." + +#: src/reference/tazuna-yaml.md:112 +msgid "" +"`-e` は同時に `{{ .Environment }}` テンプレート変数の値にもなります ([テンプレート変数](#テンプレート変数) " +"参照)。`environments` と組み合わせると、 「環境名でマニフェストの値を差し替えつつ、その環境向けの context だけを許可する」 " +"といった使い方ができます。" +msgstr "" +"`-e` also becomes the value of the `{{ .Environment }}` template variable at" +" the same time (see [Template variables](#template-variables)). Combined " +"with `environments`, you can, for example, substitute manifest values by " +"environment name while allowing only the contexts intended for that " +"environment." + +#: src/reference/tazuna-yaml.md:121 +msgid "" +"# -e を渡さないローカル実行ではこちらが使われる\n" +" context_matches" +msgstr "" +"# used for local runs where -e is not passed\n" +" context_matches" + +#: src/reference/tazuna-yaml.md:123 +msgid "^kind-" +msgstr "^kind-" -#: src/reference/tazuna-yaml.md:88 +#: src/reference/tazuna-yaml.md:148 +msgid "テンプレート変数" +msgstr "Template Variables" + +#: src/reference/tazuna-yaml.md:150 msgid "" -"`spec.manifests[]` の各要素です。1 つの Manifest が、1 つのバックエンド " -"(kustomize / helmfile / 他)による「クラスタへ入れる単位」に対応します。" +"`tazuna.yaml`(および `includes` で読み込まれるファイル)は、YAML としてパースされる **前に一度 Go の " +"[text/template](https://pkg.go.dev/text/template) として描画** されます。 " +"これにより、環境ごとに異なる値を 1 つのファイルから注入できます。" +msgstr "" +"`tazuna.yaml` (and files loaded via `includes`) is **rendered once as a Go " +"[text/template](https://pkg.go.dev/text/template)** before being parsed as " +"YAML. This lets you inject different values per environment from a single " +"file." + +#: src/reference/tazuna-yaml.md:154 +msgid "仕組みと動き" +msgstr "How It Works" + +#: src/reference/tazuna-yaml.md:156 +msgid "`tazuna` は指定された `tazuna.yaml` を読み込みます。" +msgstr "`tazuna` loads the specified `tazuna.yaml`." + +#: src/reference/tazuna-yaml.md:157 +msgid "ファイル全体を Go template として解釈し、後述の変数を適用して描画します。" +msgstr "" +"The entire file is interpreted as a Go template and rendered by applying the" +" variables described below." + +#: src/reference/tazuna-yaml.md:158 +msgid "描画後の文字列を YAML としてパースします。" +msgstr "The rendered string is parsed as YAML." + +#: src/reference/tazuna-yaml.md:159 +msgid "`includes` で読み込まれるファイルも、同じ変数で同様に描画されます。" +msgstr "" +"Files loaded via `includes` are rendered the same way, with the same " +"variables." + +#: src/reference/tazuna-yaml.md:161 +msgid "" +"`apply` / `destroy` / `build` / `plan` / `check` / `status` / `tags` / " +"`state *` など、 `tazuna.yaml` を読み込む **すべての操作** で描画が行われます。`-e` を渡さなかった場合、 `{{ " +".Environment }}` は **空文字列** に展開されます。" +msgstr "" +"Rendering happens for **every operation** that reads `tazuna.yaml`, such as " +"`apply` / `destroy` / `build` / `plan` / `check` / `status` / `tags` / " +"`state *`. If you do not pass `-e`, `{{ .Environment }}` expands to an " +"**empty string**." + +#: src/reference/tazuna-yaml.md:165 +msgid "対応している変数" +msgstr "Supported Variables" + +#: src/reference/tazuna-yaml.md:167 +msgid "変数" +msgstr "Variable" + +#: src/reference/tazuna-yaml.md:169 +msgid "`-e/--environment` フラグの値。未指定時は空文字列。" +msgstr "" +"The value of the `-e/--environment` flag. Empty string when unspecified." + +#: src/reference/tazuna-yaml.md:171 +msgid "注意点" +msgstr "Notes" + +#: src/reference/tazuna-yaml.md:173 +msgid "" +"描画は **ファイル全体** に対して行われます。`{{` や `}}` を YAML の値として そのまま出力したい場合は `{{ \"{{\" " +"}}` / `{{ \"}}\" }}` のようにエスケープしてください。" +msgstr "" +"Rendering is performed on the **entire file**. If you want to output `{{` or" +" `}}` literally as YAML values, escape them like `{{ \"{{\" }}` / `{{ \"}}\"" +" }}`." + +#: src/reference/tazuna-yaml.md:175 +msgid "存在しない変数(例: `{{ .Unknown }}`)を参照すると描画時にエラーになります。" +msgstr "" +"Referencing a nonexistent variable (e.g. `{{ .Unknown }}`) causes an error " +"during rendering." + +#: src/reference/tazuna-yaml.md:176 +msgid "" +"Helmfile の value ファイルや Helm chart のテンプレートは `tazuna` の描画対象では ありません(それらは " +"helmfile / helm 側で処理されます)。あくまで `tazuna.yaml` 本体と `includes` 対象ファイルのみが描画されます。" +msgstr "" +"Helmfile value files and Helm chart templates are **not** rendered by " +"`tazuna` (they are handled by helmfile / helm). Only the `tazuna.yaml` body " +"itself and files targeted by `includes` are rendered." + +#: src/reference/tazuna-yaml.md:180 +msgid "ユースケース" +msgstr "Use Cases" + +#: src/reference/tazuna-yaml.md:182 +msgid "" +"**オーバーレイの切り替え**: `path: ./overlays/{{ .Environment }}` のように、 " +"環境名でマニフェストのパスを切り替える。" +msgstr "" +"**Switching overlays**: switch the manifest path by environment name, as in " +"`path: ./overlays/{{ .Environment }}`." + +#: src/reference/tazuna-yaml.md:184 +msgid "**ネームスペースやラベルの差し替え**: `defaultNamespace: {{ .Environment }}` など。" +msgstr "" +"**Substituting namespaces or labels**: e.g. `defaultNamespace: {{ " +".Environment }}`." + +#: src/reference/tazuna-yaml.md:185 +msgid "" +"**`environments` と併用**: `{{ .Environment }}` で値を差し替えつつ、その環境の " +"`context_matches` で対象クラスタを限定し、誤ったクラスタへの適用を防ぐ。" +msgstr "" +"**Combining with `environments`**: substitute values with `{{ .Environment " +"}}` while limiting target clusters via that environment's `context_matches`," +" preventing application to the wrong cluster." + +#: src/reference/tazuna-yaml.md:190 +msgid "" +"`spec.manifests[]` の各要素です。1 つの Manifest が、1 つのバックエンド (kustomize / helmfile /" +" 他)による「クラスタへ入れる単位」に対応します。" msgstr "" "Each element of `spec.manifests[]`. One Manifest corresponds to \"one unit " -"to install into the cluster\" handled by one backend (kustomize / helmfile / " -"others)." +"to install into the cluster\" handled by one backend (kustomize / helmfile /" +" others)." -#: src/reference/tazuna-yaml.md:93 src/reference/tazuna-yaml.md:109 -#: src/reference/tazuna-yaml.md:204 src/reference/genesis-secret.md:134 +#: src/reference/tazuna-yaml.md:195 src/reference/tazuna-yaml.md:211 +#: src/reference/tazuna-yaml.md:306 src/reference/genesis-secret.md:134 #: src/reference/secret-providers.md:66 src/reference/test-plugin.md:71 #: src/reference/test-plugin.md:117 msgid "`name`" msgstr "`name`" -#: src/reference/tazuna-yaml.md:93 +#: src/reference/tazuna-yaml.md:195 msgid "" -"Manifest 識別子。`^[a-zA-Z0-9_-]+$` にマッチする必要があり、`includes` 展開後" -"の全 Manifest 間でユニーク。`_metadata` は予約済みで使用不可。" +"Manifest 識別子。`^[a-zA-Z0-9_-]+$` にマッチする必要があり、`includes` 展開後の全 Manifest " +"間でユニーク。`_metadata` は予約済みで使用不可。" msgstr "" "Manifest identifier. Must match `^[a-zA-Z0-9_-]+$` and be unique across all " "Manifests after `includes` expansion. `_metadata` is reserved and cannot be " "used." -#: src/reference/tazuna-yaml.md:94 src/reference/tazuna-hint-yaml.md:55 +#: src/reference/tazuna-yaml.md:196 src/reference/tazuna-hint-yaml.md:55 msgid "`description`" msgstr "`description`" -#: src/reference/tazuna-yaml.md:94 src/reference/tazuna-hint-yaml.md:55 +#: src/reference/tazuna-yaml.md:196 src/reference/tazuna-hint-yaml.md:55 msgid "人間向けの説明。挙動には影響しません。" msgstr "Human-facing description. Has no effect on behavior." -#: src/reference/tazuna-yaml.md:95 src/reference/tazuna-yaml.md:129 -#: src/reference/tazuna-yaml.md:138 src/reference/tazuna-yaml.md:205 +#: src/reference/tazuna-yaml.md:197 src/reference/tazuna-yaml.md:231 +#: src/reference/tazuna-yaml.md:240 src/reference/tazuna-yaml.md:307 #: src/reference/tazuna-hint-yaml.md:52 src/reference/tazuna-hint-yaml.md:99 #: src/reference/genesis-secret.md:137 src/reference/secret-providers.md:67 #: src/reference/test-plugin.md:27 src/reference/manifest-types/index.md:28 @@ -5456,84 +5722,84 @@ msgstr "Human-facing description. Has no effect on behavior." msgid "`type`" msgstr "`type`" -#: src/reference/tazuna-yaml.md:95 src/reference/tazuna-yaml.md:96 +#: src/reference/tazuna-yaml.md:197 src/reference/tazuna-yaml.md:198 #: src/reference/genesis-secret.md:101 src/reference/genesis-secret.md:102 #: src/reference/test-plugin.md:28 src/reference/test-plugin.md:29 -#: src/reference/manifest-types/helmfile.md:49 -#: src/reference/manifest-types/helmfile.md:50 -#: src/reference/manifest-types/helmfile.md:51 -#: src/reference/manifest-types/helmfile.md:52 -#: src/reference/manifest-types/helmfile.md:53 +#: src/reference/manifest-types/helmfile.md:90 +#: src/reference/manifest-types/helmfile.md:91 +#: src/reference/manifest-types/helmfile.md:92 +#: src/reference/manifest-types/helmfile.md:93 +#: src/reference/manifest-types/helmfile.md:94 msgid "△ (※)" msgstr "Conditional (*)" -#: src/reference/tazuna-yaml.md:95 +#: src/reference/tazuna-yaml.md:197 msgid "`kustomize` / `helmfile` / `genesissecret` / `oras` のいずれか。" msgstr "One of `kustomize` / `helmfile` / `genesissecret` / `oras`." -#: src/reference/tazuna-yaml.md:96 src/reference/tazuna-yaml.md:121 -#: src/reference/tazuna-yaml.md:218 src/reference/secret-providers.md:109 +#: src/reference/tazuna-yaml.md:198 src/reference/tazuna-yaml.md:223 +#: src/reference/tazuna-yaml.md:320 src/reference/secret-providers.md:109 #: src/reference/manifest-types/kustomize.md:7 -#: src/reference/manifest-types/helmfile.md:11 +#: src/reference/manifest-types/helmfile.md:23 #: src/reference/manifest-types/oras.md:9 #: src/reference/manifest-types/genesissecret.md:11 msgid "`path`" msgstr "`path`" -#: src/reference/tazuna-yaml.md:96 +#: src/reference/tazuna-yaml.md:198 msgid "`tazuna.yaml` 自身の置かれているディレクトリ起点の相対パス。" msgstr "" "A path relative to the directory in which `tazuna.yaml` itself resides." -#: src/reference/tazuna-yaml.md:97 src/reference/tazuna-yaml.md:144 +#: src/reference/tazuna-yaml.md:199 src/reference/tazuna-yaml.md:246 msgid "`tags`" msgstr "`tags`" -#: src/reference/tazuna-yaml.md:97 +#: src/reference/tazuna-yaml.md:199 msgid "`tazuna apply --tags ...` などで絞り込みに使うタグ。OR 評価。" msgstr "" "Tags used for filtering by `tazuna apply --tags ...` and so on. OR " "evaluation." -#: src/reference/tazuna-yaml.md:98 +#: src/reference/tazuna-yaml.md:200 msgid "" -"この Manifest の apply 前に完了している必要がある Manifest 名のリスト。詳細" -"は [`dependsOn`](#dependson) 参照。" +"この Manifest の apply 前に完了している必要がある Manifest 名のリスト。詳細は " +"[`dependsOn`](#dependson) 参照。" msgstr "" "The list of Manifest names that must complete before this Manifest is " "applied. See [`dependsOn`](#dependson) for details." -#: src/reference/tazuna-yaml.md:99 +#: src/reference/tazuna-yaml.md:201 msgid "`includes`" msgstr "`includes`" -#: src/reference/tazuna-yaml.md:99 +#: src/reference/tazuna-yaml.md:201 msgid "\\[[IncludeFile](#includefile)\\]" msgstr "\\[[IncludeFile](#includefile)\\]" -#: src/reference/tazuna-yaml.md:99 +#: src/reference/tazuna-yaml.md:201 msgid "" -"別の `tazuna.yaml` を読み込むエントリ。設定時は他の Manifest 固有フィールドは" -"無視されます。詳細は [includes を使う](#includes-を使う) を参照。" +"別の `tazuna.yaml` を読み込むエントリ。設定時は他の Manifest 固有フィールドは無視されます。詳細は [includes " +"を使う](#includes-を使う) を参照。" msgstr "" "An entry that loads another `tazuna.yaml`. When set, the other Manifest-" "specific fields are ignored. See [Using includes](#includes-を使う) for " "details." -#: src/reference/tazuna-yaml.md:100 src/reference/tazuna-yaml.md:131 -#: src/reference/tazuna-yaml.md:247 src/reference/manifest-types/index.md:30 +#: src/reference/tazuna-yaml.md:202 src/reference/tazuna-yaml.md:233 +#: src/reference/tazuna-yaml.md:349 src/reference/manifest-types/index.md:30 #: src/reference/manifest-types/index.md:45 #: src/reference/manifest-types/oras.md:45 msgid "`kustomize`" msgstr "`kustomize`" -#: src/reference/tazuna-yaml.md:100 +#: src/reference/tazuna-yaml.md:202 msgid "[ManifestKustomize](#manifest-type-別フィールド)" msgstr "[ManifestKustomize](#manifest-type-別フィールド)" -#: src/reference/tazuna-yaml.md:100 src/reference/tazuna-yaml.md:101 -#: src/reference/tazuna-yaml.md:102 src/reference/tazuna-yaml.md:103 -#: src/reference/tazuna-yaml.md:206 src/reference/tazuna-yaml.md:207 +#: src/reference/tazuna-yaml.md:202 src/reference/tazuna-yaml.md:203 +#: src/reference/tazuna-yaml.md:204 src/reference/tazuna-yaml.md:205 +#: src/reference/tazuna-yaml.md:308 src/reference/tazuna-yaml.md:309 #: src/reference/tazuna-hint-yaml.md:54 src/reference/genesis-secret.md:101 #: src/reference/genesis-secret.md:102 src/reference/genesis-secret.md:135 #: src/reference/genesis-secret.md:136 src/reference/secret-providers.md:68 @@ -5544,379 +5810,357 @@ msgstr "[ManifestKustomize](#manifest-type-別フィールド)" msgid "`null`" msgstr "`null`" -#: src/reference/tazuna-yaml.md:100 +#: src/reference/tazuna-yaml.md:202 msgid "`type: kustomize` のときに参照されるオプション。" msgstr "Options referenced when `type: kustomize`." -#: src/reference/tazuna-yaml.md:101 src/reference/tazuna-yaml.md:132 -#: src/reference/tazuna-yaml.md:248 src/reference/manifest-types/index.md:31 +#: src/reference/tazuna-yaml.md:203 src/reference/tazuna-yaml.md:234 +#: src/reference/tazuna-yaml.md:350 src/reference/manifest-types/index.md:31 #: src/reference/manifest-types/index.md:46 #: src/reference/manifest-types/oras.md:44 msgid "`helmfile`" msgstr "`helmfile`" -#: src/reference/tazuna-yaml.md:101 +#: src/reference/tazuna-yaml.md:203 msgid "[ManifestHelmfile](#manifest-type-別フィールド)" msgstr "[ManifestHelmfile](#manifest-type-別フィールド)" -#: src/reference/tazuna-yaml.md:101 +#: src/reference/tazuna-yaml.md:203 msgid "`type: helmfile` のときに参照されるオプション。" msgstr "Options referenced when `type: helmfile`." -#: src/reference/tazuna-yaml.md:102 src/reference/tazuna-yaml.md:249 +#: src/reference/tazuna-yaml.md:204 src/reference/tazuna-yaml.md:351 #: src/reference/manifest-types/index.md:33 msgid "`genesisSecret`" msgstr "`genesisSecret`" -#: src/reference/tazuna-yaml.md:102 src/reference/tazuna-yaml.md:206 -#: src/reference/tazuna-yaml.md:207 src/reference/genesis-secret.md:102 +#: src/reference/tazuna-yaml.md:204 src/reference/tazuna-yaml.md:308 +#: src/reference/tazuna-yaml.md:309 src/reference/genesis-secret.md:102 #: src/reference/secret-providers.md:68 src/reference/secret-providers.md:69 msgid "object" msgstr "object" -#: src/reference/tazuna-yaml.md:102 -msgid "" -"`type: genesissecret` のときに参照されるオプション。現状は空オブジェクト。" +#: src/reference/tazuna-yaml.md:204 +msgid "`type: genesissecret` のときに参照されるオプション。現状は空オブジェクト。" msgstr "" "Options referenced when `type: genesissecret`. Currently an empty object." -#: src/reference/tazuna-yaml.md:103 src/reference/tazuna-yaml.md:134 -#: src/reference/tazuna-yaml.md:250 src/reference/manifest-types/index.md:32 +#: src/reference/tazuna-yaml.md:205 src/reference/tazuna-yaml.md:236 +#: src/reference/tazuna-yaml.md:352 src/reference/manifest-types/index.md:32 #: src/reference/manifest-types/index.md:47 msgid "`oras`" msgstr "`oras`" -#: src/reference/tazuna-yaml.md:103 +#: src/reference/tazuna-yaml.md:205 msgid "[ManifestORAS](#manifest-type-別フィールド)" msgstr "[ManifestORAS](#manifest-type-別フィールド)" -#: src/reference/tazuna-yaml.md:103 +#: src/reference/tazuna-yaml.md:205 msgid "`type: oras` のときに参照されるオプション。" msgstr "Options referenced when `type: oras`." -#: src/reference/tazuna-yaml.md:104 +#: src/reference/tazuna-yaml.md:206 msgid "\\[TestPluginSpec\\]" msgstr "\\[TestPluginSpec\\]" -#: src/reference/tazuna-yaml.md:104 +#: src/reference/tazuna-yaml.md:206 msgid "この Manifest の apply 後に実行される Test plugin の配列。" msgstr "An array of Test plugins to run after this Manifest is applied." -#: src/reference/tazuna-yaml.md:106 +#: src/reference/tazuna-yaml.md:208 msgid "" -"(※) `includes` を指定するときは `type` / `path` は不要。 それ以外のときは " -"`type` と `path` が必須です。" +"(※) `includes` を指定するときは `type` / `path` は不要。 それ以外のときは `type` と `path` が必須です。" msgstr "" -"(*) When specifying `includes`, `type` / `path` are not required. Otherwise, " -"`type` and `path` are required." +"(*) When specifying `includes`, `type` / `path` are not required. Otherwise," +" `type` and `path` are required." -#: src/reference/tazuna-yaml.md:111 +#: src/reference/tazuna-yaml.md:213 msgid "必須。" msgstr "Required." -#: src/reference/tazuna-yaml.md:112 +#: src/reference/tazuna-yaml.md:214 msgid "使える文字種は `^[a-zA-Z0-9_-]+$`。" msgstr "Allowed characters are `^[a-zA-Z0-9_-]+$`." -#: src/reference/tazuna-yaml.md:113 -msgid "" -"`_metadata` は内部利用のため予約されており、Manifest 名としては使えません。" +#: src/reference/tazuna-yaml.md:215 +msgid "`_metadata` は内部利用のため予約されており、Manifest 名としては使えません。" msgstr "" "`_metadata` is reserved for internal use and cannot be used as a Manifest " "name." -#: src/reference/tazuna-yaml.md:114 +#: src/reference/tazuna-yaml.md:216 msgid "" -"`includes` 展開後の全 Manifest 間で **一意** である必要があります。 重複して" -"いると `tazuna check` でエラーになります。" +"`includes` 展開後の全 Manifest 間で **一意** である必要があります。 重複していると `tazuna check` " +"でエラーになります。" msgstr "" "Must be **unique** across all Manifests after `includes` expansion. " "Duplicates fail at `tazuna check`." -#: src/reference/tazuna-yaml.md:117 +#: src/reference/tazuna-yaml.md:219 msgid "" -"`tazuna check` では `name` のバリデーションは **エラー** として扱いますが、" -"`tazuna apply` / `build` / `destroy` では移行期間として **警告ログのみ** が出" -"る挙動になっています。 新規導入時は `tazuna check` で先に通しておくのが安全で" -"す。" +"`tazuna check` では `name` のバリデーションは **エラー** として扱いますが、`tazuna apply` / `build`" +" / `destroy` では移行期間として **警告ログのみ** が出る挙動になっています。 新規導入時は `tazuna check` " +"で先に通しておくのが安全です。" msgstr "" -"`tazuna check` treats `name` validation as an **error**, but `tazuna " -"apply` / `build` / `destroy` only emit a **warning log** during the " -"transition period. When adopting Tazuna for the first time, it is safer to " -"run `tazuna check` first." +"`tazuna check` treats `name` validation as an **error**, but `tazuna apply` " +"/ `build` / `destroy` only emit a **warning log** during the transition " +"period. When adopting Tazuna for the first time, it is safer to run `tazuna " +"check` first." -#: src/reference/tazuna-yaml.md:123 src/reference/tazuna-yaml.md:140 +#: src/reference/tazuna-yaml.md:225 src/reference/tazuna-yaml.md:242 msgid "`includes` を使わないときは必須。" msgstr "Required when not using `includes`." -#: src/reference/tazuna-yaml.md:124 +#: src/reference/tazuna-yaml.md:226 msgid "" -"**`tazuna.yaml` 自身の置かれているディレクトリ起点** の相対パスとして解釈され" -"ます。 コマンドを実行した cwd 起点ではありません。" +"**`tazuna.yaml` 自身の置かれているディレクトリ起点** の相対パスとして解釈されます。 コマンドを実行した cwd 起点ではありません。" msgstr "" "Interpreted as a path relative to **the directory in which `tazuna.yaml` " "itself resides**, not the cwd from which the command was run." -#: src/reference/tazuna-yaml.md:126 +#: src/reference/tazuna-yaml.md:228 msgid "`tazuna check` の時点で実在チェックが行われます。" msgstr "Existence is checked at `tazuna check` time." -#: src/reference/tazuna-yaml.md:127 +#: src/reference/tazuna-yaml.md:229 msgid "type ごとに `path` が指すべき先が異なります。" msgstr "What `path` should point to differs by type." -#: src/reference/tazuna-yaml.md:129 src/reference/manifest-types/index.md:43 +#: src/reference/tazuna-yaml.md:231 src/reference/manifest-types/index.md:43 msgid "`path` が指す先" msgstr "What `path` points to" -#: src/reference/tazuna-yaml.md:131 src/reference/manifest-types/index.md:45 +#: src/reference/tazuna-yaml.md:233 src/reference/manifest-types/index.md:45 msgid "`kustomization.yaml` を含むディレクトリ" msgstr "A directory containing `kustomization.yaml`" -#: src/reference/tazuna-yaml.md:132 src/reference/manifest-types/index.md:46 +#: src/reference/tazuna-yaml.md:234 src/reference/manifest-types/index.md:46 msgid "`helmfile.yaml` を含むディレクトリ" msgstr "A directory containing `helmfile.yaml`" -#: src/reference/tazuna-yaml.md:133 src/reference/manifest-types/index.md:33 +#: src/reference/tazuna-yaml.md:235 src/reference/manifest-types/index.md:33 #: src/reference/manifest-types/index.md:48 msgid "`genesissecret`" msgstr "`genesissecret`" -#: src/reference/tazuna-yaml.md:133 +#: src/reference/tazuna-yaml.md:235 msgid "GenesisSecret 定義 YAML **ファイル**(ディレクトリではない)" msgstr "The GenesisSecret definition YAML **file** (not a directory)" -#: src/reference/tazuna-yaml.md:134 src/reference/manifest-types/index.md:47 -msgid "" -"実体としては使用されません。バリデーション都合で空にはできないため、適当な" -"ディレクトリを書きます。" +#: src/reference/tazuna-yaml.md:236 src/reference/manifest-types/index.md:47 +msgid "実体としては使用されません。バリデーション都合で空にはできないため、適当なディレクトリを書きます。" msgstr "" "Not used in practice. Cannot be empty due to validation, so write any " "directory." -#: src/reference/tazuna-yaml.md:136 -msgid "" -"詳細な解釈は各 [Manifest type 別ページ](./manifest-types/index.md) を参照して" -"ください。" +#: src/reference/tazuna-yaml.md:238 +msgid "詳細な解釈は各 [Manifest type 別ページ](./manifest-types/index.md) を参照してください。" msgstr "See each [Manifest-type page](./manifest-types/index.md) for details." -#: src/reference/tazuna-yaml.md:141 -msgid "" -"値の一覧は [Manifest type](../concepts/glossary.md#manifest-type) を参照。" +#: src/reference/tazuna-yaml.md:243 +msgid "値の一覧は [Manifest type](../concepts/glossary.md#manifest-type) を参照。" msgstr "" "See [Manifest type](../concepts/glossary.md#manifest-type) for the value " "list." -#: src/reference/tazuna-yaml.md:142 +#: src/reference/tazuna-yaml.md:244 msgid "未対応の値を指定するとバリデーションエラーになります。" msgstr "Unsupported values raise a validation error." -#: src/reference/tazuna-yaml.md:146 +#: src/reference/tazuna-yaml.md:248 msgid "文字列の配列。Tazuna 自身は内容を解釈しません。" msgstr "An array of strings. Tazuna itself does not interpret the contents." -#: src/reference/tazuna-yaml.md:147 +#: src/reference/tazuna-yaml.md:249 msgid "" -"`--tags` フラグでの絞り込み時に、**指定されたタグのいずれかが付いている** " -"Manifest だけが処理対象になります(OR 評価)。" +"`--tags` フラグでの絞り込み時に、**指定されたタグのいずれかが付いている** Manifest だけが処理対象になります(OR 評価)。" msgstr "" -"When filtering with the `--tags` flag, only Manifests **with at least one of " -"the specified tags** are targeted (OR evaluation)." +"When filtering with the `--tags` flag, only Manifests **with at least one of" +" the specified tags** are targeted (OR evaluation)." -#: src/reference/tazuna-yaml.md:152 -msgid "" -"この Manifest を apply する前に **必ず完了している必要がある** Manifest 名の" -"配列。" +#: src/reference/tazuna-yaml.md:254 +msgid "この Manifest を apply する前に **必ず完了している必要がある** Manifest 名の配列。" msgstr "" -"An array of Manifest names that **must have completed** before this Manifest " -"is applied." +"An array of Manifest names that **must have completed** before this Manifest" +" is applied." -#: src/reference/tazuna-yaml.md:153 +#: src/reference/tazuna-yaml.md:255 msgid "`includes` 展開後の全 Manifest 集合に含まれる名前でなければなりません。" msgstr "" "Must be a name contained in the full set of Manifests after `includes` " "expansion." -#: src/reference/tazuna-yaml.md:154 -msgid "" -"自分自身を含めることはできません(自己依存は循環の特殊例として弾かれます)。" +#: src/reference/tazuna-yaml.md:256 +msgid "自分自身を含めることはできません(自己依存は循環の特殊例として弾かれます)。" msgstr "" -"It cannot include itself (self-dependency is rejected as a special case of a " -"cycle)." +"It cannot include itself (self-dependency is rejected as a special case of a" +" cycle)." -#: src/reference/tazuna-yaml.md:155 +#: src/reference/tazuna-yaml.md:257 msgid "全体の依存関係に循環が含まれていてはなりません。" msgstr "The overall dependency graph must not contain a cycle." -#: src/reference/tazuna-yaml.md:156 +#: src/reference/tazuna-yaml.md:258 msgid "" -"`tazuna.yaml` 内で 1 つでも `dependsOn` が使われていれば Runner は DAG モード" -"に 切り替わり、同じ依存深度の Manifest を **並列に** 実行します。1 つも使われ" -"ていなければ 従来通り宣言順 1 件ずつの実行になります。" +"`tazuna.yaml` 内で 1 つでも `dependsOn` が使われていれば Runner は DAG モードに 切り替わり、同じ依存深度の " +"Manifest を **並列に** 実行します。1 つも使われていなければ 従来通り宣言順 1 件ずつの実行になります。" msgstr "" -"If even one `dependsOn` is used in `tazuna.yaml`, the Runner switches to DAG " -"mode and runs Manifests at the same dependency depth **in parallel**. If " +"If even one `dependsOn` is used in `tazuna.yaml`, the Runner switches to DAG" +" mode and runs Manifests at the same dependency depth **in parallel**. If " "none is used, it runs one at a time in declaration order as before." -#: src/reference/tazuna-yaml.md:160 -msgid "" -"詳細と動機は [`dependsOn` による DAG 実行](../concepts/depends-on.md) を参照" -"してください。" +#: src/reference/tazuna-yaml.md:262 +msgid "詳細と動機は [`dependsOn` による DAG 実行](../concepts/depends-on.md) を参照してください。" msgstr "" "See [DAG Execution via `dependsOn`](../concepts/depends-on.md) for details " "and motivation." -#: src/reference/tazuna-yaml.md:184 +#: src/reference/tazuna-yaml.md:286 msgid "Providers" msgstr "Providers" -#: src/reference/tazuna-yaml.md:186 +#: src/reference/tazuna-yaml.md:288 msgid "" -"`spec.providers[]` は GenesisSecret から参照される Secret provider の宣言リス" -"トです。 組み込みの `default-op`(1Password)以外を使う、または provider を複" -"数並べて使い分けたい ときに書きます。" +"`spec.providers[]` は GenesisSecret から参照される Secret provider の宣言リストです。 組み込みの " +"`default-op`(1Password)以外を使う、または provider を複数並べて使い分けたい ときに書きます。" msgstr "" -"`spec.providers[]` is the list of Secret provider declarations referenced by " -"GenesisSecret. Write it when you use something other than the built-in " -"`default-op` (1Password), or when you want to line up multiple providers and " -"select between them." +"`spec.providers[]` is the list of Secret provider declarations referenced by" +" GenesisSecret. Write it when you use something other than the built-in " +"`default-op` (1Password), or when you want to line up multiple providers and" +" select between them." -#: src/reference/tazuna-yaml.md:192 src/reference/secret-providers.md:50 +#: src/reference/tazuna-yaml.md:294 src/reference/secret-providers.md:50 #: src/reference/secret-providers.md:82 src/reference/secret-providers.md:100 msgid "providers" msgstr "providers" -#: src/reference/tazuna-yaml.md:193 src/reference/secret-providers.md:51 +#: src/reference/tazuna-yaml.md:295 src/reference/secret-providers.md:51 #: src/reference/secret-providers.md:83 msgid "primary-op" msgstr "primary-op" -#: src/reference/tazuna-yaml.md:194 src/reference/tazuna-yaml.md:195 +#: src/reference/tazuna-yaml.md:296 src/reference/tazuna-yaml.md:297 #: src/reference/secret-providers.md:52 src/reference/secret-providers.md:53 #: src/reference/secret-providers.md:84 src/reference/secret-providers.md:85 msgid "onepassword" msgstr "onepassword" -#: src/reference/tazuna-yaml.md:196 src/reference/secret-providers.md:54 +#: src/reference/tazuna-yaml.md:298 src/reference/secret-providers.md:54 #: src/reference/secret-providers.md:101 msgid "ops-envfile" msgstr "ops-envfile" -#: src/reference/tazuna-yaml.md:197 src/reference/tazuna-yaml.md:198 +#: src/reference/tazuna-yaml.md:299 src/reference/tazuna-yaml.md:300 #: src/reference/secret-providers.md:55 src/reference/secret-providers.md:56 #: src/reference/secret-providers.md:102 src/reference/secret-providers.md:103 msgid "envfile" msgstr "envfile" -#: src/reference/tazuna-yaml.md:199 src/reference/secret-providers.md:57 +#: src/reference/tazuna-yaml.md:301 src/reference/secret-providers.md:57 #: src/reference/secret-providers.md:104 msgid "./secrets/ops.env" msgstr "./secrets/ops.env" -#: src/reference/tazuna-yaml.md:204 -msgid "" -"GenesisSecret の `spec.provider` から参照される名前。`default-op` は予約名で" -"使用不可。" +#: src/reference/tazuna-yaml.md:306 +msgid "GenesisSecret の `spec.provider` から参照される名前。`default-op` は予約名で使用不可。" msgstr "" "The name referenced from a GenesisSecret's `spec.provider`. `default-op` is " "a reserved name and cannot be used." -#: src/reference/tazuna-yaml.md:205 +#: src/reference/tazuna-yaml.md:307 msgid "provider 種別。`onepassword` または `envfile`。" msgstr "The provider type. `onepassword` or `envfile`." -#: src/reference/tazuna-yaml.md:206 src/reference/secret-providers.md:68 +#: src/reference/tazuna-yaml.md:308 src/reference/secret-providers.md:68 msgid "`onepassword`" msgstr "`onepassword`" -#: src/reference/tazuna-yaml.md:206 src/reference/tazuna-yaml.md:207 +#: src/reference/tazuna-yaml.md:308 src/reference/tazuna-yaml.md:309 #: src/reference/secret-providers.md:68 src/reference/secret-providers.md:69 msgid "△" msgstr "△" -#: src/reference/tazuna-yaml.md:206 +#: src/reference/tazuna-yaml.md:308 msgid "`type: onepassword` のときに使う追加設定(現状は空オブジェクト)。" msgstr "" "Additional config used when `type: onepassword` (currently an empty object)." -#: src/reference/tazuna-yaml.md:207 src/reference/secret-providers.md:69 +#: src/reference/tazuna-yaml.md:309 src/reference/secret-providers.md:69 msgid "`envfile`" msgstr "`envfile`" -#: src/reference/tazuna-yaml.md:207 +#: src/reference/tazuna-yaml.md:309 msgid "`type: envfile` のときに使う追加設定。`path` を持つ。" msgstr "Additional config used when `type: envfile`. Has `path`." -#: src/reference/tazuna-yaml.md:209 +#: src/reference/tazuna-yaml.md:311 msgid "詳細は [Secret provider](./secret-providers.md) を参照してください。" msgstr "See [Secret provider](./secret-providers.md) for details." -#: src/reference/tazuna-yaml.md:211 +#: src/reference/tazuna-yaml.md:313 msgid "IncludeFile" msgstr "IncludeFile" -#: src/reference/tazuna-yaml.md:213 +#: src/reference/tazuna-yaml.md:315 msgid "" -"`manifests[].includes[]` の各要素です。別の `tazuna.yaml` を読み込み、その " -"`manifests[]` を展開します。" +"`manifests[].includes[]` の各要素です。別の `tazuna.yaml` を読み込み、その `manifests[]` " +"を展開します。" msgstr "" "Each element of `manifests[].includes[]`. Loads another `tazuna.yaml` and " "expands its `manifests[]`." -#: src/reference/tazuna-yaml.md:218 -msgid "" -"読み込む `tazuna.yaml` のパス。**呼び出し元の `tazuna.yaml` からの相対** で書" -"きます。" +#: src/reference/tazuna-yaml.md:320 +msgid "読み込む `tazuna.yaml` のパス。**呼び出し元の `tazuna.yaml` からの相対** で書きます。" msgstr "" "Path to the `tazuna.yaml` to load. Written **relative to the calling " "`tazuna.yaml`**." -#: src/reference/tazuna-yaml.md:220 +#: src/reference/tazuna-yaml.md:322 msgid "includes を使う" msgstr "Using includes" -#: src/reference/tazuna-yaml.md:225 +#: src/reference/tazuna-yaml.md:327 #: src/reference/manifest-types/kustomize.md:40 msgid "infra" msgstr "infra" -#: src/reference/tazuna-yaml.md:227 +#: src/reference/tazuna-yaml.md:329 msgid "./infra/tazuna.yaml" msgstr "./infra/tazuna.yaml" -#: src/reference/tazuna-yaml.md:228 +#: src/reference/tazuna-yaml.md:330 msgid "./addons/tazuna.yaml" msgstr "./addons/tazuna.yaml" -#: src/reference/tazuna-yaml.md:231 +#: src/reference/tazuna-yaml.md:333 msgid "" -"`includes` を持つ Manifest は、自身が持つ `type` / `path` / `tags` などの " -"「Manifest 本体」のフィールドは **無視** されます。" +"`includes` を持つ Manifest は、自身が持つ `type` / `path` / `tags` などの 「Manifest " +"本体」のフィールドは **無視** されます。" msgstr "" "Manifests that have `includes` have their own \"Manifest-body\" fields " "(`type` / `path` / `tags`, etc.) **ignored**." -#: src/reference/tazuna-yaml.md:233 +#: src/reference/tazuna-yaml.md:335 msgid "" -"`includes` は **ネスト不可** です。include 先の `tazuna.yaml` が さらに " -"`includes` を持っていても展開されません。" +"`includes` は **ネスト不可** です。include 先の `tazuna.yaml` が さらに `includes` " +"を持っていても展開されません。" msgstr "" "`includes` is **non-nestable**. Even if the included `tazuna.yaml` has its " "own `includes`, those are not expanded." -#: src/reference/tazuna-yaml.md:235 +#: src/reference/tazuna-yaml.md:337 msgid "" -"include 先で定義された Manifest の `name` も含めて、最終的な全 Manifest 間で " -"`name` がユニークである必要があります。" +"include 先で定義された Manifest の `name` も含めて、最終的な全 Manifest 間で `name` " +"がユニークである必要があります。" msgstr "" "`name`s of Manifests defined in the include target must also be unique " "across all final Manifests." -#: src/reference/tazuna-yaml.md:238 +#: src/reference/tazuna-yaml.md:340 msgid "Manifest type 別フィールド" msgstr "Manifest-Type-Specific Fields" -#: src/reference/tazuna-yaml.md:240 +#: src/reference/tazuna-yaml.md:342 msgid "" "`type` に対応するフィールド(`kustomize` / `helmfile` / `genesisSecret` / " "`oras`)は、それぞれ専用のリファレンスページに切り出しています。" @@ -5925,23 +6169,23 @@ msgstr "" "`genesisSecret` / `oras`) are each broken out to their own dedicated " "reference page." -#: src/reference/tazuna-yaml.md:243 +#: src/reference/tazuna-yaml.md:345 msgid "ここでは存在と最低限の役割だけを示します。" msgstr "Here we only indicate their existence and minimum role." -#: src/reference/tazuna-yaml.md:245 src/contributing/development.md:59 +#: src/reference/tazuna-yaml.md:347 src/contributing/development.md:59 msgid "役割" msgstr "Role" -#: src/reference/tazuna-yaml.md:247 +#: src/reference/tazuna-yaml.md:349 msgid "" -"[`type: kustomize`](./manifest-types/kustomize.md) 向けオプション。" -"`defaultNamespace` を持つ。" +"[`type: kustomize`](./manifest-types/kustomize.md) " +"向けオプション。`defaultNamespace` を持つ。" msgstr "" "Options for [`type: kustomize`](./manifest-types/kustomize.md). Has " "`defaultNamespace`." -#: src/reference/tazuna-yaml.md:248 +#: src/reference/tazuna-yaml.md:350 msgid "" "[`type: helmfile`](./manifest-types/helmfile.md) 向けオプション。`vars` / " "`includeCRDs` / `wait` / `kubeVersion` などを持つ。" @@ -5949,139 +6193,126 @@ msgstr "" "Options for [`type: helmfile`](./manifest-types/helmfile.md). Has `vars` / " "`includeCRDs` / `wait` / `kubeVersion` and so on." -#: src/reference/tazuna-yaml.md:249 +#: src/reference/tazuna-yaml.md:351 msgid "" -"[`type: genesissecret`](./manifest-types/genesissecret.md) 向けの拡張点。現" -"バージョンでは空オブジェクト。" +"[`type: genesissecret`](./manifest-types/genesissecret.md) " +"向けの拡張点。現バージョンでは空オブジェクト。" msgstr "" -"Extension point for [`type: genesissecret`](./manifest-types/" -"genesissecret.md). An empty object in the current version." +"Extension point for [`type: genesissecret`](./manifest-" +"types/genesissecret.md). An empty object in the current version." -#: src/reference/tazuna-yaml.md:250 +#: src/reference/tazuna-yaml.md:352 msgid "" -"[`type: oras`](./manifest-types/oras.md) 向けオプション。`reference` / " -"`delegate` を持つ。" +"[`type: oras`](./manifest-types/oras.md) 向けオプション。`reference` / `delegate` " +"を持つ。" msgstr "" "Options for [`type: oras`](./manifest-types/oras.md). Has `reference` / " "`delegate`." -#: src/reference/tazuna-yaml.md:252 +#: src/reference/tazuna-yaml.md:354 msgid "`tests` フィールド" msgstr "`tests` Field" -#: src/reference/tazuna-yaml.md:254 +#: src/reference/tazuna-yaml.md:356 msgid "" -"`spec.tests` および `manifests[].tests` の要素である `TestPluginSpec` の詳細" -"仕様は [Test plugin](./test-plugin.md) を参照してください。 ここでは置かれる" -"位置と実行タイミングだけを示します。" +"`spec.tests` および `manifests[].tests` の要素である `TestPluginSpec` の詳細仕様は [Test " +"plugin](./test-plugin.md) を参照してください。 ここでは置かれる位置と実行タイミングだけを示します。" msgstr "" "For the detailed spec of `TestPluginSpec` (the element type of `spec.tests` " "and `manifests[].tests`), see [Test plugin](./test-plugin.md). Here we only " "describe placement and timing." -#: src/reference/tazuna-yaml.md:258 -msgid "" -"**全体 `tests`** (`spec.tests`): すべての Manifest 適用が終わったあとに実行さ" -"れます。" +#: src/reference/tazuna-yaml.md:360 +msgid "**全体 `tests`** (`spec.tests`): すべての Manifest 適用が終わったあとに実行されます。" msgstr "" "**Overall `tests`** (`spec.tests`): executed after all Manifests have been " "applied." -#: src/reference/tazuna-yaml.md:259 -msgid "" -"**個別 `tests`** (`manifests[].tests`): その Manifest の適用直後に実行されま" -"す。" +#: src/reference/tazuna-yaml.md:361 +msgid "**個別 `tests`** (`manifests[].tests`): その Manifest の適用直後に実行されます。" msgstr "" "**Per-Manifest `tests`** (`manifests[].tests`): executed immediately after " "that Manifest is applied." -#: src/reference/tazuna-yaml.md:261 +#: src/reference/tazuna-yaml.md:363 msgid "バリデーションのまとめ" msgstr "Validation Summary" -#: src/reference/tazuna-yaml.md:263 +#: src/reference/tazuna-yaml.md:365 msgid "" -"`tazuna check` が `tazuna.yaml` に対して行う検証を一覧にしておきます。 **クラ" -"スタには触れず**、ここで失敗するものはすべて事前に弾けます。" +"`tazuna check` が `tazuna.yaml` に対して行う検証を一覧にしておきます。 " +"**クラスタには触れず**、ここで失敗するものはすべて事前に弾けます。" msgstr "" "Below is the list of validations `tazuna check` performs against " "`tazuna.yaml`. **No cluster access is involved**, and anything that fails " "here is caught in advance." -#: src/reference/tazuna-yaml.md:266 +#: src/reference/tazuna-yaml.md:368 msgid "`apiVersion` / `kind` を設定するなら値が正規値と完全一致すること。" msgstr "" "If `apiVersion` / `kind` are set, they must equal the canonical values " "exactly." -#: src/reference/tazuna-yaml.md:267 +#: src/reference/tazuna-yaml.md:369 msgid "" -"`spec.minimumSupportedTazunaVersion` を設定するなら semver として妥当で、実行" -"中の tazuna のバージョンがそれ以上であること(ローカルビルドは比較をスキッ" -"プ)。なお この検証は `check` に限らず、`tazuna.yaml` を読み込むすべての操作" -"で実行されます。" +"`spec.minimumSupportedTazunaVersion` を設定するなら semver として妥当で、実行中の tazuna " +"のバージョンがそれ以上であること(ローカルビルドは比較をスキップ)。なお この検証は `check` に限らず、`tazuna.yaml` " +"を読み込むすべての操作で実行されます。" msgstr "" "If `spec.minimumSupportedTazunaVersion` is set, it must be a valid semver " "and the running tazuna's version must be at least that value (local builds " "skip the comparison). Note that this check runs not only on `check` but on " "every operation that loads `tazuna.yaml`." -#: src/reference/tazuna-yaml.md:270 +#: src/reference/tazuna-yaml.md:372 msgid "`spec.manifests[]` の各要素について:" msgstr "For each element of `spec.manifests[]`:" -#: src/reference/tazuna-yaml.md:271 +#: src/reference/tazuna-yaml.md:373 msgid "`includes` が無い場合: `path` と `type` が設定されていること。" msgstr "When `includes` is absent: `path` and `type` must be set." -#: src/reference/tazuna-yaml.md:272 +#: src/reference/tazuna-yaml.md:374 msgid "" -"`type` が既知の値(`kustomize` / `helmfile` / `genesissecret` / `oras`)であ" -"ること。" +"`type` が既知の値(`kustomize` / `helmfile` / `genesissecret` / `oras`)であること。" msgstr "" "`type` must be a known value (`kustomize` / `helmfile` / `genesissecret` / " "`oras`)." -#: src/reference/tazuna-yaml.md:274 +#: src/reference/tazuna-yaml.md:376 msgid "`path` の指す場所が実在すること。" msgstr "The location pointed to by `path` must exist." -#: src/reference/tazuna-yaml.md:275 -msgid "" -"`spec.manifests[].name` が必須・使用可能文字・ユニーク・予約語禁止を満たすこ" -"と。" +#: src/reference/tazuna-yaml.md:377 +msgid "`spec.manifests[].name` が必須・使用可能文字・ユニーク・予約語禁止を満たすこと。" msgstr "" "`spec.manifests[].name` must be present, use allowed characters, be unique, " "and not be a reserved word." -#: src/reference/tazuna-yaml.md:276 -msgid "" -"`spec.manifests[].dependsOn` が既存 Manifest 名のみを参照し、自己参照・循環依" -"存を含まないこと。" +#: src/reference/tazuna-yaml.md:378 +msgid "`spec.manifests[].dependsOn` が既存 Manifest 名のみを参照し、自己参照・循環依存を含まないこと。" msgstr "" -"`spec.manifests[].dependsOn` must reference only existing Manifest names and " -"contain no self-reference or circular dependency." +"`spec.manifests[].dependsOn` must reference only existing Manifest names and" +" contain no self-reference or circular dependency." -#: src/reference/tazuna-yaml.md:277 +#: src/reference/tazuna-yaml.md:379 msgid "`spec.context_matches` が正規表現としてコンパイル可能であること。" msgstr "`spec.context_matches` must be compilable as regular expressions." -#: src/reference/tazuna-yaml.md:278 -msgid "" -"`spec.context_match_mode` が `or` / `and` / 未設定のいずれかであること。" +#: src/reference/tazuna-yaml.md:380 +msgid "`spec.context_match_mode` が `or` / `and` / 未設定のいずれかであること。" msgstr "`spec.context_match_mode` must be one of `or` / `and` / unset." -#: src/reference/tazuna-yaml.md:279 +#: src/reference/tazuna-yaml.md:381 msgid "" -"`spec.providers[]` の各要素について: `name` がユニークかつ非空、`default-op` " -"を含まないこと、 `type` が `onepassword` / `envfile` のいずれかであること、" -"`type` と整合した config を持つこと。" +"`spec.providers[]` の各要素について: `name` がユニークかつ非空、`default-op` を含まないこと、 `type` が" +" `onepassword` / `envfile` のいずれかであること、`type` と整合した config を持つこと。" msgstr "" -"For each element of `spec.providers[]`: `name` must be unique and non-empty, " -"must not be `default-op`, `type` must be one of `onepassword` / `envfile`, " +"For each element of `spec.providers[]`: `name` must be unique and non-empty," +" must not be `default-op`, `type` must be one of `onepassword` / `envfile`, " "and it must have config consistent with `type`." -#: src/reference/tazuna-yaml.md:281 +#: src/reference/tazuna-yaml.md:383 msgid "" "`type: helmfile` の場合: `helmfile.vars` の各値が `env` / `static` / `op` の " "いずれかを満たすこと(詳細は helmfile のリファレンスページ)。" @@ -6089,28 +6320,25 @@ msgstr "" "For `type: helmfile`: each value in `helmfile.vars` must satisfy one of " "`env` / `static` / `op` (see the helmfile reference page)." -#: src/reference/tazuna-yaml.md:283 +#: src/reference/tazuna-yaml.md:385 msgid "" -"`type: oras` の場合: `oras.reference` が必須、`oras.delegate.type` が " -"`helmfile` / `kustomize` のいずれかであること。" +"`type: oras` の場合: `oras.reference` が必須、`oras.delegate.type` が `helmfile` / " +"`kustomize` のいずれかであること。" msgstr "" "For `type: oras`: `oras.reference` is required, and `oras.delegate.type` " "must be either `helmfile` or `kustomize`." -#: src/reference/tazuna-yaml.md:285 -msgid "" -"`includes` を指定する場合: 各 `include.path` が必須で、ファイルが実在するこ" -"と。" +#: src/reference/tazuna-yaml.md:387 +msgid "`includes` を指定する場合: 各 `include.path` が必須で、ファイルが実在すること。" msgstr "" "When specifying `includes`: each `include.path` is required and the file " "must exist." #: src/reference/tazuna-hint-yaml.md:3 msgid "" -"`tazuna.hint.yaml` は、`type: helmfile` の Manifest で使う `vars` に対して **" -"「どんな値が取りうるか」「どれが必須か」** を宣言的に縛るためのヒントファイル" -"です。 helmfile Manifest と同じディレクトリに置き、Tazuna が `vars` を解決す" -"る過程で参照します。" +"`tazuna.hint.yaml` は、`type: helmfile` の Manifest で使う `vars` に対して " +"**「どんな値が取りうるか」「どれが必須か」** を宣言的に縛るためのヒントファイルです。 helmfile Manifest " +"と同じディレクトリに置き、Tazuna が `vars` を解決する過程で参照します。" msgstr "" "`tazuna.hint.yaml` is a hint file that declaratively constrains **\"what " "values can be taken\"** and **\"which are required\"** for the `vars` of a " @@ -6119,8 +6347,7 @@ msgstr "" #: src/reference/tazuna-hint-yaml.md:7 msgid "" -"`tazuna.yaml` 本体のスキーマは [`tazuna.yaml` スキーマ](./tazuna-yaml.md) を" -"参照してください。" +"`tazuna.yaml` 本体のスキーマは [`tazuna.yaml` スキーマ](./tazuna-yaml.md) を参照してください。" msgstr "" "For the schema of `tazuna.yaml` itself, see [`tazuna.yaml` schema](./tazuna-" "yaml.md)." @@ -6131,19 +6358,18 @@ msgstr "Placement and Loading" #: src/reference/tazuna-hint-yaml.md:11 msgid "" -"Tazuna は **helmfile Manifest の `path` ディレクトリ直下** から " -"`tazuna.hint.yaml` を探します。" +"Tazuna は **helmfile Manifest の `path` ディレクトリ直下** から `tazuna.hint.yaml` " +"を探します。" msgstr "" -"Tazuna looks for `tazuna.hint.yaml` **directly under the helmfile Manifest's " -"`path` directory**." +"Tazuna looks for `tazuna.hint.yaml` **directly under the helmfile Manifest's" +" `path` directory**." #: src/reference/tazuna-hint-yaml.md:13 msgid "ファイル名は `tazuna.hint.yaml` 固定。" msgstr "The file name is fixed as `tazuna.hint.yaml`." #: src/reference/tazuna-hint-yaml.md:14 -msgid "" -"存在しなければそのまま無視されます(後方互換のため、エラーにはなりません)。" +msgid "存在しなければそのまま無視されます(後方互換のため、エラーにはなりません)。" msgstr "" "If absent, it is silently ignored (no error, for backward compatibility)." @@ -6168,8 +6394,8 @@ msgid "リソース種別を示します。値は現状検証されません。" msgstr "Indicates the resource kind. The value is currently not validated." #: src/reference/tazuna-hint-yaml.md:25 src/reference/tazuna-hint-yaml.md:100 -#: src/reference/manifest-types/helmfile.md:23 -#: src/reference/manifest-types/helmfile.md:31 +#: src/reference/manifest-types/helmfile.md:64 +#: src/reference/manifest-types/helmfile.md:72 msgid "`vars`" msgstr "`vars`" @@ -6195,9 +6421,8 @@ msgstr "Top-level validation rules that span vars." #: src/reference/tazuna-hint-yaml.md:28 msgid "" -"`apiVersion` / `kind` は **値の検証は行われません** が、慣習として " -"`apiVersion: tazuna.pepabo.com/v1` / `kind: TazunaHint` を書いておくと、 後で" -"検証が入った場合にも揃えやすくなります。" +"`apiVersion` / `kind` は **値の検証は行われません** が、慣習として `apiVersion: " +"tazuna.pepabo.com/v1` / `kind: TazunaHint` を書いておくと、 後で検証が入った場合にも揃えやすくなります。" msgstr "" "`apiVersion` / `kind` are **not validated for their values**, but by " "convention writing `apiVersion: tazuna.pepabo.com/v1` / `kind: TazunaHint` " @@ -6208,7 +6433,7 @@ msgid "TazunaHint" msgstr "TazunaHint" #: src/reference/tazuna-hint-yaml.md:36 src/reference/tazuna-hint-yaml.md:110 -#: src/reference/manifest-types/helmfile.md:107 +#: src/reference/manifest-types/helmfile.md:148 msgid "vars" msgstr "vars" @@ -6241,8 +6466,8 @@ msgid "`required`" msgstr "`required`" #: src/reference/tazuna-hint-yaml.md:53 src/reference/genesis-secret.md:51 -#: src/reference/manifest-types/helmfile.md:24 -#: src/reference/manifest-types/helmfile.md:27 +#: src/reference/manifest-types/helmfile.md:65 +#: src/reference/manifest-types/helmfile.md:68 #: src/reference/manifest-types/oras.md:25 #: src/reference/manifest-types/oras.md:26 src/reference/cli/init.md:62 #: src/reference/cli/apply.md:52 src/reference/cli/apply.md:53 @@ -6278,9 +6503,7 @@ msgid "`format`" msgstr "`format`" #: src/reference/tazuna-hint-yaml.md:56 -msgid "" -"値のフォーマット検証ルール。`type: string` のときだけ指定可能。詳細は " -"[format](#format) 参照。" +msgid "値のフォーマット検証ルール。`type: string` のときだけ指定可能。詳細は [format](#format) 参照。" msgstr "" "Value format-validation rule. Only available when `type: string`. See " "[format](#format) for details." @@ -6291,9 +6514,8 @@ msgstr "`required_with`" #: src/reference/tazuna-hint-yaml.md:57 msgid "" -"「ここで挙げた var のいずれかが提供されているとき、この var も必須」を意味す" -"る条件付き必須。`required: true` との併用不可。参照先は `vars` に存在しなけれ" -"ばなりません。" +"「ここで挙げた var のいずれかが提供されているとき、この var も必須」を意味する条件付き必須。`required: true` " +"との併用不可。参照先は `vars` に存在しなければなりません。" msgstr "" "Conditional-required meaning \"if any of the vars listed here is provided, " "then this var is also required.\" Cannot be combined with `required: true`. " @@ -6305,9 +6527,8 @@ msgstr "`required_without`" #: src/reference/tazuna-hint-yaml.md:58 msgid "" -"「ここで挙げた var が **すべて** 未提供のとき、この var が必須」を意味する条" -"件付き必須。`required: true` との併用不可。参照先は `vars` に存在しなければな" -"りません。" +"「ここで挙げた var が **すべて** 未提供のとき、この var が必須」を意味する条件付き必須。`required: true` " +"との併用不可。参照先は `vars` に存在しなければなりません。" msgstr "" "Conditional-required meaning \"if **all** vars listed here are unprovided, " "then this var is required.\" Cannot be combined with `required: true`. " @@ -6318,8 +6539,7 @@ msgid "値が未提供のときの振る舞い" msgstr "Behavior When a Value Is Not Provided" #: src/reference/tazuna-hint-yaml.md:62 -msgid "" -"helmfile Manifest 側の `vars` 解決後、各 var に対して次の順で処理されます。" +msgid "helmfile Manifest 側の `vars` 解決後、各 var に対して次の順で処理されます。" msgstr "" "After helmfile-Manifest-side `vars` resolution, each var is processed in " "this order." @@ -6337,19 +6557,15 @@ msgid "`default` があればその値を注入する。" msgstr "If a `default` is set, inject that value." #: src/reference/tazuna-hint-yaml.md:67 -msgid "" -"それ以外は **型ごとのゼロ値** を注入する(`string` → `\"\"`、`slice` → `[]`、" -"`map` → `{}`)。" +msgid "それ以外は **型ごとのゼロ値** を注入する(`string` → `\"\"`、`slice` → `[]`、`map` → `{}`)。" msgstr "" "Otherwise, inject the **type-specific zero value** (`string` → `\"\"`, " "`slice` → `[]`, `map` → `{}`)." #: src/reference/tazuna-hint-yaml.md:69 msgid "" -"条件付き必須(`required_with` / `required_without`)の判定は、上記のゼロ値注" -"入の結果ではなく、 **ユーザーから明示的に提供された値の集合** に対して行われ" -"ます。 ゼロ値が入った var が「提供済み」と誤判定されないようにするための実装" -"です。" +"条件付き必須(`required_with` / `required_without`)の判定は、上記のゼロ値注入の結果ではなく、 " +"**ユーザーから明示的に提供された値の集合** に対して行われます。 ゼロ値が入った var が「提供済み」と誤判定されないようにするための実装です。" msgstr "" "Conditional-required (`required_with` / `required_without`) evaluation is " "done against **the set of values explicitly provided by the user**, not the " @@ -6362,12 +6578,11 @@ msgstr "format" #: src/reference/tazuna-hint-yaml.md:75 msgid "" -"`format` は `type: string` の var に対する文字列フォーマット検証です。 **値が" -"空文字列(ゼロ値注入を含む)の場合は検証はスキップ** されます。 非空文字列が" -"入っているときだけ検証が走ります。" +"`format` は `type: string` の var に対する文字列フォーマット検証です。 " +"**値が空文字列(ゼロ値注入を含む)の場合は検証はスキップ** されます。 非空文字列が入っているときだけ検証が走ります。" msgstr "" -"`format` is string-format validation for `type: string` vars. **If the value " -"is an empty string (including zero-value injection), validation is " +"`format` is string-format validation for `type: string` vars. **If the value" +" is an empty string (including zero-value injection), validation is " "skipped**. Validation runs only when a non-empty string is present." #: src/reference/tazuna-hint-yaml.md:79 src/reference/state.md:15 @@ -6386,9 +6601,7 @@ msgid "`hostname`" msgstr "`hostname`" #: src/reference/tazuna-hint-yaml.md:81 -msgid "" -"RFC 952 / 1123 に準拠したホスト名パターン(英数字 / `-` / `.`、各ラベルは英数" -"字で開始・終了)" +msgid "RFC 952 / 1123 に準拠したホスト名パターン(英数字 / `-` / `.`、各ラベルは英数字で開始・終了)" msgstr "" "RFC 952 / 1123 compliant hostname pattern (alphanumerics / `-` / `.`; each " "label starts and ends with alphanumerics)" @@ -6439,9 +6652,7 @@ msgid "`semver`" msgstr "`semver`" #: src/reference/tazuna-hint-yaml.md:87 -msgid "" -"セマンティックバージョン。`v` 接頭辞はオプション。pre-release / build " -"metadata まで対応" +msgid "セマンティックバージョン。`v` 接頭辞はオプション。pre-release / build metadata まで対応" msgstr "" "Semantic version. The `v` prefix is optional. Pre-release / build metadata " "are supported" @@ -6464,8 +6675,7 @@ msgstr "HintRule" #: src/reference/tazuna-hint-yaml.md:94 msgid "" -"`rules` は var 横断のバリデーションを宣言するためのトップレベルルールです。 " -"個別 var の処理が一通り終わったあとに評価されます。" +"`rules` は var 横断のバリデーションを宣言するためのトップレベルルールです。 個別 var の処理が一通り終わったあとに評価されます。" msgstr "" "`rules` are top-level rules for declaring cross-var validations. They are " "evaluated after per-var processing is complete." @@ -6475,9 +6685,7 @@ msgid "ルール種別。現状は `oneof_required` のみ。" msgstr "Rule kind. Currently only `oneof_required`." #: src/reference/tazuna-hint-yaml.md:100 -msgid "" -"ルールが対象とする var 名の配列。**2 件以上** が必要。参照先は `vars` に存在" -"しなければなりません。" +msgid "ルールが対象とする var 名の配列。**2 件以上** が必要。参照先は `vars` に存在しなければなりません。" msgstr "" "Array of var names targeted by the rule. **At least 2 entries** required. " "References must exist in `vars`." @@ -6495,9 +6703,7 @@ msgid "`oneof_required`" msgstr "`oneof_required`" #: src/reference/tazuna-hint-yaml.md:105 -msgid "" -"`vars` に挙げた var のうち、**少なくとも 1 つがユーザーから提供されていなけれ" -"ばエラー**、というルールです。" +msgid "`vars` に挙げた var のうち、**少なくとも 1 つがユーザーから提供されていなければエラー**、というルールです。" msgstr "" "A rule that errors **unless at least one of the vars listed in `vars` is " "provided by the user**." @@ -6530,18 +6736,17 @@ msgstr "" #: src/reference/tazuna-hint-yaml.md:116 msgid "" -"判定基準は条件付き必須と同じく、ゼロ値注入前の **ユーザー提供** の値の集合で" -"す。 `default` で値が入った var は「提供された」とは扱われません。" +"判定基準は条件付き必須と同じく、ゼロ値注入前の **ユーザー提供** の値の集合です。 `default` で値が入った var " +"は「提供された」とは扱われません。" msgstr "" "The judgment criterion, like conditional-required, is the set of **user-" "provided** values before zero-value injection. Vars whose values came from " "`default` are not treated as \"provided.\"" #: src/reference/tazuna-hint-yaml.md:121 -msgid "" -"`tazuna.hint.yaml` がロードされると、まずスキーマレベルで次の検証が行われま" -"す。" -msgstr "When `tazuna.hint.yaml` is loaded, schema-level validation runs first." +msgid "`tazuna.hint.yaml` がロードされると、まずスキーマレベルで次の検証が行われます。" +msgstr "" +"When `tazuna.hint.yaml` is loaded, schema-level validation runs first." #: src/reference/tazuna-hint-yaml.md:123 msgid "`vars[*].type` が `string` / `slice` / `map` のいずれかであること。" @@ -6561,16 +6766,14 @@ msgstr "`vars[*].format` must be a known value (see [format](#format))." #: src/reference/tazuna-hint-yaml.md:127 msgid "" -"`vars[*].required_with` / `vars[*].required_without` の参照先が `vars` に存在" -"すること。" +"`vars[*].required_with` / `vars[*].required_without` の参照先が `vars` に存在すること。" msgstr "" "References of `vars[*].required_with` / `vars[*].required_without` must " "exist in `vars`." #: src/reference/tazuna-hint-yaml.md:128 msgid "" -"`vars[*].required: true` と `required_with` / `required_without` を併用してい" -"ないこと。" +"`vars[*].required: true` と `required_with` / `required_without` を併用していないこと。" msgstr "" "`vars[*].required: true` and `required_with` / `required_without` must not " "be combined." @@ -6590,9 +6793,8 @@ msgstr "References of `rules[*].vars` must exist in `vars`." #: src/reference/tazuna-hint-yaml.md:133 msgid "" -"それらを通過したのち、helmfile Manifest の `vars` 解決結果に対して 次の検証が" -"走ります([値が未提供のときの振る舞い](#値が未提供のときの振る舞い) と " -"[format](#format) を参照)。" +"それらを通過したのち、helmfile Manifest の `vars` 解決結果に対して " +"次の検証が走ります([値が未提供のときの振る舞い](#値が未提供のときの振る舞い) と [format](#format) を参照)。" msgstr "" "After those pass, the following validations run against the result of the " "helmfile Manifest's `vars` resolution (see [Behavior When a Value Is Not " @@ -6600,11 +6802,11 @@ msgstr "" #: src/reference/tazuna-hint-yaml.md:137 msgid "" -"hint で宣言された型と、helmfile 側に渡された値の型が整合すること (例: " -"`type: slice` と宣言した var に `staticMap` が来たらエラー)。" +"hint で宣言された型と、helmfile 側に渡された値の型が整合すること (例: `type: slice` と宣言した var に " +"`staticMap` が来たらエラー)。" msgstr "" -"The type declared in the hint matches the type of the value passed in on the " -"helmfile side (e.g. an error if a var declared `type: slice` receives a " +"The type declared in the hint matches the type of the value passed in on the" +" helmfile side (e.g. an error if a var declared `type: slice` receives a " "`staticMap`)." #: src/reference/tazuna-hint-yaml.md:139 @@ -6616,20 +6818,16 @@ msgid "`required_with` / `required_without` の条件を満たしていること msgstr "`required_with` / `required_without` conditions are satisfied." #: src/reference/tazuna-hint-yaml.md:141 -msgid "" -"`format` を持つ string var の値が、空文字列でない場合に format パターンを満た" -"していること。" +msgid "`format` を持つ string var の値が、空文字列でない場合に format パターンを満たしていること。" msgstr "" "For string vars with a `format`, the value (if non-empty) satisfies the " "format pattern." #: src/reference/tazuna-hint-yaml.md:142 -msgid "" -"`rules` を満たしていること(`oneof_required` の少なくとも 1 つが提供されてい" -"ること)。" +msgid "`rules` を満たしていること(`oneof_required` の少なくとも 1 つが提供されていること)。" msgstr "" -"`rules` are satisfied (e.g., at least one of the vars in `oneof_required` is " -"provided)." +"`rules` are satisfied (e.g., at least one of the vars in `oneof_required` is" +" provided)." #: src/reference/tazuna-hint-yaml.md:146 msgid "用語: [`tazuna.hint.yaml`](../concepts/glossary.md#tazunahintyaml)" @@ -6637,34 +6835,32 @@ msgstr "Term: [`tazuna.hint.yaml`](../concepts/glossary.md#tazunahintyaml)" #: src/reference/tazuna-hint-yaml.md:147 msgid "" -"helmfile Manifest の `vars` 側のスキーマ: [`tazuna.yaml` の Manifest type 別" -"フィールド](./tazuna-yaml.md#manifest-type-別フィールド)" +"helmfile Manifest の `vars` 側のスキーマ: [`tazuna.yaml` の Manifest type " +"別フィールド](./tazuna-yaml.md#manifest-type-別フィールド)" msgstr "" -"Schema of helmfile.vars: [`tazuna.yaml` manifest-type-specific fields](./" -"tazuna-yaml.md#manifest-type-別フィールド)" +"Schema of helmfile.vars: [`tazuna.yaml` manifest-type-specific " +"fields](./tazuna-yaml.md#manifest-type-別フィールド)" #: src/reference/genesis-secret.md:3 msgid "" -"GenesisSecret は、外部の Secret ストア(現バージョンでは 1Password)にある秘" -"匿情報を取得し、 Kubernetes Secret として **生成** するための宣言です。" +"GenesisSecret は、外部の Secret ストア(現バージョンでは 1Password)にある秘匿情報を取得し、 Kubernetes " +"Secret として **生成** するための宣言です。" msgstr "" -"GenesisSecret is a declaration for retrieving secret values from an external " -"secret store (currently 1Password) and **generating** them as Kubernetes " +"GenesisSecret is a declaration for retrieving secret values from an external" +" secret store (currently 1Password) and **generating** them as Kubernetes " "Secrets." #: src/reference/genesis-secret.md:6 msgid "" -"GenesisSecret は Kubernetes の CRD ではなく、**Tazuna が読む YAML スキーマ** " -"です。 クラスタに `GenesisSecret` リソースが現れるわけではなく、適用結果とし" -"て **`Secret`** が現れます。" +"GenesisSecret は Kubernetes の CRD ではなく、**Tazuna が読む YAML スキーマ** です。 クラスタに " +"`GenesisSecret` リソースが現れるわけではなく、適用結果として **`Secret`** が現れます。" msgstr "" "GenesisSecret is not a Kubernetes CRD but **a YAML schema that Tazuna " "reads**. No `GenesisSecret` resource appears in the cluster; the applied " "result is a **`Secret`**." #: src/reference/genesis-secret.md:9 -msgid "" -"`tazuna.yaml` からは `type: genesissecret` の Manifest として参照します。" +msgid "`tazuna.yaml` からは `type: genesissecret` の Manifest として参照します。" msgstr "" "From `tazuna.yaml`, it is referenced as a Manifest with `type: " "genesissecret`." @@ -6696,8 +6892,8 @@ msgstr "./genesissecrets/aws.yaml" #: src/reference/genesis-secret.md:20 msgid "" -"`type: genesissecret` の `path` は **YAML ファイル 1 つを直接指します** (他" -"の Manifest type のようにディレクトリを指すのではありません)。" +"`type: genesissecret` の `path` は **YAML ファイル 1 つを直接指します** (他の Manifest type " +"のようにディレクトリを指すのではありません)。" msgstr "" "The `path` for `type: genesissecret` **points directly to a single YAML " "file** (unlike other Manifest types that point to a directory)." @@ -6716,9 +6912,9 @@ msgstr "The GenesisSecret body." #: src/reference/genesis-secret.md:31 msgid "" -"`apiVersion` / `kind` のフィールドは構造体に対応する宣言がなく、書いても 読ま" -"れずに無視されますが、慣習として `apiVersion: tazuna.pepabo.com/v1` / `kind: " -"GenesisSecret` を書いておくと、後から検証が入っても揃えやすくなります。" +"`apiVersion` / `kind` のフィールドは構造体に対応する宣言がなく、書いても 読まれずに無視されますが、慣習として " +"`apiVersion: tazuna.pepabo.com/v1` / `kind: GenesisSecret` " +"を書いておくと、後から検証が入っても揃えやすくなります。" msgstr "" "There is no struct field corresponding to `apiVersion` / `kind`; writing " "them is ignored without being read. By convention, writing `apiVersion: " @@ -6736,9 +6932,9 @@ msgstr "`provider`" #: src/reference/genesis-secret.md:39 msgid "" "取得元 Provider の名前。`tazuna.yaml` の [`spec.providers[]`](./tazuna-" -"yaml.md#providers) に宣言された `name` のいずれか、または組み込みの `default-" -"op` を指定します。空文字のときは後方互換のため `default-op` にフォールバック" -"します。詳細は [Secret provider](./secret-providers.md) を参照してください。" +"yaml.md#providers) に宣言された `name` のいずれか、または組み込みの `default-op` " +"を指定します。空文字のときは後方互換のため `default-op` にフォールバックします。詳細は [Secret " +"provider](./secret-providers.md) を参照してください。" msgstr "" "The name of the source Provider. Specify one of the `name`s declared in " "`tazuna.yaml`'s [`spec.providers[]`](./tazuna-yaml.md#providers), or the " @@ -6783,21 +6979,17 @@ msgid "`uri`" msgstr "`uri`" #: src/reference/genesis-secret.md:49 -msgid "" -"Provider 上のアイテムを指す URI。詳細は [`uri` の形式](#uri-の形式) 参照。" +msgid "Provider 上のアイテムを指す URI。詳細は [`uri` の形式](#uri-の形式) 参照。" msgstr "" -"URI pointing to the Provider item. See [`uri` format](#uri-の形式) for " -"details." +"URI pointing to the Provider item. See [`uri` format](#uri-の形式) for details." #: src/reference/genesis-secret.md:50 msgid "`items`" msgstr "`items`" #: src/reference/genesis-secret.md:50 -msgid "" -"map\\" -msgstr "" -"map\\" +msgid "map\\" +msgstr "map\\" #: src/reference/genesis-secret.md:50 msgid "Provider から取得した key と、出力 Secret 上のキー名の対応表。" @@ -6810,9 +7002,9 @@ msgstr "`preferLabel`" #: src/reference/genesis-secret.md:51 msgid "" -"Provider が返したフィールドを **ラベル名** でキー化するかどうか。`false` のと" -"きは ID(ランダム文字列になる場合がある)でキー化されます。1Password で人間が" -"付けたフィールド名を `items` のキーに書きたい場合は `true` にします。" +"Provider が返したフィールドを **ラベル名** でキー化するかどうか。`false` のときは " +"ID(ランダム文字列になる場合がある)でキー化されます。1Password で人間が付けたフィールド名を `items` のキーに書きたい場合は " +"`true` にします。" msgstr "" "Whether to key the fields returned by the Provider by **label name**. When " "`false`, they are keyed by ID (which may be a random string). Set to `true` " @@ -6825,17 +7017,15 @@ msgstr "`uri` Format" #: src/reference/genesis-secret.md:55 msgid "" -"1Password Provider では、`url.Parse` の結果のうち **path の 1 つ目を vault " -"名、2 つ目を item 名** として解釈します。scheme やホストは現バージョンでは使" -"われません。" +"1Password Provider では、`url.Parse` の結果のうち **path の 1 つ目を vault 名、2 つ目を item " +"名** として解釈します。scheme やホストは現バージョンでは使われません。" msgstr "" "In the 1Password Provider, the `url.Parse` result is interpreted with **the " "first path segment as the vault name and the second as the item name**. The " "scheme and host are not used in the current version." #: src/reference/genesis-secret.md:58 -msgid "" -"`tazuna secret-to-genesissecret` が自動生成するときは次の形式で書き出します。" +msgid "`tazuna secret-to-genesissecret` が自動生成するときは次の形式で書き出します。" msgstr "" "`tazuna secret-to-genesissecret` writes them out in this form when auto-" "generating:" @@ -6861,9 +7051,8 @@ msgstr "op://example.1password.com/Platform/aws-credentials" #: src/reference/genesis-secret.md:70 msgid "" -"scheme やホストはパースには通りますが、参照されません。 将来別 Provider を増" -"やしたときに使い分けるためのスペースとして残されている、と理解しておくと安全" -"です。" +"scheme やホストはパースには通りますが、参照されません。 将来別 Provider " +"を増やしたときに使い分けるためのスペースとして残されている、と理解しておくと安全です。" msgstr "" "The scheme and host pass parsing but are not referenced. Think of them as " "space reserved for distinguishing between Providers in the future, and you " @@ -6875,8 +7064,7 @@ msgstr "GenesisSecretGenerateItem" #: src/reference/genesis-secret.md:75 msgid "" -"`items` マップの **値** にあたる構造です(キーは Provider から返ってきた " -"field の ID または label)。" +"`items` マップの **値** にあたる構造です(キーは Provider から返ってきた field の ID または label)。" msgstr "" "The structure corresponding to the **values** of the `items` map (keys are " "the Provider-returned field's ID or label)." @@ -6887,8 +7075,7 @@ msgstr "`mapTo`" #: src/reference/genesis-secret.md:79 msgid "" -"出力先 Kubernetes Secret の `data` キー名。Provider から取得した値はこのキー" -"名で Secret に格納されます。" +"出力先 Kubernetes Secret の `data` キー名。Provider から取得した値はこのキー名で Secret に格納されます。" msgstr "" "The `data` key name in the output Kubernetes Secret. The value retrieved " "from the Provider is stored under this key in the Secret." @@ -6923,9 +7110,9 @@ msgstr "AWS_SECRET_ACCESS_KEY" #: src/reference/genesis-secret.md:91 msgid "" -"`items` のキー `accessKeyID` が Provider 上のフィールド名(`preferLabel: " -"true` ならラベル名)に対応し、 `mapTo` がそのまま Kubernetes Secret のキー名" -"になります。 `items` のキーが Provider 側に存在しないとエラーになります。" +"`items` のキー `accessKeyID` が Provider 上のフィールド名(`preferLabel: true` " +"ならラベル名)に対応し、 `mapTo` がそのまま Kubernetes Secret のキー名になります。 `items` のキーが " +"Provider 側に存在しないとエラーになります。" msgstr "" "The `items` key `accessKeyID` corresponds to the Provider-side field name " "(the label name when `preferLabel: true`), and `mapTo` becomes the key name " @@ -6960,8 +7147,8 @@ msgstr "`stdout`" #: src/reference/genesis-secret.md:102 msgid "" -"取得した値を標準出力に dotenv 形式(`KEY=VALUE` 1 行 1 ペア、ソート済み)で書" -"き出す場合に指定します。現状フィールドは空オブジェクト `{}` で構いません。" +"取得した値を標準出力に dotenv 形式(`KEY=VALUE` 1 行 1 " +"ペア、ソート済み)で書き出す場合に指定します。現状フィールドは空オブジェクト `{}` で構いません。" msgstr "" "Specify this to write the retrieved values to standard output in dotenv " "format (`KEY=VALUE`, one pair per line, sorted). The field can currently be " @@ -6969,9 +7156,8 @@ msgstr "" #: src/reference/genesis-secret.md:104 msgid "" -"(※) `outputs[]` の各要素は `kubernetesSecret` か `stdout` の **どちらか一方" -"** を 指定する必要があります。両方を同時に指定したり、両方とも `null` の場合" -"は バリデーションエラーになります。" +"(※) `outputs[]` の各要素は `kubernetesSecret` か `stdout` の **どちらか一方** を " +"指定する必要があります。両方を同時に指定したり、両方とも `null` の場合は バリデーションエラーになります。" msgstr "" "(Note) Each element of `outputs[]` must specify **exactly one** of " "`kubernetesSecret` or `stdout`. Specifying both at once, or leaving both " @@ -6979,14 +7165,14 @@ msgstr "" #: src/reference/genesis-secret.md:110 msgid "" -"`stdout: {}` を指定した output は、Provider から取得した値を **dotenv 形式** " -"で 標準出力に書き出します。1Password で運用していた値を envfile に移行する作" -"業や、 シェル `eval` で環境変数として読み込みたいケースで使えます。" +"`stdout: {}` を指定した output は、Provider から取得した値を **dotenv 形式** で " +"標準出力に書き出します。1Password で運用していた値を envfile に移行する作業や、 シェル `eval` " +"で環境変数として読み込みたいケースで使えます。" msgstr "" -"An output with `stdout: {}` writes the values retrieved from the Provider to " -"standard output in **dotenv format**. It is useful for migrating values " -"managed in 1Password to an envfile, or for cases where you want to load them " -"as environment variables via shell `eval`." +"An output with `stdout: {}` writes the values retrieved from the Provider to" +" standard output in **dotenv format**. It is useful for migrating values " +"managed in 1Password to an envfile, or for cases where you want to load them" +" as environment variables via shell `eval`." #: src/reference/genesis-secret.md:115 src/reference/genesis-secret.md:183 #: src/reference/genesis-secret.md:203 src/reference/secret-providers.md:37 @@ -7003,8 +7189,7 @@ msgstr "Output format:" #: src/reference/genesis-secret.md:126 msgid "" -"行の並びは **キー名の昇順** で安定しています。 クラスタには触らないため、" -"`kubectl` の権限を持たないオペレーターでも実行できます。" +"行の並びは **キー名の昇順** で安定しています。 クラスタには触らないため、`kubectl` の権限を持たないオペレーターでも実行できます。" msgstr "" "The line order is stable, in **ascending order of key name**. Because it " "does not touch the cluster, even an operator without `kubectl` permissions " @@ -7032,7 +7217,7 @@ msgid "`labels`" msgstr "`labels`" #: src/reference/genesis-secret.md:135 src/reference/genesis-secret.md:136 -#: src/reference/manifest-types/helmfile.md:52 +#: src/reference/manifest-types/helmfile.md:93 msgid "map\\" msgstr "map\\" @@ -7054,9 +7239,8 @@ msgstr "`Opaque`" #: src/reference/genesis-secret.md:137 msgid "" -"corev1 の SecretType。空文字列のときは `Opaque`(厳密には `kubernetes.io/" -"opaque` ではなく Kubernetes のデフォルト `Opaque`)として扱われます。" -"`kubernetes.io/tls` などを指定できます。" +"corev1 の SecretType。空文字列のときは `Opaque`(厳密には `kubernetes.io/opaque` ではなく " +"Kubernetes のデフォルト `Opaque`)として扱われます。`kubernetes.io/tls` などを指定できます。" msgstr "" "The corev1 SecretType. An empty string is treated as `Opaque` (Kubernetes's " "default `Opaque`, not strictly `kubernetes.io/opaque`). You can specify " @@ -7068,8 +7252,8 @@ msgstr "`context`" #: src/reference/genesis-secret.md:138 msgid "" -"構造体上は存在しますが、**現バージョンの Manager 実装では参照されません。** " -"出力先クラスタは Tazuna 全体の current-context が使われます。" +"構造体上は存在しますが、**現バージョンの Manager 実装では参照されません。** 出力先クラスタは Tazuna 全体の current-" +"context が使われます。" msgstr "" "Exists structurally but **not referenced by the current Manager " "implementation**. The output cluster is Tazuna's overall current-context." @@ -7079,17 +7263,13 @@ msgid "解決の流れ" msgstr "Resolution Flow" #: src/reference/genesis-secret.md:142 -msgid "" -"`tazuna apply` 時、`type: genesissecret` の Manifest は次のように処理されま" -"す。" +msgid "`tazuna apply` 時、`type: genesissecret` の Manifest は次のように処理されます。" msgstr "" "During `tazuna apply`, a `type: genesissecret` Manifest is processed as " "follows." #: src/reference/genesis-secret.md:144 -msgid "" -"`manifests[].path` の指す **YAML ファイル**(`tazuna.yaml` 自身のディレクトリ" -"起点)を読む。" +msgid "`manifests[].path` の指す **YAML ファイル**(`tazuna.yaml` 自身のディレクトリ起点)を読む。" msgstr "" "Read the **YAML file** pointed to by `manifests[].path` (relative to the " "directory of `tazuna.yaml` itself)." @@ -7097,22 +7277,21 @@ msgstr "" #: src/reference/genesis-secret.md:145 msgid "`spec.secrets[]` の各要素を Provider に渡し、フィールド集合を取得する。" msgstr "" -"Pass each element of `spec.secrets[]` to the Provider and retrieve the field " -"set." +"Pass each element of `spec.secrets[]` to the Provider and retrieve the field" +" set." #: src/reference/genesis-secret.md:146 msgid "" -"`items` の `mapTo` でキー名をリネームしながら、すべての `secrets[]` の結果を " -"1 つの `map[string]string` にマージする(同じキーが衝突した場合は **後勝ち" -"**)。" +"`items` の `mapTo` でキー名をリネームしながら、すべての `secrets[]` の結果を 1 つの " +"`map[string]string` にマージする(同じキーが衝突した場合は **後勝ち**)。" msgstr "" "Merge the results of all `secrets[]` into one `map[string]string`, renaming " "keys using `items`'s `mapTo` (if a key collides, **the later one wins**)." #: src/reference/genesis-secret.md:148 msgid "" -"`spec.outputs[]` の各 `kubernetesSecret` について、`namespace` / `name` を持" -"つ Kubernetes `Secret` を `CreateOrUpdate` する。" +"`spec.outputs[]` の各 `kubernetesSecret` について、`namespace` / `name` を持つ " +"Kubernetes `Secret` を `CreateOrUpdate` する。" msgstr "" "For each `kubernetesSecret` of `spec.outputs[]`, `CreateOrUpdate` a " "Kubernetes `Secret` with the specified `namespace` / `name`." @@ -7127,8 +7306,8 @@ msgstr "`labels` / `annotations` / `type` are set as declared." #: src/reference/genesis-secret.md:153 msgid "" -"`tazuna destroy` 時も同じ Provider 取得が走り、`outputs[].kubernetesSecret` " -"の `namespace` / `name` で示される `Secret` を削除します。" +"`tazuna destroy` 時も同じ Provider 取得が走り、`outputs[].kubernetesSecret` の " +"`namespace` / `name` で示される `Secret` を削除します。" msgstr "" "On `tazuna destroy`, the same Provider retrieval runs, and the `Secret`s " "identified by `outputs[].kubernetesSecret`'s `namespace` / `name` are " @@ -7136,9 +7315,8 @@ msgstr "" #: src/reference/genesis-secret.md:156 msgid "" -"`tazuna build` 時は、出力対象が `outputs[0].kubernetesSecret` 1 件分の " -"Secret YAML として 標準出力に書き出されます(複数 `outputs` を書いていても、" -"build では先頭 1 件のみが対象)。" +"`tazuna build` 時は、出力対象が `outputs[0].kubernetesSecret` 1 件分の Secret YAML として " +"標準出力に書き出されます(複数 `outputs` を書いていても、build では先頭 1 件のみが対象)。" msgstr "" "On `tazuna build`, only one Secret YAML (corresponding to " "`outputs[0].kubernetesSecret`) is written to stdout (even if multiple " @@ -7150,29 +7328,28 @@ msgstr "State and always-sync" #: src/reference/genesis-secret.md:161 msgid "" -"GenesisSecret から生成される Secret は、`tazuna state diff` 上で常に `always-" -"sync` 分類になります。 ContentHash で差分判定できる対象ではなく、Provider 側" -"を真実の源として 毎回同期する扱いです。詳細は [Diff type](../concepts/" -"glossary.md#diff-type) / [always-sync](../concepts/glossary.md#always-sync) " -"を参照してください。" +"GenesisSecret から生成される Secret は、`tazuna state diff` 上で常に `always-sync` " +"分類になります。 ContentHash で差分判定できる対象ではなく、Provider 側を真実の源として 毎回同期する扱いです。詳細は [Diff " +"type](../concepts/glossary.md#diff-type) / [always-" +"sync](../concepts/glossary.md#always-sync) を参照してください。" msgstr "" "Secrets generated from GenesisSecret are always classified as `always-sync` " "in `tazuna state diff`. They are not targets of ContentHash-based diffing; " "the Provider side is the source of truth and they are synchronized every " -"time. See [Diff type](../concepts/glossary.md#diff-type) / [always-sync](../" -"concepts/glossary.md#always-sync) for details." +"time. See [Diff type](../concepts/glossary.md#diff-type) / [always-" +"sync](../concepts/glossary.md#always-sync) for details." #: src/reference/genesis-secret.md:167 #: src/reference/manifest-types/kustomize.md:32 -#: src/reference/manifest-types/helmfile.md:96 +#: src/reference/manifest-types/helmfile.md:137 #: src/reference/manifest-types/oras.md:112 src/reference/cli/init.md:66 #: src/reference/cli/apply.md:60 src/reference/cli/build.md:33 #: src/reference/cli/check.md:31 src/reference/cli/destroy.md:49 #: src/reference/cli/plan.md:80 src/reference/cli/status.md:73 #: src/reference/cli/state-list.md:25 src/reference/cli/state-diff.md:45 #: src/reference/cli/state-drift.md:73 -#: src/reference/cli/secret-to-genesissecret.md:45 src/reference/cli/tags.md:35 -#: src/reference/cli/version.md:32 +#: src/reference/cli/secret-to-genesissecret.md:45 +#: src/reference/cli/tags.md:35 src/reference/cli/version.md:32 msgid "例" msgstr "Examples" @@ -7229,38 +7406,38 @@ msgid "kubernetes.io/tls" msgstr "kubernetes.io/tls" #: src/reference/genesis-secret.md:209 -#: src/reference/manifest-types/helmfile.md:121 +#: src/reference/manifest-types/helmfile.md:162 msgid "managed-by" msgstr "managed-by" #: src/reference/genesis-secret.md:209 -#: src/reference/manifest-types/helmfile.md:121 +#: src/reference/manifest-types/helmfile.md:162 msgid "tazuna" msgstr "tazuna" #: src/reference/genesis-secret.md:214 msgid "" -"`tazuna.yaml` 側からの参照: [`tazuna.yaml` Manifest type 別フィールド](./" -"tazuna-yaml.md#manifest-type-別フィールド)" +"`tazuna.yaml` 側からの参照: [`tazuna.yaml` Manifest type 別フィールド](./tazuna-" +"yaml.md#manifest-type-別フィールド)" msgstr "" -"Reference from `tazuna.yaml`: [`tazuna.yaml` manifest-type-specific fields]" -"(./tazuna-yaml.md#manifest-type-別フィールド)" +"Reference from `tazuna.yaml`: [`tazuna.yaml` manifest-type-specific " +"fields](./tazuna-yaml.md#manifest-type-別フィールド)" #: src/reference/genesis-secret.md:215 msgid "" -"Provider の語彙: [Provider (SecretProvider)](../concepts/" -"glossary.md#provider-secretprovider)" +"Provider の語彙: [Provider (SecretProvider)](../concepts/glossary.md#provider-" +"secretprovider)" msgstr "" -"Provider terminology: [Provider (SecretProvider)](../concepts/" -"glossary.md#provider-secretprovider)" +"Provider terminology: [Provider " +"(SecretProvider)](../concepts/glossary.md#provider-secretprovider)" #: src/reference/genesis-secret.md:216 msgid "" "既存 Secret を 1Password と GenesisSecret に書き出す: [`tazuna secret-to-" "genesissecret`](./cli/secret-to-genesissecret.md)" msgstr "" -"Write an existing Secret out to 1Password and GenesisSecret: [`tazuna secret-" -"to-genesissecret`](./cli/secret-to-genesissecret.md)" +"Write an existing Secret out to 1Password and GenesisSecret: [`tazuna " +"secret-to-genesissecret`](./cli/secret-to-genesissecret.md)" #: src/reference/genesis-secret.md:218 msgid "用語: [GenesisSecret](../concepts/glossary.md#genesissecret)" @@ -7268,20 +7445,19 @@ msgstr "Term: [GenesisSecret](../concepts/glossary.md#genesissecret)" #: src/reference/secret-providers.md:3 msgid "" -"Secret provider は、`type: genesissecret` の Manifest が **どこから秘匿情報を" -"取得するか** を抽象化したものです。 `tazuna.yaml` の `spec.providers[]` で " -"provider を宣言し、各 GenesisSecret YAML の `spec.provider` でその名前を指定" -"する形で対応付けます。" +"Secret provider は、`type: genesissecret` の Manifest が **どこから秘匿情報を取得するか** " +"を抽象化したものです。 `tazuna.yaml` の `spec.providers[]` で provider を宣言し、各 " +"GenesisSecret YAML の `spec.provider` でその名前を指定する形で対応付けます。" msgstr "" -"A Secret provider abstracts **where a `type: genesissecret` Manifest fetches " -"secrets from**. You declare providers in `tazuna.yaml`'s `spec.providers[]` " -"and bind them by specifying that name in each GenesisSecret YAML's " +"A Secret provider abstracts **where a `type: genesissecret` Manifest fetches" +" secrets from**. You declare providers in `tazuna.yaml`'s `spec.providers[]`" +" and bind them by specifying that name in each GenesisSecret YAML's " "`spec.provider`." #: src/reference/secret-providers.md:8 msgid "" -"このページでは provider レジストリの仕組みと、`onepassword` / `envfile` の 2 " -"つの 組み込み provider の宣言方法をまとめます。" +"このページでは provider レジストリの仕組みと、`onepassword` / `envfile` の 2 つの 組み込み provider " +"の宣言方法をまとめます。" msgstr "" "This page summarizes how the provider registry works and how to declare the " "two built-in providers, `onepassword` and `envfile`." @@ -7291,9 +7467,7 @@ msgid "レジストリの基本" msgstr "Registry basics" #: src/reference/secret-providers.md:13 -msgid "" -"Runner は起動時に **provider レジストリ** を組み立てます。レジストリには次の " -"2 種類の エントリが入ります。" +msgid "Runner は起動時に **provider レジストリ** を組み立てます。レジストリには次の 2 種類の エントリが入ります。" msgstr "" "At startup the Runner assembles a **provider registry**. The registry " "contains two kinds of entries." @@ -7308,9 +7482,8 @@ msgstr "The built-in **`default-op`** (for 1Password)" #: src/reference/secret-providers.md:19 msgid "" -"`default-op` は常にレジストリに登録されており、宣言する必要はありません。 " -"GenesisSecret の `spec.provider` が空文字だった場合の **後方互換フォールバッ" -"ク** として、 この `default-op` が選ばれます。" +"`default-op` は常にレジストリに登録されており、宣言する必要はありません。 GenesisSecret の `spec.provider` " +"が空文字だった場合の **後方互換フォールバック** として、 この `default-op` が選ばれます。" msgstr "" "`default-op` is always registered in the registry and does not need to be " "declared. When a GenesisSecret's `spec.provider` is an empty string, this " @@ -7318,8 +7491,8 @@ msgstr "" #: src/reference/secret-providers.md:23 msgid "" -"GenesisSecret の `spec.provider` に名前を書くと、その名前で provider レジスト" -"リから provider を取り出して使います。" +"GenesisSecret の `spec.provider` に名前を書くと、その名前で provider レジストリから provider " +"を取り出して使います。" msgstr "" "When you write a name in a GenesisSecret's `spec.provider`, the provider is " "looked up from the provider registry by that name and used." @@ -7369,9 +7542,7 @@ msgid "./genesissecrets/app-config.yaml" msgstr "./genesissecrets/app-config.yaml" #: src/reference/secret-providers.md:66 -msgid "" -"GenesisSecret の `spec.provider` から参照される名前。`default-op` は予約済み" -"で使用不可。" +msgid "GenesisSecret の `spec.provider` から参照される名前。`default-op` は予約済みで使用不可。" msgstr "" "The name referenced from a GenesisSecret's `spec.provider`. `default-op` is " "reserved and cannot be used." @@ -7390,8 +7561,8 @@ msgstr "Additional config used when `type: envfile`." #: src/reference/secret-providers.md:71 msgid "" -"`type` と整合しない config(例: `type: onepassword` なのに `envfile:` が書か" -"れている)は バリデーションで弾かれます。" +"`type` と整合しない config(例: `type: onepassword` なのに `envfile:` が書かれている)は " +"バリデーションで弾かれます。" msgstr "" "Config inconsistent with `type` (e.g. `envfile:` written even though `type: " "onepassword`) is rejected by validation." @@ -7402,9 +7573,8 @@ msgstr "`type: onepassword`" #: src/reference/secret-providers.md:76 msgid "" -"1Password アイテムから取得する provider です。組み込み実装は `op` CLI を呼び" -"出して 値を取り出します。`onepassword` 追加設定は現状空オブジェクトで構いませ" -"ん (将来の拡張余地のためにフィールドが分かれているだけです)。" +"1Password アイテムから取得する provider です。組み込み実装は `op` CLI を呼び出して " +"値を取り出します。`onepassword` 追加設定は現状空オブジェクトで構いません (将来の拡張余地のためにフィールドが分かれているだけです)。" msgstr "" "A provider that retrieves values from 1Password items. The built-in " "implementation calls the `op` CLI to pull values out. The `onepassword` " @@ -7413,13 +7583,13 @@ msgstr "" #: src/reference/secret-providers.md:88 msgid "" -"GenesisSecret 側では `spec.secrets[].uri` を `op:////` 形" -"式で 書きます。詳細は [GenesisSecret スキーマ - `uri` の形式](./genesis-" -"secret.md#uri-の形式) を参照してください。" +"GenesisSecret 側では `spec.secrets[].uri` を `op:////` 形式で " +"書きます。詳細は [GenesisSecret スキーマ - `uri` の形式](./genesis-secret.md#uri-の形式) " +"を参照してください。" msgstr "" -"On the GenesisSecret side, write `spec.secrets[].uri` in the form `op://" -"//`. See [GenesisSecret schema - `uri` format](./genesis-" -"secret.md#uri-の形式) for details." +"On the GenesisSecret side, write `spec.secrets[].uri` in the form " +"`op:////`. See [GenesisSecret schema - `uri` " +"format](./genesis-secret.md#uri-の形式) for details." #: src/reference/secret-providers.md:92 msgid "`type: envfile`" @@ -7427,10 +7597,9 @@ msgstr "`type: envfile`" #: src/reference/secret-providers.md:94 msgid "" -"dotenv 形式 (`KEY=VALUE` 1 行 1 ペア) のローカルファイルから値を読む " -"provider です。 1Password に依存しない単体テストや、CI でローカル secret を流" -"し込みたいケース、 ブートストラップ直前で 1Password の認証が用意できていない" -"状況などで使えます。" +"dotenv 形式 (`KEY=VALUE` 1 行 1 ペア) のローカルファイルから値を読む provider です。 1Password " +"に依存しない単体テストや、CI でローカル secret を流し込みたいケース、 ブートストラップ直前で 1Password " +"の認証が用意できていない状況などで使えます。" msgstr "" "A provider that reads values from a local file in dotenv format " "(`KEY=VALUE`, one pair per line). It is useful for unit tests that don't " @@ -7439,16 +7608,15 @@ msgstr "" "available." #: src/reference/secret-providers.md:109 -msgid "" -"dotenv ファイルのパス。**`tazuna.yaml` 自身のディレクトリ起点** の相対パスと" -"して解決されます。" +msgid "dotenv ファイルのパス。**`tazuna.yaml` 自身のディレクトリ起点** の相対パスとして解決されます。" msgstr "" "The path to the dotenv file. Resolved as a path relative to **the directory " "where `tazuna.yaml` itself resides**." #: src/reference/secret-providers.md:111 msgid "`./secrets/ops.env` の中身は次のように、1 行 1 ペアです。" -msgstr "The contents of `./secrets/ops.env` are one pair per line, as follows." +msgstr "" +"The contents of `./secrets/ops.env` are one pair per line, as follows." #: src/reference/secret-providers.md:113 msgid "" @@ -7464,12 +7632,11 @@ msgstr "" #: src/reference/secret-providers.md:118 msgid "" -"GenesisSecret 側の `spec.secrets[].uri` は使われません(envfile は単一ファイ" -"ルの key-value をそのまま返すため)。`items` のキーは envfile 上の key 名と一" -"致させます。" +"GenesisSecret 側の `spec.secrets[].uri` は使われません(envfile は単一ファイルの key-value " +"をそのまま返すため)。`items` のキーは envfile 上の key 名と一致させます。" msgstr "" -"On the GenesisSecret side, `spec.secrets[].uri` is not used (because envfile " -"returns the key-values of a single file as-is). Make the keys of `items` " +"On the GenesisSecret side, `spec.secrets[].uri` is not used (because envfile" +" returns the key-values of a single file as-is). Make the keys of `items` " "match the key names in the envfile." #: src/reference/secret-providers.md:121 @@ -7478,7 +7645,8 @@ msgstr "`spec.provider` resolution flow" #: src/reference/secret-providers.md:123 msgid "GenesisSecret の `spec.provider` 値の扱いは次のとおりです。" -msgstr "The handling of a GenesisSecret's `spec.provider` value is as follows." +msgstr "" +"The handling of a GenesisSecret's `spec.provider` value is as follows." #: src/reference/secret-providers.md:125 msgid "`spec.provider` の値" @@ -7511,25 +7679,23 @@ msgstr "Any other name" #: src/reference/secret-providers.md:129 msgid "`tazuna.yaml` の `spec.providers[]` から同名のエントリを引く" msgstr "" -"Looks up the entry with the same name from `tazuna.yaml`'s `spec.providers[]`" +"Looks up the entry with the same name from `tazuna.yaml`'s " +"`spec.providers[]`" #: src/reference/secret-providers.md:131 msgid "" -"参照先の名前が `spec.providers[]` に存在しなければ apply 時にエラーになりま" -"す。 `tazuna check` の段階でも、未定義名の参照は将来的にバリデーションで弾か" -"れます。" +"参照先の名前が `spec.providers[]` に存在しなければ apply 時にエラーになります。 `tazuna check` " +"の段階でも、未定義名の参照は将来的にバリデーションで弾かれます。" msgstr "" "If the referenced name does not exist in `spec.providers[]`, apply fails " "with an error. At the `tazuna check` stage too, references to undefined " "names will be rejected by validation in the future." #: src/reference/secret-providers.md:136 -msgid "" -"`tazuna check` および各コマンドの起動時、`spec.providers[]` は次のチェックを" -"通ります。" +msgid "`tazuna check` および各コマンドの起動時、`spec.providers[]` は次のチェックを通ります。" msgstr "" -"During `tazuna check` and at the startup of each command, `spec.providers[]` " -"is subject to the following checks." +"During `tazuna check` and at the startup of each command, `spec.providers[]`" +" is subject to the following checks." #: src/reference/secret-providers.md:138 msgid "各 `name` がユニークであること" @@ -7548,9 +7714,7 @@ msgid "`type` が `onepassword` / `envfile` のいずれかであること" msgstr "`type` must be one of `onepassword` / `envfile`." #: src/reference/secret-providers.md:142 -msgid "" -"`type` と整合しない config(`type: onepassword` に `envfile:` が付いている" -"等)が無いこと" +msgid "`type` と整合しない config(`type: onepassword` に `envfile:` が付いている等)が無いこと" msgstr "" "There must be no config inconsistent with `type` (such as `envfile:` " "attached to `type: onepassword`)." @@ -7565,8 +7729,7 @@ msgstr "" "The whole of GenesisSecret: [GenesisSecret Schema](./genesis-secret.md)" #: src/reference/secret-providers.md:148 -msgid "" -"スキーマ側エントリ: [`tazuna.yaml` - Providers](./tazuna-yaml.md#providers)" +msgid "スキーマ側エントリ: [`tazuna.yaml` - Providers](./tazuna-yaml.md#providers)" msgstr "" "The schema-side entry: [`tazuna.yaml` - Providers](./tazuna-" "yaml.md#providers)" @@ -7581,8 +7744,8 @@ msgstr "" #: src/reference/test-plugin.md:3 msgid "" -"Test plugin は、Manifest の適用前後にクラスタの状態を検証するための仕組みで" -"す。 `tazuna.yaml` に書き、`tazuna apply` のフローに組み込まれます。" +"Test plugin は、Manifest の適用前後にクラスタの状態を検証するための仕組みです。 `tazuna.yaml` に書き、`tazuna" +" apply` のフローに組み込まれます。" msgstr "" "A Test plugin is a mechanism for verifying cluster state before or after a " "Manifest is applied. It is written in `tazuna.yaml` and integrated into the " @@ -7590,8 +7753,8 @@ msgstr "" #: src/reference/test-plugin.md:6 msgid "" -"このページでは Test plugin の YAML スキーマと、組み込みの 2 種" -"(`WaitUntil` / `ExistNonExist`) の仕様をまとめます。" +"このページでは Test plugin の YAML スキーマと、組み込みの 2 種(`WaitUntil` / `ExistNonExist`) " +"の仕様をまとめます。" msgstr "" "This page summarizes the YAML schema of Test plugins and the spec for the " "two built-ins (`WaitUntil` / `ExistNonExist`)." @@ -7630,30 +7793,25 @@ msgstr "Executed **after all Manifest applies have completed**" #: src/reference/test-plugin.md:18 msgid "" -"`tazuna build` / `tazuna check` / `tazuna state diff` などクラスタを変更しな" -"い コマンドでは Test plugin は実行されません。`tazuna destroy` 時にも実行され" -"ません。" +"`tazuna build` / `tazuna check` / `tazuna state diff` などクラスタを変更しない コマンドでは " +"Test plugin は実行されません。`tazuna destroy` 時にも実行されません。" msgstr "" "Test plugins are not executed by commands that do not mutate the cluster, " -"such as `tazuna build` / `tazuna check` / `tazuna state diff`. They are also " -"not executed during `tazuna destroy`." +"such as `tazuna build` / `tazuna check` / `tazuna state diff`. They are also" +" not executed during `tazuna destroy`." #: src/reference/test-plugin.md:21 msgid "TestPluginSpec(共通フィールド)" msgstr "TestPluginSpec (Common Fields)" #: src/reference/test-plugin.md:23 -msgid "" -"`manifests[].tests` と `spec.tests` の各要素は同じ構造 `TestPluginSpec` を取" -"ります。" +msgid "`manifests[].tests` と `spec.tests` の各要素は同じ構造 `TestPluginSpec` を取ります。" msgstr "" "The elements of `manifests[].tests` and `spec.tests` share the same " "`TestPluginSpec` structure." #: src/reference/test-plugin.md:27 -msgid "" -"プラグイン種別。`WaitUntil` または `ExistNonExist`(大文字小文字をそのま" -"ま)。" +msgid "プラグイン種別。`WaitUntil` または `ExistNonExist`(大文字小文字をそのまま)。" msgstr "Plugin kind. `WaitUntil` or `ExistNonExist` (case-sensitive)." #: src/reference/test-plugin.md:28 @@ -7686,7 +7844,7 @@ msgstr "`minConsecutiveSuccessCount`" #: src/reference/test-plugin.md:30 src/reference/test-plugin.md:31 #: src/reference/test-plugin.md:32 src/reference/test-plugin.md:33 -#: src/reference/manifest-types/helmfile.md:28 +#: src/reference/manifest-types/helmfile.md:69 msgid "int" msgstr "int" @@ -7696,32 +7854,30 @@ msgstr "`1`" #: src/reference/test-plugin.md:30 msgid "" -"テスト関数が連続でこの回数だけ成功したら、テストプラグイン全体を **成功** と" -"する。`0` を指定したときも内部で `1` に補正されます。" +"テスト関数が連続でこの回数だけ成功したら、テストプラグイン全体を **成功** とする。`0` を指定したときも内部で `1` に補正されます。" msgstr "" -"If the test function succeeds this many times consecutively, the entire test " -"plugin is considered **successful**. `0` is internally corrected to `1`." +"If the test function succeeds this many times consecutively, the entire test" +" plugin is considered **successful**. `0` is internally corrected to `1`." #: src/reference/test-plugin.md:31 msgid "`minConsecutiveFailureCount`" msgstr "`minConsecutiveFailureCount`" #: src/reference/test-plugin.md:31 src/reference/test-plugin.md:33 -#: src/reference/manifest-types/helmfile.md:28 src/reference/cli/index.md:76 +#: src/reference/manifest-types/helmfile.md:69 src/reference/cli/index.md:76 msgid "`0`" msgstr "`0`" #: src/reference/test-plugin.md:31 msgid "" -"テスト関数が連続でこの回数だけ失敗したら、テストプラグイン全体を **失敗** と" -"して打ち切る。`0` のときはこのチェックは行われず、`timeoutSeconds` のみが打ち" -"切り条件になります。" +"テスト関数が連続でこの回数だけ失敗したら、テストプラグイン全体を **失敗** として打ち切る。`0` " +"のときはこのチェックは行われず、`timeoutSeconds` のみが打ち切り条件になります。" msgstr "" "If the test function fails this many times consecutively, the entire test " -"plugin is **aborted as failure**. When `0`, this check is not performed, and " -"only `timeoutSeconds` is the stop condition." +"plugin is **aborted as failure**. When `0`, this check is not performed, and" +" only `timeoutSeconds` is the stop condition." -#: src/reference/test-plugin.md:32 src/reference/manifest-types/helmfile.md:28 +#: src/reference/test-plugin.md:32 src/reference/manifest-types/helmfile.md:69 msgid "`timeoutSeconds`" msgstr "`timeoutSeconds`" @@ -7730,9 +7886,7 @@ msgid "実質無限" msgstr "Effectively infinite" #: src/reference/test-plugin.md:32 -msgid "" -"全体タイムアウト秒。指定時間を超えると失敗。`0`(未指定)のときは実質無期限" -"(内部で約 280 日が設定されます)。" +msgid "全体タイムアウト秒。指定時間を超えると失敗。`0`(未指定)のときは実質無期限(内部で約 280 日が設定されます)。" msgstr "" "Overall timeout in seconds. Failure if exceeded. With `0` (unset), " "effectively unlimited (internally set to about 280 days)." @@ -7749,13 +7903,12 @@ msgstr "" #: src/reference/test-plugin.md:35 msgid "" -"(※) `type` と `waitUntil` / `existNonExist` の対応関係は実行時に検証されま" -"す。 `waitUntil` を指定して `type: ExistNonExist` を書く、といった食い違いが" -"あると実行時にエラーになります。" +"(※) `type` と `waitUntil` / `existNonExist` の対応関係は実行時に検証されます。 `waitUntil` " +"を指定して `type: ExistNonExist` を書く、といった食い違いがあると実行時にエラーになります。" msgstr "" "(*) The `type`-to-`waitUntil` / `existNonExist` correspondence is verified " -"at runtime. Specifying `waitUntil` while `type: ExistNonExist`, or any other " -"mismatch, results in a runtime error." +"at runtime. Specifying `waitUntil` while `type: ExistNonExist`, or any other" +" mismatch, results in a runtime error." #: src/reference/test-plugin.md:38 msgid "評価ループの挙動" @@ -7774,16 +7927,15 @@ msgid "結果(成功/失敗)を履歴に追記する。" msgstr "Append the result (success / failure) to the history." #: src/reference/test-plugin.md:44 -msgid "" -"直近 `minConsecutiveSuccessCount` 件がすべて成功なら **成功** として終了。" +msgid "直近 `minConsecutiveSuccessCount` 件がすべて成功なら **成功** として終了。" msgstr "" "If the last `minConsecutiveSuccessCount` results are all successes, exit as " "**success**." #: src/reference/test-plugin.md:45 msgid "" -"`minConsecutiveFailureCount` が 0 でなく、直近の " -"`minConsecutiveFailureCount` 件が すべて失敗なら **失敗** として終了。" +"`minConsecutiveFailureCount` が 0 でなく、直近の `minConsecutiveFailureCount` 件が " +"すべて失敗なら **失敗** として終了。" msgstr "" "If `minConsecutiveFailureCount` is non-zero and the last " "`minConsecutiveFailureCount` results are all failures, exit as **failure**." @@ -7798,9 +7950,7 @@ msgstr "" "Sleep for `intervalSeconds` seconds and go back to 1 (immediate if `0`)." #: src/reference/test-plugin.md:50 -msgid "" -"「1 回成功すれば OK」「再試行間隔は 1 秒」「最大 60 秒で打ち切り」を表現した" -"い場合は次のようになります。" +msgid "「1 回成功すれば OK」「再試行間隔は 1 秒」「最大 60 秒で打ち切り」を表現したい場合は次のようになります。" msgstr "" "If you want to express \"one success is enough,\" \"retry interval is 1 " "second,\" \"abort at 60 seconds max,\" you get the following." @@ -7816,7 +7966,7 @@ msgstr "WaitUntil" #: src/reference/test-plugin.md:55 src/reference/test-plugin.md:97 #: src/reference/test-plugin.md:140 -#: src/reference/manifest-types/helmfile.md:106 +#: src/reference/manifest-types/helmfile.md:147 msgid "timeoutSeconds" msgstr "timeoutSeconds" @@ -7834,9 +7984,7 @@ msgid "WaitUntilArgs" msgstr "WaitUntilArgs" #: src/reference/test-plugin.md:63 -msgid "" -"指定したリソースが「目的の状態」になるまでループで待つプラグインです。 判定条" -"件は CEL 式で表現します。" +msgid "指定したリソースが「目的の状態」になるまでループで待つプラグインです。 判定条件は CEL 式で表現します。" msgstr "" "A plugin that loops waiting until the specified resource enters \"the " "desired state.\" The condition is expressed as a CEL expression." @@ -7847,7 +7995,8 @@ msgstr "`resource.apiVersion`" #: src/reference/test-plugin.md:68 msgid "対象リソースの apiVersion。例: `apps/v1`、`cert-manager.io/v1`。" -msgstr "Target resource apiVersion. Examples: `apps/v1`, `cert-manager.io/v1`." +msgstr "" +"Target resource apiVersion. Examples: `apps/v1`, `cert-manager.io/v1`." #: src/reference/test-plugin.md:69 src/reference/test-plugin.md:115 msgid "`resource.kind`" @@ -7871,9 +8020,8 @@ msgstr "`condition`" #: src/reference/test-plugin.md:72 msgid "" -"真偽を返す CEL 式。式の中では `object` という名前で、取得したリソースが " -"unstructured な map として参照できます。式の評価結果は **bool** 型でなければ" -"なりません(コンパイル時に型チェックされます)。" +"真偽を返す CEL 式。式の中では `object` という名前で、取得したリソースが unstructured な map " +"として参照できます。式の評価結果は **bool** 型でなければなりません(コンパイル時に型チェックされます)。" msgstr "" "A CEL expression returning a boolean. Within the expression, the retrieved " "resource is referenced as `object`, an unstructured map. The expression's " @@ -7881,9 +8029,8 @@ msgstr "" #: src/reference/test-plugin.md:74 msgid "" -"各イテレーションは「リソースを `Get` → CEL 式を評価」の組み合わせで動きま" -"す。 リソースの取得に失敗した(404 を含む)回もそのループの「失敗」として扱わ" -"れます。" +"各イテレーションは「リソースを `Get` → CEL 式を評価」の組み合わせで動きます。 リソースの取得に失敗した(404 " +"を含む)回もそのループの「失敗」として扱われます。" msgstr "" "Each iteration runs as a \"`Get` the resource → evaluate the CEL " "expression\" pair. Failures to retrieve the resource (including 404) are " @@ -7915,11 +8062,11 @@ msgstr "condition" #: src/reference/test-plugin.md:89 msgid "" -"CEL 式自体の言語仕様は CEL の公式ドキュメントを参照してください。 Tazuna は " -"`object` 変数の追加と「結果は bool」という制約だけを掛けています。" +"CEL 式自体の言語仕様は CEL の公式ドキュメントを参照してください。 Tazuna は `object` 変数の追加と「結果は " +"bool」という制約だけを掛けています。" msgstr "" -"For the CEL language spec itself, see the official CEL documentation. Tazuna " -"only adds the `object` variable and the constraint \"result must be bool.\"" +"For the CEL language spec itself, see the official CEL documentation. Tazuna" +" only adds the `object` variable and the constraint \"result must be bool.\"" #: src/reference/test-plugin.md:92 msgid "例(WaitUntil)" @@ -7939,9 +8086,7 @@ msgid "ExistNonExistArgs" msgstr "ExistNonExistArgs" #: src/reference/test-plugin.md:110 -msgid "" -"指定したリソースが「存在しているべき」または「存在していないべき」を表明する" -"プラグインです。" +msgid "指定したリソースが「存在しているべき」または「存在していないべき」を表明するプラグインです。" msgstr "" "A plugin that asserts that the specified resource \"should exist\" or " "\"should not exist.\"" @@ -7959,21 +8104,19 @@ msgid "`shouldExist`" msgstr "`shouldExist`" #: src/reference/test-plugin.md:118 -msgid "" -"`true` のとき、リソースが存在すれば成功。`false` のとき、存在しなければ成功。" +msgid "`true` のとき、リソースが存在すれば成功。`false` のとき、存在しなければ成功。" msgstr "" "When `true`, success if the resource exists. When `false`, success if it " "does not exist." #: src/reference/test-plugin.md:120 msgid "" -"判定は 1 回の `Get` 結果で行われます。 `Get` が `NotFound` を返すかどうかで存" -"在判定し、`shouldExist` と突き合わせます。 `NotFound` 以外のエラー(権限不足" -"など)はそのイテレーションの「失敗」として扱われます。" +"判定は 1 回の `Get` 結果で行われます。 `Get` が `NotFound` を返すかどうかで存在判定し、`shouldExist` " +"と突き合わせます。 `NotFound` 以外のエラー(権限不足など)はそのイテレーションの「失敗」として扱われます。" msgstr "" "The decision is made on a single `Get` result. Existence is judged by " -"whether `Get` returns `NotFound`, then matched against `shouldExist`. Errors " -"other than `NotFound` (such as insufficient permissions) are treated as a " +"whether `Get` returns `NotFound`, then matched against `shouldExist`. Errors" +" other than `NotFound` (such as insufficient permissions) are treated as a " "\"failure\" for that iteration." #: src/reference/test-plugin.md:124 @@ -8018,11 +8161,10 @@ msgstr "legacy-token" #: src/reference/test-plugin.md:153 msgid "" -"配置先のフィールド: [`tazuna.yaml` の `tests` フィールド](./tazuna-" -"yaml.md#tests-フィールド)" +"配置先のフィールド: [`tazuna.yaml` の `tests` フィールド](./tazuna-yaml.md#tests-フィールド)" msgstr "" -"Field for placement: [`tests` field in `tazuna.yaml`](./tazuna-yaml.md#tests-" -"フィールド)" +"Field for placement: [`tests` field in `tazuna.yaml`](./tazuna-" +"yaml.md#tests-フィールド)" #: src/reference/test-plugin.md:154 msgid "用語: [Test plugin](../concepts/glossary.md#test-plugin)" @@ -8030,29 +8172,28 @@ msgstr "Term: [Test plugin](../concepts/glossary.md#test-plugin)" #: src/reference/test-plugin.md:155 msgid "" -"全体アーキテクチャ上の位置付け: [全体アーキテクチャ - Test plugin](../" -"concepts/architecture.md#test-plugin)" +"全体アーキテクチャ上の位置付け: [全体アーキテクチャ - Test plugin](../concepts/architecture.md#test-" +"plugin)" msgstr "" -"Position in overall architecture: [Overall Architecture - Test plugin](../" -"concepts/architecture.md#test-plugin)" +"Position in overall architecture: [Overall Architecture - Test " +"plugin](../concepts/architecture.md#test-plugin)" #: src/reference/state.md:3 msgid "" -"State は、Tazuna が「自分が入れたリソース」を追跡するための記録です。 クラス" -"タ内の **ConfigMap** に保存され、`tazuna state list` / `tazuna state diff` / " -"`tazuna state drift` / `tazuna status` / `tazuna plan` の起点になります。 書" -"き込みは `tazuna apply` の成功時に自動で行われます(`--sync` 有無を問わず)。" +"State は、Tazuna が「自分が入れたリソース」を追跡するための記録です。 クラスタ内の **ConfigMap** に保存され、`tazuna" +" state list` / `tazuna state diff` / `tazuna state drift` / `tazuna status` " +"/ `tazuna plan` の起点になります。 書き込みは `tazuna apply` の成功時に自動で行われます(`--sync` " +"有無を問わず)。" msgstr "" "State is the record Tazuna uses to track \"resources I installed.\" It is " "stored in a **ConfigMap** inside the cluster and is the starting point for " "`tazuna state list` / `tazuna state diff` / `tazuna state drift` / `tazuna " -"status` / `tazuna plan`. Writes happen automatically on a successful `tazuna " -"apply` (regardless of `--sync`)." +"status` / `tazuna plan`. Writes happen automatically on a successful `tazuna" +" apply` (regardless of `--sync`)." #: src/reference/state.md:8 msgid "" -"このページでは State の保存形式と、それを支える State key / ContentHash / " -"Diff type の 仕様をまとめます。" +"このページでは State の保存形式と、それを支える State key / ContentHash / Diff type の 仕様をまとめます。" msgstr "" "This page covers the storage format of State and the spec of State key / " "ContentHash / Diff type that support it." @@ -8062,9 +8203,7 @@ msgid "保存場所" msgstr "Storage Location" #: src/reference/state.md:13 -msgid "" -"State は **クラスタ内** に保存されます。Tazuna のローカルファイルやリモートス" -"トレージは使いません。" +msgid "State は **クラスタ内** に保存されます。Tazuna のローカルファイルやリモートストレージは使いません。" msgstr "" "State is stored **inside the cluster**. Tazuna does not use local files or " "remote storage." @@ -8099,9 +8238,9 @@ msgstr "One entry per resource as a key/value pair in `ConfigMap.data`" #: src/reference/state.md:21 msgid "" -"1 つの Manifest が 1 つの ConfigMap に対応します。 `includes` 展開後の各 " -"Manifest 名はユニーク([`tazuna.yaml` の `name`](./tazuna-yaml.md#name) 参" -"照)なので、 ConfigMap 名は衝突しません。" +"1 つの Manifest が 1 つの ConfigMap に対応します。 `includes` 展開後の各 Manifest " +"名はユニーク([`tazuna.yaml` の `name`](./tazuna-yaml.md#name) 参照)なので、 ConfigMap " +"名は衝突しません。" msgstr "" "One Manifest corresponds to one ConfigMap. Since each Manifest's `name` " "after `includes` expansion is unique (see [`tazuna.yaml`'s `name`](./tazuna-" @@ -8109,9 +8248,8 @@ msgstr "" #: src/reference/state.md:27 msgid "" -"State key は、ConfigMap 内の 1 エントリを指す識別子です。 構造体としては " -"`manifestName` / `group` / `version` / `kind` / `namespace` / `name` を持" -"ち、 文字列化のフォーマットは次の 2 通りです。" +"State key は、ConfigMap 内の 1 エントリを指す識別子です。 構造体としては `manifestName` / `group` / " +"`version` / `kind` / `namespace` / `name` を持ち、 文字列化のフォーマットは次の 2 通りです。" msgstr "" "A State key is the identifier of a single entry inside a ConfigMap. As a " "struct it carries `manifestName` / `group` / `version` / `kind` / " @@ -8151,13 +8289,14 @@ msgstr "5" #: src/reference/state.md:36 msgid "" -"`group` は core group(`\"\"`)の場合は空セグメントになります。 例: core/v1 " -"の `ConfigMap`(namespaced)であれば、`my-manifest//v1/ConfigMap/default/my-" -"cm` のように 2 つ目のスラッシュ間が空になります。" +"`group` は core group(`\"\"`)の場合は空セグメントになります。 例: core/v1 の " +"`ConfigMap`(namespaced)であれば、`my-manifest//v1/ConfigMap/default/my-cm` のように 2" +" つ目のスラッシュ間が空になります。" msgstr "" -"`group` is an empty segment for the core group (`\"\"`). For example, a core/" -"v1 `ConfigMap` (namespaced) is written like `my-manifest//v1/ConfigMap/" -"default/my-cm`, with the gap between the second and third slashes empty." +"`group` is an empty segment for the core group (`\"\"`). For example, a " +"core/v1 `ConfigMap` (namespaced) is written like `my-" +"manifest//v1/ConfigMap/default/my-cm`, with the gap between the second and " +"third slashes empty." #: src/reference/state.md:40 msgid "ConfigMap data key へのエンコード" @@ -8165,9 +8304,9 @@ msgstr "Encoding to ConfigMap data Key" #: src/reference/state.md:42 msgid "" -"Kubernetes の `ConfigMap.data` の key は `[-._a-zA-Z0-9]+` しか許さず、`/` を" -"含められません。 そのため Tazuna は ConfigMap への書き込み時に State key 文字" -"列の `/` を `__` に置換します。 読み込み時には逆変換します。" +"Kubernetes の `ConfigMap.data` の key は `[-._a-zA-Z0-9]+` しか許さず、`/` を含められません。 " +"そのため Tazuna は ConfigMap への書き込み時に State key 文字列の `/` を `__` に置換します。 " +"読み込み時には逆変換します。" msgstr "" "Kubernetes `ConfigMap.data` keys only allow `[-._a-zA-Z0-9]+` and cannot " "contain `/`. To work around this, Tazuna replaces `/` in the State key " @@ -8176,8 +8315,8 @@ msgstr "" #: src/reference/state.md:51 msgid "" -"Kubernetes の DNS-1123 名(manifest 名 / group / namespace / name)に `_` は" -"含まれないため、 `__` は安全なセパレータとして使えます。" +"Kubernetes の DNS-1123 名(manifest 名 / group / namespace / name)に `_` " +"は含まれないため、 `__` は安全なセパレータとして使えます。" msgstr "" "Since the Kubernetes DNS-1123 names (manifest name / group / namespace / " "name) do not contain `_`, `__` works safely as a separator." @@ -8187,8 +8326,7 @@ msgid "State エントリ (`StateEntry`)" msgstr "State Entry (`StateEntry`)" #: src/reference/state.md:56 -msgid "" -"各エントリは ConfigMap 上 1 つの value として、次の JSON 形で書き込まれます。" +msgid "各エントリは ConfigMap 上 1 つの value として、次の JSON 形で書き込まれます。" msgstr "" "Each entry is written into one value in the ConfigMap as the following JSON " "form." @@ -8206,12 +8344,10 @@ msgid "`contentHash`" msgstr "`contentHash`" #: src/reference/state.md:64 -msgid "" -"リソースの内容に対する SHA-256 ハッシュ。詳細は [ContentHash](#contenthash) " -"参照。" +msgid "リソースの内容に対する SHA-256 ハッシュ。詳細は [ContentHash](#contenthash) 参照。" msgstr "" -"The SHA-256 hash of the resource's contents. See [ContentHash](#contenthash) " -"for details." +"The SHA-256 hash of the resource's contents. See [ContentHash](#contenthash)" +" for details." #: src/reference/state.md:66 msgid "`_metadata` キー" @@ -8219,8 +8355,8 @@ msgstr "`_metadata` Key" #: src/reference/state.md:68 msgid "" -"ConfigMap には予約キー `_metadata` がもう 1 つ入ります。 これは State エント" -"リではなく、State 全体のメタ情報です。" +"ConfigMap には予約キー `_metadata` がもう 1 つ入ります。 これは State エントリではなく、State " +"全体のメタ情報です。" msgstr "" "ConfigMaps also contain one more reserved key, `_metadata`. This is not a " "State entry but metadata for the State as a whole." @@ -8259,19 +8395,17 @@ msgstr "Sync timestamp." #: src/reference/state.md:80 msgid "" -"Manifest の `name` には `_metadata` は使えません ([`tazuna.yaml` の `name`]" -"(./tazuna-yaml.md#name) で予約語として扱われています)。 この衝突を避けるため" -"のガードです。" +"Manifest の `name` には `_metadata` は使えません ([`tazuna.yaml` の `name`](./tazuna-" +"yaml.md#name) で予約語として扱われています)。 この衝突を避けるためのガードです。" msgstr "" "`_metadata` cannot be used for a Manifest `name` (it is treated as a " -"reserved word in [`tazuna.yaml`'s `name`](./tazuna-yaml.md#name)). This is a " -"guard against the collision." +"reserved word in [`tazuna.yaml`'s `name`](./tazuna-yaml.md#name)). This is a" +" guard against the collision." #: src/reference/state.md:86 msgid "" -"ContentHash は、各リソースの YAML 表現から計算される SHA-256 の hex 文字列で" -"す。 Tazuna は **server-side で付与される field** と **`status`** を除いて計" -"算します。" +"ContentHash は、各リソースの YAML 表現から計算される SHA-256 の hex 文字列です。 Tazuna は **server-" +"side で付与される field** と **`status`** を除いて計算します。" msgstr "" "ContentHash is a SHA-256 hex string computed from each resource's YAML " "representation. Tazuna computes it after stripping **server-side-assigned " @@ -8356,8 +8490,8 @@ msgstr "Take SHA-256 and convert to a hex string." #: src/reference/state.md:108 msgid "" -"`status` を含めると Pod の再起動などで毎回ハッシュが変わってしまうので、 **" -"「`tazuna.yaml` から見て同じ状態か」** を判定できる粒度に絞っています。" +"`status` を含めると Pod の再起動などで毎回ハッシュが変わってしまうので、 **「`tazuna.yaml` から見て同じ状態か」** " +"を判定できる粒度に絞っています。" msgstr "" "Including `status` would change the hash on every Pod restart, so we narrow " "it down to the granularity \"is this the same state as expressed by " @@ -8365,8 +8499,8 @@ msgstr "" #: src/reference/state.md:113 msgid "" -"`tazuna state diff` と `tazuna apply --sync` は、`Build` 結果と既存 State の" -"比較結果を **Diff type** で分類します。" +"`tazuna state diff` と `tazuna apply --sync` は、`Build` 結果と既存 State の比較結果を " +"**Diff type** で分類します。" msgstr "" "`tazuna state diff` and `tazuna apply --sync` classify the comparison " "between the `Build` result and existing State by **Diff type**." @@ -8403,11 +8537,12 @@ msgstr "Skip diff computation; always treat as a sync target" #: src/reference/state.md:123 msgid "" -"`state diff` の出力は **`added` → `modified` → `removed` → `always-sync`** の" -"順、 同 Diff type 内は State key 昇順で安定ソートされます。" +"`state diff` の出力は **`added` → `modified` → `removed` → `always-sync`** の順、 同" +" Diff type 内は State key 昇順で安定ソートされます。" msgstr "" "`state diff` output is stably sorted in the order **`added` → `modified` → " -"`removed` → `always-sync`**, with State keys ascending within each Diff type." +"`removed` → `always-sync`**, with State keys ascending within each Diff " +"type." #: src/reference/state.md:126 msgid "`always-sync` の対象" @@ -8415,11 +8550,10 @@ msgstr "`always-sync` Targets" #: src/reference/state.md:128 msgid "" -"現バージョンでは、`type: genesissecret` 由来の Secret が `always-sync` 分類に" -"なります。 これらは Provider 側を真実の源として毎回同期する性質を持ち、" -"ContentHash で差分判定できる対象ではありません。 詳細は [GenesisSecret スキー" -"マ - State と always-sync](./genesis-secret.md#state-と-always-sync) を参照し" -"てください。" +"現バージョンでは、`type: genesissecret` 由来の Secret が `always-sync` 分類になります。 これらは " +"Provider 側を真実の源として毎回同期する性質を持ち、ContentHash で差分判定できる対象ではありません。 詳細は " +"[GenesisSecret スキーマ - State と always-sync](./genesis-secret.md#state-と-" +"always-sync) を参照してください。" msgstr "" "In the current version, Secrets derived from `type: genesissecret` are " "classified as `always-sync`. These have the Provider side as the source of " @@ -8430,27 +8564,29 @@ msgstr "" #: src/reference/state.md:134 msgid "" "操作する CLI: [`tazuna state list`](./cli/state-list.md) / [`tazuna state " -"diff`](./cli/state-diff.md) / [`tazuna state drift`](./cli/state-drift.md) / " -"[`tazuna status`](./cli/status.md) / [`tazuna plan`](./cli/plan.md) / " +"diff`](./cli/state-diff.md) / [`tazuna state drift`](./cli/state-drift.md) /" +" [`tazuna status`](./cli/status.md) / [`tazuna plan`](./cli/plan.md) / " "[`tazuna apply --sync`](./cli/apply.md#state-連携---sync----prune----atomic)" msgstr "" "CLIs that operate on it: [`tazuna state list`](./cli/state-list.md) / " -"[`tazuna state diff`](./cli/state-diff.md) / [`tazuna state drift`](./cli/" -"state-drift.md) / [`tazuna status`](./cli/status.md) / [`tazuna plan`](./cli/" -"plan.md) / [`tazuna apply --sync`](./cli/apply.md#state-連携---sync----" -"prune----atomic)" +"[`tazuna state diff`](./cli/state-diff.md) / [`tazuna state " +"drift`](./cli/state-drift.md) / [`tazuna status`](./cli/status.md) / " +"[`tazuna plan`](./cli/plan.md) / [`tazuna apply " +"--sync`](./cli/apply.md#state-連携---sync----prune----atomic)" #: src/reference/state.md:140 msgid "" -"用語: [State](../concepts/glossary.md#state) / [State key](../concepts/" -"glossary.md#state-key) / [ContentHash](../concepts/" -"glossary.md#contenthash) / [Diff type](../concepts/glossary.md#diff-type) / " -"[always-sync](../concepts/glossary.md#always-sync)" +"用語: [State](../concepts/glossary.md#state) / [State " +"key](../concepts/glossary.md#state-key) / " +"[ContentHash](../concepts/glossary.md#contenthash) / [Diff " +"type](../concepts/glossary.md#diff-type) / [always-" +"sync](../concepts/glossary.md#always-sync)" msgstr "" -"Terminology: [State](../concepts/glossary.md#state) / [State key](../" -"concepts/glossary.md#state-key) / [ContentHash](../concepts/" -"glossary.md#contenthash) / [Diff type](../concepts/glossary.md#diff-type) / " -"[always-sync](../concepts/glossary.md#always-sync)" +"Terminology: [State](../concepts/glossary.md#state) / [State " +"key](../concepts/glossary.md#state-key) / " +"[ContentHash](../concepts/glossary.md#contenthash) / [Diff " +"type](../concepts/glossary.md#diff-type) / [always-" +"sync](../concepts/glossary.md#always-sync)" #: src/reference/manifest-types/index.md:1 msgid "Manifest type 別リファレンス" @@ -8458,12 +8594,12 @@ msgstr "Per-Manifest-Type Reference" #: src/reference/manifest-types/index.md:3 msgid "" -"`tazuna.yaml` の `manifests[].type` には 4 種類の値を取れます。 このセクショ" -"ンでは type ごとの **`path` が指す先**、**固有フィールド**、 **apply / " -"destroy / build 時の振る舞い** を 1 ページずつにまとめます。" +"`tazuna.yaml` の `manifests[].type` には 4 種類の値を取れます。 このセクションでは type ごとの " +"**`path` が指す先**、**固有フィールド**、 **apply / destroy / build 時の振る舞い** を 1 " +"ページずつにまとめます。" msgstr "" -"`tazuna.yaml`'s `manifests[].type` can take four values. This section breaks " -"each type into its own page, covering **what `path` points to**, **type-" +"`tazuna.yaml`'s `manifests[].type` can take four values. This section breaks" +" each type into its own page, covering **what `path` points to**, **type-" "specific fields**, and **apply / destroy / build behavior**." #: src/reference/manifest-types/index.md:7 @@ -8473,27 +8609,24 @@ msgid "" "yaml.md#manifest) を参照してください。" msgstr "" "For the spec of common Manifest fields (`name` / `path` / `type` / `tags` / " -"`dependsOn` / `includes` / `tests`), see [`tazuna.yaml` schema - Manifest]" -"(../tazuna-yaml.md#manifest)." +"`dependsOn` / `includes` / `tests`), see [`tazuna.yaml` schema - " +"Manifest](../tazuna-yaml.md#manifest)." #: src/reference/manifest-types/index.md:11 msgid "" -"以前あった `type: parallel` は、`dependsOn` ベースの DAG 実行モデルに置き換わ" -"るため 本リファクタで削除されています。並列に流したい Manifest は通常の " -"Manifest として 並べたうえで `dependsOn` を空にしておけば、同じ層に入り並列実" -"行されます。 詳細は [`dependsOn` による DAG 実行](../../concepts/depends-" -"on.md) を参照してください。" +"以前あった `type: parallel` は、`dependsOn` ベースの DAG 実行モデルに置き換わるため " +"本リファクタで削除されています。並列に流したい Manifest は通常の Manifest として 並べたうえで `dependsOn` " +"を空にしておけば、同じ層に入り並列実行されます。 詳細は [`dependsOn` による DAG " +"実行](../../concepts/depends-on.md) を参照してください。" msgstr "" "The former `type: parallel` has been removed in this refactor, replaced by " "the `dependsOn`-based DAG execution model. To run Manifests in parallel, " "line them up as ordinary Manifests and leave `dependsOn` empty; they fall " -"into the same layer and run in parallel. See [DAG Execution via `dependsOn`]" -"(../../concepts/depends-on.md) for details." +"into the same layer and run in parallel. See [DAG Execution via " +"`dependsOn`](../../concepts/depends-on.md) for details." #: src/reference/manifest-types/index.md:18 -msgid "" -"[`kustomize`](./kustomize.md) — kustomize でレンダリングしたリソースを反映す" -"る" +msgid "[`kustomize`](./kustomize.md) — kustomize でレンダリングしたリソースを反映する" msgstr "[`kustomize`](./kustomize.md) — apply resources rendered by kustomize" #: src/reference/manifest-types/index.md:19 @@ -8502,8 +8635,8 @@ msgstr "[`helmfile`](./helmfile.md) — apply the result of helmfile template" #: src/reference/manifest-types/index.md:20 msgid "" -"[`oras`](./oras.md) — OCI registry から artifact を pull し、helmfile / " -"kustomize に委譲する" +"[`oras`](./oras.md) — OCI registry から artifact を pull し、helmfile / kustomize" +" に委譲する" msgstr "" "[`oras`](./oras.md) — pull an artifact from an OCI registry and delegate to " "helmfile / kustomize" @@ -8522,8 +8655,8 @@ msgstr "Type-to-Specific-Field Correspondence" #: src/reference/manifest-types/index.md:25 msgid "" -"各 type は `manifests[]` 内で **対応するオプションオブジェクト** を持ちま" -"す。 `type` と対応するフィールドだけが読まれ、他は無視されます。" +"各 type は `manifests[]` 内で **対応するオプションオブジェクト** を持ちます。 `type` " +"と対応するフィールドだけが読まれ、他は無視されます。" msgstr "" "Each type has a **corresponding options object** inside `manifests[]`. Only " "the field corresponding to `type` is read; the others are ignored." @@ -8556,13 +8689,12 @@ msgstr "Empty object (no fields in the current version)" #: src/reference/manifest-types/index.md:35 msgid "" -"`type: genesissecret` は全部小文字ですが、対応するフィールド名は " -"`genesisSecret`(camelCase)です。 YAML キーは camelCase に統一されており、" -"`type` の値だけがプレーンな識別子(全部小文字)になっています。" +"`type: genesissecret` は全部小文字ですが、対応するフィールド名は `genesisSecret`(camelCase)です。 " +"YAML キーは camelCase に統一されており、`type` の値だけがプレーンな識別子(全部小文字)になっています。" msgstr "" "`type: genesissecret` is all lowercase, but the corresponding field name is " -"`genesisSecret` (camelCase). YAML keys are uniformly camelCase, and only the " -"value of `type` is a plain identifier (all lowercase)." +"`genesisSecret` (camelCase). YAML keys are uniformly camelCase, and only the" +" value of `type` is a plain identifier (all lowercase)." #: src/reference/manifest-types/index.md:38 msgid "type と `path` の対応" @@ -8570,42 +8702,41 @@ msgstr "Type-to-`path` Correspondence" #: src/reference/manifest-types/index.md:40 msgid "" -"`path` は **`tazuna.yaml` 自身の置かれているディレクトリ起点** の相対パスとし" -"て解釈されます。 type ごとに何を指すべきかが異なります。" +"`path` は **`tazuna.yaml` 自身の置かれているディレクトリ起点** の相対パスとして解釈されます。 type " +"ごとに何を指すべきかが異なります。" msgstr "" "`path` is interpreted as a path relative to **the directory in which " "`tazuna.yaml` itself resides**. What it should point to differs by type." #: src/reference/manifest-types/index.md:48 -msgid "" -"GenesisSecret YAML **ファイル**(他の type と違い、ディレクトリではなく単一" -"ファイル)" +msgid "GenesisSecret YAML **ファイル**(他の type と違い、ディレクトリではなく単一ファイル)" msgstr "" -"GenesisSecret YAML **file** (unlike other types, a single file rather than a " -"directory)" +"GenesisSecret YAML **file** (unlike other types, a single file rather than a" +" directory)" #: src/reference/manifest-types/kustomize.md:3 msgid "" -"`kustomize` Manifest は、kustomize でレンダリングした Kubernetes manifest を" -"クラスタへ反映します。 Tazuna は内部で kustomize (`sigs.k8s.io/kustomize`) を" -"呼び、`kustomize build ` 相当の 結果を生成して使います。" +"`kustomize` Manifest は、kustomize でレンダリングした Kubernetes manifest をクラスタへ反映します。 " +"Tazuna は内部で kustomize (`sigs.k8s.io/kustomize`) を呼び、`kustomize build `" +" 相当の 結果を生成して使います。" msgstr "" "A `kustomize` Manifest applies the Kubernetes manifests rendered by " -"kustomize into the cluster. Internally, Tazuna calls kustomize (`sigs.k8s.io/" -"kustomize`) and uses the result equivalent to `kustomize build `." +"kustomize into the cluster. Internally, Tazuna calls kustomize " +"(`sigs.k8s.io/kustomize`) and uses the result equivalent to `kustomize build" +" `." #: src/reference/manifest-types/kustomize.md:9 msgid "" -"`kustomization.yaml` が置かれているディレクトリを指します。 **`tazuna.yaml` " -"自身のディレクトリ起点** の相対パスで書きます。 ディレクトリ内に妥当な " -"`kustomization.yaml` が無いと `tazuna build` / `apply` が失敗します。" +"`kustomization.yaml` が置かれているディレクトリを指します。 **`tazuna.yaml` 自身のディレクトリ起点** " +"の相対パスで書きます。 ディレクトリ内に妥当な `kustomization.yaml` が無いと `tazuna build` / `apply` " +"が失敗します。" msgstr "" "Points to the directory containing `kustomization.yaml`. Write the path " -"relative to **the directory of `tazuna.yaml` itself**. If the directory does " -"not have a valid `kustomization.yaml`, `tazuna build` / `apply` fails." +"relative to **the directory of `tazuna.yaml` itself**. If the directory does" +" not have a valid `kustomization.yaml`, `tazuna build` / `apply` fails." #: src/reference/manifest-types/kustomize.md:13 -#: src/reference/manifest-types/helmfile.md:17 +#: src/reference/manifest-types/helmfile.md:58 #: src/reference/manifest-types/oras.md:17 #: src/reference/manifest-types/genesissecret.md:23 msgid "固有フィールド" @@ -8616,22 +8747,21 @@ msgid "`manifests[].kustomize` のオブジェクトに書きます。" msgstr "Written inside the `manifests[].kustomize` object." #: src/reference/manifest-types/kustomize.md:19 -#: src/reference/manifest-types/helmfile.md:25 +#: src/reference/manifest-types/helmfile.md:66 msgid "`defaultNamespace`" msgstr "`defaultNamespace`" #: src/reference/manifest-types/kustomize.md:19 msgid "" -"レンダリング結果のリソースで `metadata.namespace` が未指定のものに付与する " -"namespace。空のときはリソース側に書かれた namespace(無ければ Kubernetes 既定" -"の `default`)が使われます。" +"レンダリング結果のリソースで `metadata.namespace` が未指定のものに付与する namespace。空のときはリソース側に書かれた " +"namespace(無ければ Kubernetes 既定の `default`)が使われます。" msgstr "" "The namespace assigned to rendered resources whose `metadata.namespace` is " "unset. When empty, the namespace written on the resource (or the Kubernetes " "default `default` if absent) is used." #: src/reference/manifest-types/kustomize.md:21 -#: src/reference/manifest-types/helmfile.md:85 +#: src/reference/manifest-types/helmfile.md:126 #: src/reference/manifest-types/oras.md:47 #: src/reference/manifest-types/genesissecret.md:38 #: src/reference/cli/init.md:10 src/reference/cli/apply.md:11 @@ -8640,42 +8770,40 @@ msgstr "" #: src/reference/cli/plan.md:11 src/reference/cli/status.md:11 #: src/reference/cli/state-list.md:10 src/reference/cli/state-diff.md:10 #: src/reference/cli/state-drift.md:12 -#: src/reference/cli/secret-to-genesissecret.md:16 src/reference/cli/tags.md:10 -#: src/reference/cli/version.md:12 +#: src/reference/cli/secret-to-genesissecret.md:16 +#: src/reference/cli/tags.md:10 src/reference/cli/version.md:12 msgid "振る舞い" msgstr "Behavior" #: src/reference/manifest-types/kustomize.md:23 -#: src/reference/manifest-types/helmfile.md:87 +#: src/reference/manifest-types/helmfile.md:128 #: src/reference/manifest-types/oras.md:49 #: src/reference/manifest-types/genesissecret.md:40 msgid "操作" msgstr "Operation" #: src/reference/manifest-types/kustomize.md:23 -#: src/reference/manifest-types/helmfile.md:87 +#: src/reference/manifest-types/helmfile.md:128 #: src/reference/manifest-types/oras.md:49 #: src/reference/manifest-types/genesissecret.md:40 msgid "内部処理" msgstr "Internal processing" #: src/reference/manifest-types/kustomize.md:25 -#: src/reference/manifest-types/helmfile.md:89 +#: src/reference/manifest-types/helmfile.md:130 #: src/reference/manifest-types/oras.md:51 #: src/reference/manifest-types/genesissecret.md:42 msgid "`Build`" msgstr "`Build`" #: src/reference/manifest-types/kustomize.md:25 -msgid "" -"`kustomize build ` 相当のレンダリングを行い、結果 YAML を標準出力に書" -"く。" +msgid "`kustomize build ` 相当のレンダリングを行い、結果 YAML を標準出力に書く。" msgstr "" "Render the equivalent of `kustomize build ` and write the YAML result " "to stdout." #: src/reference/manifest-types/kustomize.md:26 -#: src/reference/manifest-types/helmfile.md:90 +#: src/reference/manifest-types/helmfile.md:131 #: src/reference/manifest-types/oras.md:52 #: src/reference/manifest-types/genesissecret.md:43 msgid "`Apply`" @@ -8683,14 +8811,15 @@ msgstr "`Apply`" #: src/reference/manifest-types/kustomize.md:26 msgid "" -"レンダリング結果を unstructured オブジェクト群に変換し、`defaultNamespace` を" -"補完したうえで 1 つずつ `CreateOrUpdate` する。" +"レンダリング結果を unstructured オブジェクト群に変換し、`defaultNamespace` を補完したうえで 1 つずつ Server-" +"Side Apply (FieldOwner=`tazuna`) する。" msgstr "" "Convert the rendering result to a set of unstructured objects, supplement " -"`defaultNamespace`, and `CreateOrUpdate` them one by one." +"`defaultNamespace`, and Server-Side Apply (FieldOwner=`tazuna`) them one by " +"one." #: src/reference/manifest-types/kustomize.md:27 -#: src/reference/manifest-types/helmfile.md:91 +#: src/reference/manifest-types/helmfile.md:132 #: src/reference/manifest-types/oras.md:53 #: src/reference/manifest-types/genesissecret.md:44 msgid "`Destroy`" @@ -8698,19 +8827,16 @@ msgstr "`Destroy`" #: src/reference/manifest-types/kustomize.md:27 msgid "" -"レンダリング結果を unstructured オブジェクト群に変換し、`defaultNamespace` を" -"補完したうえで 1 つずつ削除する。" +"レンダリング結果を unstructured オブジェクト群に変換し、`defaultNamespace` を補完したうえで 1 つずつ削除する。" msgstr "" "Convert the rendering result to a set of unstructured objects, supplement " "`defaultNamespace`, and delete them one by one." #: src/reference/manifest-types/kustomize.md:29 -msgid "" -"`kustomize build` 自体はクラスタへの接続を必要としません。 ローカルファイルだ" -"けで完結します。" +msgid "`kustomize build` 自体はクラスタへの接続を必要としません。 ローカルファイルだけで完結します。" msgstr "" -"`kustomize build` itself does not require a connection to the cluster. It is " -"self-contained with local files only." +"`kustomize build` itself does not require a connection to the cluster. It is" +" self-contained with local files only." #: src/reference/manifest-types/kustomize.md:38 msgid "./kustomize/ingress-nginx" @@ -8733,10 +8859,6 @@ msgstr "./kustomize/app/overlays/staging" msgid "defaultNamespace" msgstr "defaultNamespace" -#: src/reference/manifest-types/kustomize.md:46 -msgid "staging" -msgstr "staging" - #: src/reference/manifest-types/kustomize.md:51 msgid "[`tazuna.yaml` - Manifest](../tazuna-yaml.md#manifest)" msgstr "[`tazuna.yaml` - Manifest](../tazuna-yaml.md#manifest)" @@ -8747,279 +8869,379 @@ msgstr "Term: [kustomize](../../concepts/glossary.md#kustomize)" #: src/reference/manifest-types/helmfile.md:3 msgid "" -"`helmfile` Manifest は、helmfile で記述された複数の Helm release を、 " -"**`helmfile template` 相当でレンダリングしてからクラスタへ反映** する " -"Manifest type です。" +"`helmfile` Manifest は、[helmfile](https://github.com/helmfile/helmfile) 形式 " +"(のサブセット) で記述された複数の Helm release を、**`helmfile template` 相当でレンダリングしてから " +"クラスタへ反映** する Manifest type です。" msgstr "" -"A `helmfile` Manifest is a Manifest type that **renders the equivalent of " -"`helmfile template` and then applies the result to the cluster** for " -"multiple Helm releases described by helmfile." +"A `helmfile` Manifest is a Manifest type that takes multiple Helm releases " +"described in (a subset of) the " +"[helmfile](https://github.com/helmfile/helmfile) format, **renders them " +"equivalently to `helmfile template` and then applies the result to the " +"cluster**." -#: src/reference/manifest-types/helmfile.md:6 +#: src/reference/manifest-types/helmfile.md:7 msgid "" -"Tazuna は内部で `helmfile/helmfile` パッケージの `app.Template` を呼び、その" -"出力 YAML を unstructured オブジェクトに変換して `CreateOrUpdate` します。" -"helm の release 履歴は クラスタ側に保存しません(helm rollback は使えなくなり" -"ます)。 ブートストラップにおいては rollback よりも宣言的な再生成を優先する、" -"というスタンスです。" +"**互換性について** Tazuna は helmfile 本体には依存しません。`helmfile.yaml` の **サブセット** " +"を独自に解釈し、 内部的に Helm パッケージ (`helm.sh/helm/v3`) の **in-memory render** " +"(`action.Install{ClientOnly, DryRun}`) でマニフェストを生成します。形式・着想は helmfile " +"から得ていますが、helmfile そのものではありません。サポートするフィールドは [対応する helmfile サブセット](#対応する-" +"helmfile-サブセット) を参照してください。" msgstr "" -"Internally, Tazuna calls `app.Template` of the `helmfile/helmfile` package, " -"converts the output YAML to unstructured objects, and `CreateOrUpdate`s " -"them. Helm release history is not stored on the cluster side (helm rollback " -"becomes unavailable). The stance is that for bootstrapping, declarative " -"regeneration is preferred over rollback." +"**On compatibility.** Tazuna does not depend on helmfile itself. It " +"interprets a **subset** of `helmfile.yaml` on its own and internally " +"generates manifests via the Helm package's (`helm.sh/helm/v3`) **in-memory " +"render** (`action.Install{ClientOnly, DryRun}`). The format and inspiration " +"come from helmfile, but this is not helmfile itself. For the supported " +"fields, see [Supported helmfile subset](#supported-helmfile-subset)." -#: src/reference/manifest-types/helmfile.md:13 +#: src/reference/manifest-types/helmfile.md:14 msgid "" -"`helmfile.yaml`(または `helmfile.yaml.gotmpl` などの helmfile が認識するファ" -"イル)が 置かれているディレクトリを指します。 **`tazuna.yaml` 自身のディレク" -"トリ起点** の相対パスで書きます。" +"レンダリング結果の YAML は unstructured オブジェクトに変換し、Server-Side Apply " +"(FieldOwner=`tazuna`) でクラスタへ適用します。helm の release 履歴はクラスタ側に 保存しません(helm " +"rollback は使えません)。ブートストラップにおいては rollback よりも 宣言的な再生成を優先する、というスタンスです。" msgstr "" -"Points to the directory containing `helmfile.yaml` (or other files helmfile " -"recognizes such as `helmfile.yaml.gotmpl`). Write the path relative to **the " -"directory of `tazuna.yaml` itself**." +"The rendered YAML is converted to unstructured objects and applied to the " +"cluster via Server-Side Apply (FieldOwner=`tazuna`). Helm release history is" +" not stored on the cluster side (helm rollback is unavailable). The stance " +"is that for bootstrapping, declarative regeneration is preferred over " +"rollback." #: src/reference/manifest-types/helmfile.md:19 +msgid "" +"以前の実装は helmfile 本体の `app.Template` を呼び、その標準出力をグローバルに `os.Stdout` " +"を差し替えてキャプチャしていました。これは並列 apply 時にレンダリング結果が 混線し得るバグの温床でしたが、in-memory render " +"への移行により根治しています。" +msgstr "" +"The previous implementation called helmfile's own `app.Template` and " +"captured its stdout by globally replacing `os.Stdout`. This was a source of " +"bugs where rendering results could get mixed up during parallel apply, but " +"the migration to in-memory render has fixed it at the root." + +#: src/reference/manifest-types/helmfile.md:25 +msgid "" +"`helmfile.yaml`(または `helmfile.yaml.gotmpl`)ファイル、もしくはそれらが置かれている **ディレクトリ** " +"を指します。ディレクトリを指定した場合は `helmfile.yaml.gotmpl` → `helmfile.yaml` → " +"`helmfile.yml.gotmpl` → `helmfile.yml` の順で探索します。 **`tazuna.yaml` " +"自身のディレクトリ起点** の相対パスで書きます。" +msgstr "" +"Points to a `helmfile.yaml` (or `helmfile.yaml.gotmpl`) file, or the " +"**directory** containing them. When a directory is specified, it searches in" +" the order `helmfile.yaml.gotmpl` → `helmfile.yaml` → `helmfile.yml.gotmpl` " +"→ `helmfile.yml`. Write the path relative to **the directory of " +"`tazuna.yaml` itself**." + +#: src/reference/manifest-types/helmfile.md:31 +msgid "対応する helmfile サブセット" +msgstr "Supported helmfile Subset" + +#: src/reference/manifest-types/helmfile.md:33 +msgid "以下の `helmfile.yaml` の構造を解釈します。" +msgstr "It interprets the following `helmfile.yaml` structure." + +#: src/reference/manifest-types/helmfile.md:36 +msgid "releases" +msgstr "releases" + +#: src/reference/manifest-types/helmfile.md:37 +msgid "" +msgstr "" + +#: src/reference/manifest-types/helmfile.md:38 +msgid "" +" # 省略時は defaultNamespace で補完\n" +" chart" +msgstr "" +" # filled from defaultNamespace when omitted\n" +" chart" + +#: src/reference/manifest-types/helmfile.md:39 +msgid "<ローカルチャートへの相対パス>" +msgstr "" + +#: src/reference/manifest-types/helmfile.md:40 +msgid "version" +msgstr "version" + +#: src/reference/manifest-types/helmfile.md:40 +msgid "" +"<バージョン> # ローカルチャートでは情報用\n" +" values" +msgstr "" +" # informational for local charts\n" +" values" + +#: src/reference/manifest-types/helmfile.md:42 +msgid "" +msgstr "" + +#: src/reference/manifest-types/helmfile.md:43 +msgid "<インラインの値 (map)>" +msgstr "" + +#: src/reference/manifest-types/helmfile.md:46 +msgid "" +"`helmfile.yaml` 自体を Go テンプレートとして評価します。`.StateValues.` / " +"`.Values.` で [`vars`](#vars) を参照でき、`default` などの " +"[sprig](https://masterminds.github.io/sprig/) 関数が使えます。" +msgstr "" +"`helmfile.yaml` itself is evaluated as a Go template. You can reference " +"[`vars`](#vars) via `.StateValues.` / `.Values.`, and " +"[sprig](https://masterminds.github.io/sprig/) functions such as `default` " +"are available." + +#: src/reference/manifest-types/helmfile.md:49 +msgid "`chart` は **ローカルチャートへの相対パス** のみ対応します (リモートリポジトリの chart はサポートしません)。" +msgstr "" +"`chart` supports only a **relative path to a local chart** (charts from " +"remote repositories are not supported)." + +#: src/reference/manifest-types/helmfile.md:51 +msgid "" +"`values` は value ファイルのパスとインライン map を順にマージし、最後に [`extraValueFiles`](#固有フィールド)" +" を上書きとしてマージします。" +msgstr "" +"`values` merges value file paths and inline maps in order, and finally " +"merges [`extraValueFiles`](#specific-fields) as an override." + +#: src/reference/manifest-types/helmfile.md:54 +msgid "" +"helmfile 本体の以下の機能は **未対応** です: environments / リモート chart / `bases` / release" +" 間の `needs` / `hooks` / `--selector` 等。これらが必要な場合は helmfile でレンダリングした結果を " +"[`type: kustomize`](./kustomize.md) などで取り込んでください。" +msgstr "" +"The following helmfile features are **not supported**: environments / remote" +" charts / `bases` / `needs` between releases / `hooks` / `--selector`, etc. " +"If you need these, render with helmfile and import the result via [`type: " +"kustomize`](./kustomize.md) or similar." + +#: src/reference/manifest-types/helmfile.md:60 msgid "`manifests[].helmfile` のオブジェクトに書きます。" msgstr "Written inside the `manifests[].helmfile` object." -#: src/reference/manifest-types/helmfile.md:23 +#: src/reference/manifest-types/helmfile.md:64 msgid "map\\" msgstr "map\\" -#: src/reference/manifest-types/helmfile.md:23 -msgid "`{}`" -msgstr "`{}`" - -#: src/reference/manifest-types/helmfile.md:23 +#: src/reference/manifest-types/helmfile.md:64 msgid "helmfile に渡す変数。詳細は [vars](#vars) 参照。" msgstr "Variables passed to helmfile. See [vars](#vars) for details." -#: src/reference/manifest-types/helmfile.md:24 +#: src/reference/manifest-types/helmfile.md:65 msgid "`includeCRDs`" msgstr "`includeCRDs`" -#: src/reference/manifest-types/helmfile.md:24 +#: src/reference/manifest-types/helmfile.md:65 msgid "helmfile template に `--include-crds` 相当を渡します。" msgstr "Passes the equivalent of `--include-crds` to helmfile template." -#: src/reference/manifest-types/helmfile.md:25 -msgid "" -"レンダリング結果のリソースで `metadata.namespace` が未指定のものに付与する " -"namespace。" +#: src/reference/manifest-types/helmfile.md:66 +msgid "レンダリング結果のリソースで `metadata.namespace` が未指定のものに付与する namespace。" msgstr "" "The namespace assigned to rendered resources whose `metadata.namespace` is " "unset." -#: src/reference/manifest-types/helmfile.md:26 +#: src/reference/manifest-types/helmfile.md:67 msgid "`extraValueFiles`" msgstr "`extraValueFiles`" -#: src/reference/manifest-types/helmfile.md:26 +#: src/reference/manifest-types/helmfile.md:67 msgid "helmfile template に追加で渡す `--values` ファイル群。" msgstr "Additional `--values` files passed to helmfile template." -#: src/reference/manifest-types/helmfile.md:27 +#: src/reference/manifest-types/helmfile.md:68 msgid "`wait`" msgstr "`wait`" -#: src/reference/manifest-types/helmfile.md:27 +#: src/reference/manifest-types/helmfile.md:68 msgid "" -"`true` のとき、`Apply` 後に対象リソースが Ready になるまで待ちます。詳細は " -"[wait の挙動](#wait-の挙動) 参照。" +"`true` のとき、`Apply` 後に対象リソースが Ready になるまで待ちます。詳細は [wait の挙動](#wait-の挙動) 参照。" msgstr "" -"When `true`, wait after `Apply` until the target resources become Ready. See " -"[wait behavior](#wait-の挙動) for details." +"When `true`, wait after `Apply` until the target resources become Ready. See" +" [wait behavior](#wait-の挙動) for details." -#: src/reference/manifest-types/helmfile.md:28 -msgid "" -"`wait` の最大待機秒数。`0` のときは内部で `300` 秒(5 分)が使われます。" +#: src/reference/manifest-types/helmfile.md:69 +msgid "`wait` の最大待機秒数。`0` のときは内部で `300` 秒(5 分)が使われます。" msgstr "" -"Maximum wait seconds for `wait`. With `0`, `300` seconds (5 minutes) is used " -"internally." +"Maximum wait seconds for `wait`. With `0`, `300` seconds (5 minutes) is used" +" internally." -#: src/reference/manifest-types/helmfile.md:29 +#: src/reference/manifest-types/helmfile.md:70 msgid "`kubeVersion`" msgstr "`kubeVersion`" -#: src/reference/manifest-types/helmfile.md:29 +#: src/reference/manifest-types/helmfile.md:70 msgid "helmfile template に渡す `--kube-version` の値。" msgstr "Value passed as `--kube-version` to helmfile template." -#: src/reference/manifest-types/helmfile.md:33 -msgid "" -"`vars` のキーは helmfile 側の変数名、値が [HelmFileVar](#helmfilevar) です。" +#: src/reference/manifest-types/helmfile.md:74 +msgid "`vars` のキーは helmfile 側の変数名、値が [HelmFileVar](#helmfilevar) です。" msgstr "" -"`vars` keys are helmfile-side variable names; values are [HelmFileVar]" -"(#helmfilevar)." +"`vars` keys are helmfile-side variable names; values are " +"[HelmFileVar](#helmfilevar)." -#: src/reference/manifest-types/helmfile.md:35 +#: src/reference/manifest-types/helmfile.md:76 msgid "`tazuna.yaml` のロード時、`vars` は次の順序で解決されます。" msgstr "" "At `tazuna.yaml` load time, `vars` are resolved in the following order." -#: src/reference/manifest-types/helmfile.md:37 +#: src/reference/manifest-types/helmfile.md:78 msgid "各 var の `from` (`env` / `static` / `op`) に応じて値を取得する。" msgstr "" "Retrieve the value according to each var's `from` (`env` / `static` / `op`)." -#: src/reference/manifest-types/helmfile.md:38 +#: src/reference/manifest-types/helmfile.md:79 msgid "" -"同じディレクトリに [`tazuna.hint.yaml`](../tazuna-hint-yaml.md) があれば、" -"`tazuna.hint.yaml` の 検証・デフォルト注入を行う。" +"同じディレクトリに [`tazuna.hint.yaml`](../tazuna-hint-yaml.md) " +"があれば、`tazuna.hint.yaml` の 検証・デフォルト注入を行う。" msgstr "" "If a [`tazuna.hint.yaml`](../tazuna-hint-yaml.md) is in the same directory, " "run its validation and default injection." -#: src/reference/manifest-types/helmfile.md:41 +#: src/reference/manifest-types/helmfile.md:82 msgid "" -"`vars` に書かないでも `tazuna.hint.yaml` の `default` から値が入る、という" -"ケースもあります。 逆に `tazuna.hint.yaml` の制約に違反するとここでエラーにな" -"ります。" +"`vars` に書かないでも `tazuna.hint.yaml` の `default` から値が入る、というケースもあります。 逆に " +"`tazuna.hint.yaml` の制約に違反するとここでエラーになります。" msgstr "" "Sometimes a value is injected via `tazuna.hint.yaml`'s `default` even when " "`vars` does not specify it. Conversely, violating a `tazuna.hint.yaml` " "constraint causes an error here." -#: src/reference/manifest-types/helmfile.md:44 +#: src/reference/manifest-types/helmfile.md:85 msgid "HelmFileVar" msgstr "HelmFileVar" -#: src/reference/manifest-types/helmfile.md:48 +#: src/reference/manifest-types/helmfile.md:89 msgid "`from`" msgstr "`from`" -#: src/reference/manifest-types/helmfile.md:48 +#: src/reference/manifest-types/helmfile.md:89 msgid "値の取得元。`env` / `static` / `op` のいずれか。" msgstr "Where the value is retrieved from. One of `env` / `static` / `op`." -#: src/reference/manifest-types/helmfile.md:49 +#: src/reference/manifest-types/helmfile.md:90 msgid "`env`" msgstr "`env`" -#: src/reference/manifest-types/helmfile.md:49 +#: src/reference/manifest-types/helmfile.md:90 msgid "`from: env` のとき必須。参照する環境変数名。" msgstr "" -"Required when `from: env`. The name of the environment variable to reference." +"Required when `from: env`. The name of the environment variable to " +"reference." -#: src/reference/manifest-types/helmfile.md:50 +#: src/reference/manifest-types/helmfile.md:91 msgid "`static`" msgstr "`static`" -#: src/reference/manifest-types/helmfile.md:50 +#: src/reference/manifest-types/helmfile.md:91 msgid "`from: static` のときに使う。スカラー値。" msgstr "Used when `from: static`. A scalar value." -#: src/reference/manifest-types/helmfile.md:51 +#: src/reference/manifest-types/helmfile.md:92 msgid "`staticSlice`" msgstr "`staticSlice`" -#: src/reference/manifest-types/helmfile.md:51 +#: src/reference/manifest-types/helmfile.md:92 msgid "`from: static` のときに使う。スライス値。" msgstr "Used when `from: static`. A slice value." -#: src/reference/manifest-types/helmfile.md:52 +#: src/reference/manifest-types/helmfile.md:93 msgid "`staticMap`" msgstr "`staticMap`" -#: src/reference/manifest-types/helmfile.md:52 +#: src/reference/manifest-types/helmfile.md:93 msgid "`from: static` のときに使う。マップ値。" msgstr "Used when `from: static`. A map value." -#: src/reference/manifest-types/helmfile.md:53 +#: src/reference/manifest-types/helmfile.md:94 msgid "`op`" msgstr "`op`" -#: src/reference/manifest-types/helmfile.md:53 +#: src/reference/manifest-types/helmfile.md:94 msgid "[OnePasswordVaultSelector](#onepasswordvaultselector)" msgstr "[OnePasswordVaultSelector](#onepasswordvaultselector)" -#: src/reference/manifest-types/helmfile.md:53 +#: src/reference/manifest-types/helmfile.md:94 msgid "`from: op` のとき必須。" msgstr "Required when `from: op`." -#: src/reference/manifest-types/helmfile.md:55 +#: src/reference/manifest-types/helmfile.md:96 msgid "" -"(※) `from` の値に応じて、`env` / `static` 系のいずれか 1 つ / `op` が必須で" -"す。 `from: static` の場合、`static` / `staticSlice` / `staticMap` のうち " -"**1 つだけ** が設定されている必要があります。" +"(※) `from` の値に応じて、`env` / `static` 系のいずれか 1 つ / `op` が必須です。 `from: static` " +"の場合、`static` / `staticSlice` / `staticMap` のうち **1 つだけ** が設定されている必要があります。" msgstr "" "(*) Depending on the value of `from`, one of `env` / `static` / `op` is " "required. For `from: static`, **exactly one** of `static` / `staticSlice` / " "`staticMap` must be set." -#: src/reference/manifest-types/helmfile.md:58 +#: src/reference/manifest-types/helmfile.md:99 msgid "OnePasswordVaultSelector" msgstr "OnePasswordVaultSelector" -#: src/reference/manifest-types/helmfile.md:62 +#: src/reference/manifest-types/helmfile.md:103 msgid "`key`" msgstr "`key`" -#: src/reference/manifest-types/helmfile.md:62 -msgid "" -"フィールドを `id` で参照するか `label` で参照するか。`id` または `label`。" +#: src/reference/manifest-types/helmfile.md:103 +msgid "フィールドを `id` で参照するか `label` で参照するか。`id` または `label`。" msgstr "" "Whether to reference the field by `id` or `label`. Either `id` or `label`." -#: src/reference/manifest-types/helmfile.md:63 +#: src/reference/manifest-types/helmfile.md:104 msgid "`vault`" msgstr "`vault`" -#: src/reference/manifest-types/helmfile.md:63 +#: src/reference/manifest-types/helmfile.md:104 msgid "1Password の Vault 名。" msgstr "1Password vault name." -#: src/reference/manifest-types/helmfile.md:64 +#: src/reference/manifest-types/helmfile.md:105 msgid "`item`" msgstr "`item`" -#: src/reference/manifest-types/helmfile.md:64 +#: src/reference/manifest-types/helmfile.md:105 msgid "1Password の Item 名。" msgstr "1Password item name." -#: src/reference/manifest-types/helmfile.md:65 +#: src/reference/manifest-types/helmfile.md:106 msgid "`field`" msgstr "`field`" -#: src/reference/manifest-types/helmfile.md:65 -msgid "" -"取得するフィールド。`key` が `id` ならフィールドの ID、`label` ならラベル。" +#: src/reference/manifest-types/helmfile.md:106 +msgid "取得するフィールド。`key` が `id` ならフィールドの ID、`label` ならラベル。" msgstr "" "Field to retrieve. The field ID when `key` is `id`, or the label when `key` " "is `label`." -#: src/reference/manifest-types/helmfile.md:67 +#: src/reference/manifest-types/helmfile.md:108 msgid "`wait` の挙動" msgstr "`wait` Behavior" -#: src/reference/manifest-types/helmfile.md:69 +#: src/reference/manifest-types/helmfile.md:110 msgid "" -"`wait: true` のとき、`Apply` の終わりに対象リソース全部の Ready 待ちが走りま" -"す。 2 秒間隔で polling し、`timeoutSeconds`(未指定なら 300 秒)を超えるとエ" -"ラー。" +"`wait: true` のとき、`Apply` の終わりに対象リソース全部の Ready 待ちが走ります。 2 秒間隔で polling " +"し、`timeoutSeconds`(未指定なら 300 秒)を超えるとエラー。" msgstr "" -"When `wait: true`, after `Apply` finishes, it waits for all target resources " -"to become Ready. Polling happens at 2-second intervals; exceeding " +"When `wait: true`, after `Apply` finishes, it waits for all target resources" +" to become Ready. Polling happens at 2-second intervals; exceeding " "`timeoutSeconds` (300 by default) is an error." -#: src/reference/manifest-types/helmfile.md:72 +#: src/reference/manifest-types/helmfile.md:113 msgid "各 Kind の Ready 判定:" msgstr "Ready judgment per Kind:" -#: src/reference/manifest-types/helmfile.md:74 src/reference/cli/status.md:36 +#: src/reference/manifest-types/helmfile.md:115 src/reference/cli/status.md:36 msgid "Kind" msgstr "Kind" -#: src/reference/manifest-types/helmfile.md:74 +#: src/reference/manifest-types/helmfile.md:115 msgid "Ready 条件" msgstr "Ready condition" -#: src/reference/manifest-types/helmfile.md:76 src/reference/cli/status.md:38 +#: src/reference/manifest-types/helmfile.md:117 src/reference/cli/status.md:38 msgid "`Deployment`" msgstr "`Deployment`" -#: src/reference/manifest-types/helmfile.md:76 +#: src/reference/manifest-types/helmfile.md:117 msgid "" "`spec.replicas == 0` なら即 Ready。それ以外は `status.readyReplicas == " "status.replicas` かつ `status.availableReplicas == status.replicas` かつ " @@ -9029,11 +9251,11 @@ msgstr "" "== status.replicas` AND `status.availableReplicas == status.replicas` AND " "`status.replicas > 0`" -#: src/reference/manifest-types/helmfile.md:77 src/reference/cli/status.md:39 +#: src/reference/manifest-types/helmfile.md:118 src/reference/cli/status.md:39 msgid "`StatefulSet`" msgstr "`StatefulSet`" -#: src/reference/manifest-types/helmfile.md:77 +#: src/reference/manifest-types/helmfile.md:118 msgid "" "`spec.replicas == 0` なら即 Ready。それ以外は `status.readyReplicas == " "status.replicas` かつ `status.replicas > 0`" @@ -9041,11 +9263,11 @@ msgstr "" "Immediately Ready if `spec.replicas == 0`. Otherwise: `status.readyReplicas " "== status.replicas` AND `status.replicas > 0`" -#: src/reference/manifest-types/helmfile.md:78 src/reference/cli/status.md:40 +#: src/reference/manifest-types/helmfile.md:119 src/reference/cli/status.md:40 msgid "`DaemonSet`" msgstr "`DaemonSet`" -#: src/reference/manifest-types/helmfile.md:78 +#: src/reference/manifest-types/helmfile.md:119 msgid "" "`status.numberReady == status.desiredNumberScheduled` かつ " "`status.desiredNumberScheduled > 0`" @@ -9053,198 +9275,193 @@ msgstr "" "`status.numberReady == status.desiredNumberScheduled` AND " "`status.desiredNumberScheduled > 0`" -#: src/reference/manifest-types/helmfile.md:79 src/reference/cli/status.md:41 +#: src/reference/manifest-types/helmfile.md:120 src/reference/cli/status.md:41 msgid "`Pod`" msgstr "`Pod`" -#: src/reference/manifest-types/helmfile.md:79 src/reference/cli/status.md:41 +#: src/reference/manifest-types/helmfile.md:120 src/reference/cli/status.md:41 msgid "`status.phase == \"Running\"` かつ `Ready` condition が `True`" msgstr "`status.phase == \"Running\"` AND `Ready` condition is `True`" -#: src/reference/manifest-types/helmfile.md:80 src/reference/cli/status.md:42 +#: src/reference/manifest-types/helmfile.md:121 src/reference/cli/status.md:42 msgid "その他" msgstr "Others" -#: src/reference/manifest-types/helmfile.md:80 +#: src/reference/manifest-types/helmfile.md:121 msgid "取得できれば即 Ready 扱い(`ConfigMap` / `Secret` / `Service` など)" msgstr "" -"Treated as Ready as soon as retrievable (`ConfigMap` / `Secret` / `Service`, " -"etc.)" +"Treated as Ready as soon as retrievable (`ConfigMap` / `Secret` / `Service`," +" etc.)" -#: src/reference/manifest-types/helmfile.md:82 +#: src/reference/manifest-types/helmfile.md:123 msgid "" -"`wait` で待ちきれないリソース固有の条件(CRD の status など)を表現したい場合" -"は、 [Test plugin](../test-plugin.md) の `WaitUntil`(CEL 式)を使うほうが柔" -"軟です。" +"`wait` で待ちきれないリソース固有の条件(CRD の status など)を表現したい場合は、 [Test plugin](../test-" +"plugin.md) の `WaitUntil`(CEL 式)を使うほうが柔軟です。" msgstr "" "When you want to express resource-specific conditions that `wait` cannot " "handle (such as a CRD's status), using [Test plugin](../test-plugin.md)'s " "`WaitUntil` (CEL expression) is more flexible." -#: src/reference/manifest-types/helmfile.md:89 -msgid "helmfile template の出力 YAML を標準出力に書く。" -msgstr "Write the helmfile template output YAML to stdout." +#: src/reference/manifest-types/helmfile.md:130 +msgid "helm の in-memory render の結果 YAML を返す。" +msgstr "Returns the YAML result of helm's in-memory render." -#: src/reference/manifest-types/helmfile.md:90 +#: src/reference/manifest-types/helmfile.md:131 msgid "" -"helmfile template の結果を unstructured 化し、`defaultNamespace` を補完して順" -"に `CreateOrUpdate`。`wait` が `true` なら Ready 待ち。" +"render 結果を unstructured 化し、`defaultNamespace` を補完して順に Server-Side " +"Apply。`wait` が `true` なら Ready 待ち。" msgstr "" -"Convert the helmfile template result to unstructured form, supplement " -"`defaultNamespace`, and `CreateOrUpdate` in order. If `wait` is `true`, wait " -"for Ready." +"Convert the render result to unstructured form, supplement " +"`defaultNamespace`, and Server-Side Apply in order. If `wait` is `true`, " +"wait for Ready." -#: src/reference/manifest-types/helmfile.md:91 +#: src/reference/manifest-types/helmfile.md:132 msgid "" -"helmfile template の結果を unstructured 化し、`defaultNamespace` を補完して順" -"に削除。`wait` は適用されません。" +"render 結果を unstructured 化し、`defaultNamespace` を補完して順に削除。`wait` は適用されません。" msgstr "" -"Convert the helmfile template result to unstructured form, supplement " +"Convert the render result to unstructured form, supplement " "`defaultNamespace`, and delete in order. `wait` is not applied." -#: src/reference/manifest-types/helmfile.md:93 +#: src/reference/manifest-types/helmfile.md:134 msgid "" -"`Apply` / `Destroy` / `Build` のいずれも helmfile template の段階で `vars` を" -"解決します。 解決に失敗した場合(環境変数未設定、1Password の Item にフィール" -"ドが無い等)はクラスタには触れずに失敗します。" +"`Apply` / `Destroy` / `Build` のいずれも render の段階で `vars` を解決します。 " +"解決に失敗した場合(環境変数未設定、1Password の Item にフィールドが無い等)はクラスタには触れずに失敗します。" msgstr "" -"All of `Apply` / `Destroy` / `Build` resolve `vars` at the helmfile template " -"stage. If resolution fails (environment variable unset, field missing in " -"1Password item, etc.), it fails without touching the cluster." +"All of `Apply` / `Destroy` / `Build` resolve `vars` at the render stage. If " +"resolution fails (environment variable unset, field missing in the 1Password" +" item, etc.), it fails without touching the cluster." -#: src/reference/manifest-types/helmfile.md:102 +#: src/reference/manifest-types/helmfile.md:143 msgid "./helmfile/cert-manager" msgstr "./helmfile/cert-manager" -#: src/reference/manifest-types/helmfile.md:104 +#: src/reference/manifest-types/helmfile.md:145 #: src/reference/manifest-types/oras.md:126 msgid "includeCRDs" msgstr "includeCRDs" -#: src/reference/manifest-types/helmfile.md:105 +#: src/reference/manifest-types/helmfile.md:146 #: src/reference/manifest-types/oras.md:127 msgid "wait" msgstr "wait" -#: src/reference/manifest-types/helmfile.md:108 +#: src/reference/manifest-types/helmfile.md:149 msgid "clusterIssuerEmail" msgstr "clusterIssuerEmail" -#: src/reference/manifest-types/helmfile.md:109 -#: src/reference/manifest-types/helmfile.md:112 -#: src/reference/manifest-types/helmfile.md:119 +#: src/reference/manifest-types/helmfile.md:150 +#: src/reference/manifest-types/helmfile.md:153 +#: src/reference/manifest-types/helmfile.md:160 msgid "from" msgstr "from" -#: src/reference/manifest-types/helmfile.md:110 +#: src/reference/manifest-types/helmfile.md:151 msgid "CLUSTER_ISSUER_EMAIL" msgstr "CLUSTER_ISSUER_EMAIL" -#: src/reference/manifest-types/helmfile.md:111 +#: src/reference/manifest-types/helmfile.md:152 msgid "dnsProviderApiToken" msgstr "dnsProviderApiToken" -#: src/reference/manifest-types/helmfile.md:112 -#: src/reference/manifest-types/helmfile.md:113 +#: src/reference/manifest-types/helmfile.md:153 +#: src/reference/manifest-types/helmfile.md:154 msgid "op" msgstr "op" -#: src/reference/manifest-types/helmfile.md:114 +#: src/reference/manifest-types/helmfile.md:155 msgid "key" msgstr "key" -#: src/reference/manifest-types/helmfile.md:114 +#: src/reference/manifest-types/helmfile.md:155 msgid "label" msgstr "label" -#: src/reference/manifest-types/helmfile.md:115 +#: src/reference/manifest-types/helmfile.md:156 msgid "vault" msgstr "vault" -#: src/reference/manifest-types/helmfile.md:115 +#: src/reference/manifest-types/helmfile.md:156 msgid "Platform" msgstr "Platform" -#: src/reference/manifest-types/helmfile.md:116 +#: src/reference/manifest-types/helmfile.md:157 msgid "item" msgstr "item" -#: src/reference/manifest-types/helmfile.md:117 +#: src/reference/manifest-types/helmfile.md:158 msgid "field" msgstr "field" -#: src/reference/manifest-types/helmfile.md:117 +#: src/reference/manifest-types/helmfile.md:158 msgid "cloudflare-api-token" msgstr "cloudflare-api-token" -#: src/reference/manifest-types/helmfile.md:118 +#: src/reference/manifest-types/helmfile.md:159 msgid "extraLabels" msgstr "extraLabels" -#: src/reference/manifest-types/helmfile.md:119 +#: src/reference/manifest-types/helmfile.md:160 msgid "static" msgstr "static" -#: src/reference/manifest-types/helmfile.md:120 +#: src/reference/manifest-types/helmfile.md:161 msgid "staticMap" msgstr "staticMap" -#: src/reference/manifest-types/helmfile.md:122 +#: src/reference/manifest-types/helmfile.md:163 msgid "tier" msgstr "tier" -#: src/reference/manifest-types/helmfile.md:122 +#: src/reference/manifest-types/helmfile.md:163 msgid "platform" msgstr "platform" -#: src/reference/manifest-types/helmfile.md:127 -msgid "" -"helmfile.vars の制約: [`tazuna.hint.yaml` スキーマ](../tazuna-hint-yaml.md)" +#: src/reference/manifest-types/helmfile.md:168 +msgid "helmfile.vars の制約: [`tazuna.hint.yaml` スキーマ](../tazuna-hint-yaml.md)" msgstr "" "helmfile.vars constraints: [`tazuna.hint.yaml` schema](../tazuna-hint-" "yaml.md)" -#: src/reference/manifest-types/helmfile.md:128 +#: src/reference/manifest-types/helmfile.md:169 msgid "" -"用語: [helmfile](../../concepts/glossary.md#helmfile) / [Helm](../../" -"concepts/glossary.md#helm) / [1Password](../../concepts/" -"glossary.md#1password)" +"用語: [helmfile](../../concepts/glossary.md#helmfile) / " +"[Helm](../../concepts/glossary.md#helm) / " +"[1Password](../../concepts/glossary.md#1password)" msgstr "" -"Terminology: [helmfile](../../concepts/glossary.md#helmfile) / [Helm](../../" -"concepts/glossary.md#helm) / [1Password](../../concepts/" -"glossary.md#1password)" +"Terminology: [helmfile](../../concepts/glossary.md#helmfile) / " +"[Helm](../../concepts/glossary.md#helm) / " +"[1Password](../../concepts/glossary.md#1password)" #: src/reference/manifest-types/oras.md:3 msgid "" -"`oras` Manifest は、**OCI registry に置かれた artifact** を pull し、その内容" -"を `helmfile` または `kustomize` に **委譲して** クラスタへ反映する Manifest " -"type です。" +"`oras` Manifest は、**OCI registry に置かれた artifact** を pull し、その内容を `helmfile` " +"または `kustomize` に **委譲して** クラスタへ反映する Manifest type です。" msgstr "" "An `oras` Manifest is a Manifest type that pulls an **artifact placed in an " -"OCI registry** and **delegates** its content to `helmfile` or `kustomize` to " -"apply to the cluster." +"OCI registry** and **delegates** its content to `helmfile` or `kustomize` to" +" apply to the cluster." #: src/reference/manifest-types/oras.md:6 msgid "" -"pull → 展開 → 委譲先 Manager の呼び出し、までを ORAS Manager がまとめて行いま" -"す。 artifact の中身そのものは helmfile / kustomize と同じ作法で書きます。" +"pull → 展開 → 委譲先 Manager の呼び出し、までを ORAS Manager がまとめて行います。 artifact の中身そのものは " +"helmfile / kustomize と同じ作法で書きます。" msgstr "" -"The ORAS Manager handles the pull → extract → invoke delegate Manager chain. " -"The artifact's content itself is written in the same idiomatic style as " +"The ORAS Manager handles the pull → extract → invoke delegate Manager chain." +" The artifact's content itself is written in the same idiomatic style as " "helmfile / kustomize." #: src/reference/manifest-types/oras.md:11 msgid "" -"ORAS Manifest の `manifests[].path` は **実体としては使用されません**。 バリ" -"デーション都合で空にはできないため、何かしらのディレクトリを書きます。" +"ORAS Manifest の `manifests[].path` は **実体としては使用されません**。 " +"バリデーション都合で空にはできないため、何かしらのディレクトリを書きます。" msgstr "" "An ORAS Manifest's `manifests[].path` is **not used in practice**. Since " "validation does not allow it to be empty, write some directory." #: src/reference/manifest-types/oras.md:14 msgid "" -"委譲先 Manager に渡される `path` は、pull 後にローカルへ展開された キャッシュ" -"ディレクトリ(必要なら `target` でサブパスへ降りたもの)になります。" +"委譲先 Manager に渡される `path` は、pull 後にローカルへ展開された キャッシュディレクトリ(必要なら `target` " +"でサブパスへ降りたもの)になります。" msgstr "" "The `path` passed to the delegate Manager is the cache directory locally " "extracted after the pull (descended to a sub-path if `target` is specified)." @@ -9259,11 +9476,12 @@ msgstr "`reference`" #: src/reference/manifest-types/oras.md:23 msgid "" -"OCI artifact の reference。tag 形式 (`ghcr.io/example/foo:v1.0.0`) と digest " -"形式 (`ghcr.io/example/foo@sha256:...`) の両方を受け付けます。" +"OCI artifact の reference。tag 形式 (`ghcr.io/example/foo:v1.0.0`) と digest 形式 " +"(`ghcr.io/example/foo@sha256:...`) の両方を受け付けます。" msgstr "" -"OCI artifact reference. Accepts both the tag form (`ghcr.io/example/" -"foo:v1.0.0`) and the digest form (`ghcr.io/example/foo@sha256:...`)." +"OCI artifact reference. Accepts both the tag form " +"(`ghcr.io/example/foo:v1.0.0`) and the digest form " +"(`ghcr.io/example/foo@sha256:...`)." #: src/reference/manifest-types/oras.md:24 msgid "`target`" @@ -9271,11 +9489,11 @@ msgstr "`target`" #: src/reference/manifest-types/oras.md:24 msgid "" -"展開後の artifact root からの相対サブパス。省略時は root を指します。`..` な" -"どで artifact root を脱出する値は拒否されます。" +"展開後の artifact root からの相対サブパス。省略時は root を指します。`..` などで artifact root " +"を脱出する値は拒否されます。" msgstr "" -"Relative sub-path from the artifact root after extraction. Omitting it means " -"the root. Values that escape the artifact root via `..` and so on are " +"Relative sub-path from the artifact root after extraction. Omitting it means" +" the root. Values that escape the artifact root via `..` and so on are " "rejected." #: src/reference/manifest-types/oras.md:25 @@ -9306,8 +9524,8 @@ msgstr "[ORASAuth](#orasauth)" #: src/reference/manifest-types/oras.md:27 msgid "" -"registry の認証情報を override します。省略時は docker config.json を使用しま" -"す。詳細は [認証の解決](#認証の解決) 参照。" +"registry の認証情報を override します。省略時は docker config.json を使用します。詳細は " +"[認証の解決](#認証の解決) 参照。" msgstr "" "Overrides the registry credentials. Defaults to using docker config.json. " "See [Credential resolution](#認証の解決) for details." @@ -9345,9 +9563,7 @@ msgid "registry のパスワード。" msgstr "Registry password." #: src/reference/manifest-types/oras.md:37 -msgid "" -"両フィールドが空のときは override 扱いになりません([認証の解決](#認証の解" -"決) 参照)。" +msgid "両フィールドが空のときは override 扱いになりません([認証の解決](#認証の解決) 参照)。" msgstr "" "If both fields are empty, this is not treated as an override (see " "[Credential resolution](#認証の解決))." @@ -9386,27 +9602,23 @@ msgstr "The delegate is invoked with a new `Manifest` assembled like this:" #: src/reference/manifest-types/oras.md:57 msgid "" -"`name` / `description` / `tags` / `tests` は元の ORAS Manifest からそのまま引" -"き継ぐ。" +"`name` / `description` / `tags` / `tests` は元の ORAS Manifest からそのまま引き継ぐ。" msgstr "" -"`name` / `description` / `tags` / `tests` are carried over from the original " -"ORAS Manifest as-is." +"`name` / `description` / `tags` / `tests` are carried over from the original" +" ORAS Manifest as-is." #: src/reference/manifest-types/oras.md:58 msgid "`type` は `delegate.type`(`helmfile` / `kustomize`)。" msgstr "`type` is `delegate.type` (`helmfile` / `kustomize`)." #: src/reference/manifest-types/oras.md:59 -msgid "" -"`path` は pull 後のローカルパス(`target` 指定があれば追加でサブパスを結" -"合)。" +msgid "`path` は pull 後のローカルパス(`target` 指定があれば追加でサブパスを結合)。" msgstr "" "`path` is the local path after the pull (with sub-path appended if `target` " "is set)." #: src/reference/manifest-types/oras.md:60 -msgid "" -"固有フィールドは `delegate.helmfile` / `delegate.kustomize` をそのまま使う。" +msgid "固有フィールドは `delegate.helmfile` / `delegate.kustomize` をそのまま使う。" msgstr "Specific fields use `delegate.helmfile` / `delegate.kustomize` as-is." #: src/reference/manifest-types/oras.md:62 @@ -9419,8 +9631,8 @@ msgstr "Pull and Cache" #: src/reference/manifest-types/oras.md:66 msgid "" -"ORAS の pull は **digest 単位でローカルにキャッシュ** されます。 同じ digest " -"を持つ artifact の 2 回目以降の pull は registry にアクセスしません。" +"ORAS の pull は **digest 単位でローカルにキャッシュ** されます。 同じ digest を持つ artifact の 2 " +"回目以降の pull は registry にアクセスしません。" msgstr "" "ORAS pulls are **cached locally per digest**. Subsequent pulls of an " "artifact with the same digest do not access the registry." @@ -9451,16 +9663,14 @@ msgstr "Tag → digest mapping is recorded in `refs/`" #: src/reference/manifest-types/oras.md:75 msgid "" -"`--no-cache` を `apply` / `build` / `destroy` に指定するとキャッシュを無視し" -"て常に registry から再取得します。" +"`--no-cache` を `apply` / `build` / `destroy` に指定するとキャッシュを無視して常に registry " +"から再取得します。" msgstr "" "Specifying `--no-cache` to `apply` / `build` / `destroy` bypasses the cache " "and always refetches from the registry." #: src/reference/manifest-types/oras.md:76 -msgid "" -"`--offline` を指定すると registry へのアクセスを禁止します。キャッシュにヒッ" -"トしなければエラーになります。" +msgid "`--offline` を指定すると registry へのアクセスを禁止します。キャッシュにヒットしなければエラーになります。" msgstr "" "Specifying `--offline` forbids registry access. If the cache misses, it is " "an error." @@ -9471,11 +9681,10 @@ msgstr "`--no-cache` and `--offline` cannot be specified together." #: src/reference/manifest-types/oras.md:78 msgid "" -"CLI フラグは [`apply` / `build` / `destroy`](../cli/index.md#サブコマンド一" -"覧) のページを参照。" +"CLI フラグは [`apply` / `build` / `destroy`](../cli/index.md#サブコマンド一覧) のページを参照。" msgstr "" -"See the [`apply` / `build` / `destroy`](../cli/index.md#サブコマンド一覧) " -"pages for CLI flags." +"See the [`apply` / `build` / `destroy`](../cli/index.md#サブコマンド一覧) pages for " +"CLI flags." #: src/reference/manifest-types/oras.md:80 msgid "展開時の制約" @@ -9529,8 +9738,8 @@ msgstr "Unsupported types (character device / block device / FIFO, etc.)" #: src/reference/manifest-types/oras.md:96 msgid "" -"artifact の OCI manifest は **layer が 1 つだけ** であることが前提です。複数 " -"layer の artifact は受け付けません。" +"artifact の OCI manifest は **layer が 1 つだけ** であることが前提です。複数 layer の artifact " +"は受け付けません。" msgstr "" "The artifact's OCI manifest is required to have **only one layer**. Multi-" "layer artifacts are not accepted." @@ -9544,8 +9753,7 @@ msgid "registry に対する credential は次の優先順位で解決されま msgstr "Credentials for the registry are resolved in the following priority." #: src/reference/manifest-types/oras.md:102 -msgid "" -"`oras.auth` の override(`username` / `password` の少なくとも一方が非空)" +msgid "`oras.auth` の override(`username` / `password` の少なくとも一方が非空)" msgstr "" "`oras.auth` override (at least one of `username` / `password` is non-empty)" @@ -9561,17 +9769,17 @@ msgstr "anonymous (no authentication)" #: src/reference/manifest-types/oras.md:106 msgid "" -"`oras.auth` を書いていても両フィールドが空のときは override 扱いされず、 " -"docker 側へフォールバックします(意図しない anonymous 化を避けるため)。" +"`oras.auth` を書いていても両フィールドが空のときは override 扱いされず、 docker 側へフォールバックします(意図しない " +"anonymous 化を避けるため)。" msgstr "" -"Even if you write `oras.auth`, if both fields are empty it is not treated as " -"an override and falls back to the docker side (to avoid unintended " +"Even if you write `oras.auth`, if both fields are empty it is not treated as" +" an override and falls back to the docker side (to avoid unintended " "anonymization)." #: src/reference/manifest-types/oras.md:109 msgid "" -"同一プロセス内では token のキャッシュが共有されるため、同じ registry に対する" -"複数の pull で token を取り直すコストはかかりません。" +"同一プロセス内では token のキャッシュが共有されるため、同じ registry に対する複数の pull で token " +"を取り直すコストはかかりません。" msgstr "" "Within the same process, token caching is shared, so multiple pulls against " "the same registry do not pay the cost of re-acquiring tokens." @@ -9650,19 +9858,18 @@ msgstr "${REGISTRY_TOKEN}" #: src/reference/manifest-types/oras.md:151 msgid "" -"委譲先: [`type: helmfile`](./helmfile.md) / [`type: kustomize`](./" -"kustomize.md)" +"委譲先: [`type: helmfile`](./helmfile.md) / [`type: kustomize`](./kustomize.md)" msgstr "" -"Delegate targets: [`type: helmfile`](./helmfile.md) / [`type: kustomize`](./" -"kustomize.md)" +"Delegate targets: [`type: helmfile`](./helmfile.md) / [`type: " +"kustomize`](./kustomize.md)" #: src/reference/manifest-types/oras.md:152 msgid "" -"CLI: [`tazuna apply`](../cli/apply.md) / [`tazuna build`](../cli/build.md) / " -"[`tazuna destroy`](../cli/destroy.md)" +"CLI: [`tazuna apply`](../cli/apply.md) / [`tazuna build`](../cli/build.md) /" +" [`tazuna destroy`](../cli/destroy.md)" msgstr "" -"CLI: [`tazuna apply`](../cli/apply.md) / [`tazuna build`](../cli/build.md) / " -"[`tazuna destroy`](../cli/destroy.md)" +"CLI: [`tazuna apply`](../cli/apply.md) / [`tazuna build`](../cli/build.md) /" +" [`tazuna destroy`](../cli/destroy.md)" #: src/reference/manifest-types/oras.md:153 msgid "" @@ -9672,9 +9879,9 @@ msgstr "" #: src/reference/manifest-types/genesissecret.md:3 msgid "" -"`genesissecret` Manifest は、別ファイルに書いた **[GenesisSecret YAML](../" -"genesis-secret.md)** を読み込み、外部 Secret ストア(現バージョンでは " -"1Password)から取得した値で Kubernetes Secret を生成する Manifest type です。" +"`genesissecret` Manifest は、別ファイルに書いた **[GenesisSecret YAML](../genesis-" +"secret.md)** を読み込み、外部 Secret ストア(現バージョンでは 1Password)から取得した値で Kubernetes " +"Secret を生成する Manifest type です。" msgstr "" "A `genesissecret` Manifest is a Manifest type that reads a separately-" "written **[GenesisSecret YAML](../genesis-secret.md)** and generates " @@ -9683,9 +9890,9 @@ msgstr "" #: src/reference/manifest-types/genesissecret.md:7 msgid "" -"`tazuna.yaml` 側でこの Manifest type が担うのは「**どの GenesisSecret YAML を" -"読むか**」だけです。 中の `spec.secrets` / `spec.outputs` などの仕様は " -"[GenesisSecret スキーマ](../genesis-secret.md) を参照してください。" +"`tazuna.yaml` 側でこの Manifest type が担うのは「**どの GenesisSecret YAML を読むか**」だけです。 " +"中の `spec.secrets` / `spec.outputs` などの仕様は [GenesisSecret スキーマ](../genesis-" +"secret.md) を参照してください。" msgstr "" "All that this Manifest type carries on the `tazuna.yaml` side is **\"which " "GenesisSecret YAML to read\"**. For the spec of `spec.secrets` / " @@ -9694,9 +9901,8 @@ msgstr "" #: src/reference/manifest-types/genesissecret.md:13 msgid "" -"他の Manifest type と違い、`path` は **ディレクトリではなく YAML ファイル 1 " -"つを直接指します**。 **`tazuna.yaml` 自身のディレクトリ起点** の相対パスで書" -"きます。" +"他の Manifest type と違い、`path` は **ディレクトリではなく YAML ファイル 1 つを直接指します**。 " +"**`tazuna.yaml` 自身のディレクトリ起点** の相対パスで書きます。" msgstr "" "Unlike other Manifest types, `path` **points directly to a single YAML " "file**, not a directory. Write it relative to **the directory of " @@ -9711,12 +9917,10 @@ msgid "`manifests[].genesisSecret` のオブジェクトに書きます。" msgstr "Written inside the `manifests[].genesisSecret` object." #: src/reference/manifest-types/genesissecret.md:27 -msgid "" -"現バージョンでは **フィールドを持たない空オブジェクト** です。 将来の拡張のた" -"めに予約されているフィールド名です。" +msgid "現バージョンでは **フィールドを持たない空オブジェクト** です。 将来の拡張のために予約されているフィールド名です。" msgstr "" -"In the current version this is **an empty object with no fields**. The field " -"name is reserved for future extension." +"In the current version this is **an empty object with no fields**. The field" +" name is reserved for future extension." #: src/reference/manifest-types/genesissecret.md:35 msgid "# genesisSecret: {} # 現状は中身が空のため書く必要なし\n" @@ -9724,8 +9928,8 @@ msgstr "# genesisSecret: {} # empty for now, no need to write it\n" #: src/reference/manifest-types/genesissecret.md:42 msgid "" -"GenesisSecret YAML を読み込み、Provider から値を取得し、" -"`outputs[0].kubernetesSecret` 1 件分の Secret YAML を標準出力に書く。" +"GenesisSecret YAML を読み込み、Provider から値を取得し、`outputs[0].kubernetesSecret` 1 " +"件分の Secret YAML を標準出力に書く。" msgstr "" "Read the GenesisSecret YAML, retrieve values from the Provider, and write a " "single Secret YAML (corresponding to `outputs[0].kubernetesSecret`) to " @@ -9733,19 +9937,18 @@ msgstr "" #: src/reference/manifest-types/genesissecret.md:43 msgid "" -"GenesisSecret YAML を読み込み、Provider から値を取得し、`outputs[]` の各エン" -"トリを処理する。`kubernetesSecret` は `CreateOrUpdate`、`stdout: {}` は " -"dotenv 形式 (`KEY=VALUE` ソート済み) で標準出力に書き出す。" +"GenesisSecret YAML を読み込み、Provider から値を取得し、`outputs[]` " +"の各エントリを処理する。`kubernetesSecret` は `CreateOrUpdate`、`stdout: {}` は dotenv 形式 " +"(`KEY=VALUE` ソート済み) で標準出力に書き出す。" msgstr "" "Read the GenesisSecret YAML, retrieve values from the Provider, and process " -"each entry of `outputs[]`. `kubernetesSecret` is `CreateOrUpdate`d; `stdout: " -"{}` is written to standard output in dotenv format (`KEY=VALUE`, sorted)." +"each entry of `outputs[]`. `kubernetesSecret` is `CreateOrUpdate`d; `stdout:" +" {}` is written to standard output in dotenv format (`KEY=VALUE`, sorted)." #: src/reference/manifest-types/genesissecret.md:44 msgid "" -"GenesisSecret YAML を読み込み(Provider 取得も実行されます)、" -"`outputs[].kubernetesSecret` の `namespace` / `name` に該当する Secret を削除" -"する。`stdout` output は何もしない。" +"GenesisSecret YAML を読み込み(Provider 取得も実行されます)、`outputs[].kubernetesSecret` の " +"`namespace` / `name` に該当する Secret を削除する。`stdout` output は何もしない。" msgstr "" "Read the GenesisSecret YAML (Provider retrieval also runs) and delete the " "Secret matching the `namespace` / `name` of each " @@ -9753,10 +9956,9 @@ msgstr "" #: src/reference/manifest-types/genesissecret.md:46 msgid "" -"`Build` は `outputs` の先頭 1 件のみを出力する点が `Apply` と異なります(複" -"数 outputs を 書いていても、`tazuna build` の出力は 1 件分です)。詳細は " -"[GenesisSecret - 解決の流れ](../genesis-secret.md#解決の流れ) を参照してくだ" -"さい。" +"`Build` は `outputs` の先頭 1 件のみを出力する点が `Apply` と異なります(複数 outputs を " +"書いていても、`tazuna build` の出力は 1 件分です)。詳細は [GenesisSecret - 解決の流れ](../genesis-" +"secret.md#解決の流れ) を参照してください。" msgstr "" "`Build` differs from `Apply` in that it outputs only the first entry of " "`outputs` (even when multiple outputs are written, `tazuna build`'s output " @@ -9769,9 +9971,8 @@ msgstr "Selecting a Provider" #: src/reference/manifest-types/genesissecret.md:52 msgid "" -"GenesisSecret YAML の `spec.provider` で、どの Secret provider から値を取得す" -"るかを 指定できます。空文字 / 未設定の場合は組み込みの `default-op`" -"(1Password)が使われます。" +"GenesisSecret YAML の `spec.provider` で、どの Secret provider から値を取得するかを " +"指定できます。空文字 / 未設定の場合は組み込みの `default-op`(1Password)が使われます。" msgstr "" "In a GenesisSecret YAML's `spec.provider` you can specify which Secret " "provider to retrieve values from. When empty / unset, the built-in `default-" @@ -9779,12 +9980,11 @@ msgstr "" #: src/reference/manifest-types/genesissecret.md:55 msgid "" -"`tazuna.yaml` の `spec.providers[]` で複数の provider を宣言しておけば、" -"`onepassword` と `envfile` を混ぜて使えます。詳細は [Secret provider](../" -"secret-providers.md) を参照してください。" +"`tazuna.yaml` の `spec.providers[]` で複数の provider を宣言しておけば、`onepassword` と " +"`envfile` を混ぜて使えます。詳細は [Secret provider](../secret-providers.md) を参照してください。" msgstr "" -"If you declare multiple providers in `tazuna.yaml`'s `spec.providers[]`, you " -"can mix `onepassword` and `envfile`. See [Secret provider](../secret-" +"If you declare multiple providers in `tazuna.yaml`'s `spec.providers[]`, you" +" can mix `onepassword` and `envfile`. See [Secret provider](../secret-" "providers.md) for details." #: src/reference/manifest-types/genesissecret.md:58 @@ -9793,29 +9993,27 @@ msgstr "Relationship to State" #: src/reference/manifest-types/genesissecret.md:60 msgid "" -"`type: genesissecret` から生成される Secret は、`tazuna state diff` 上で常に " -"`always-sync` として扱われます。ContentHash で差分判定する対象ではなく、" -"Provider 側を真実の源として 毎回同期されます。詳細は [State の内部構造 - " -"Diff type](../state.md#diff-type) と [GenesisSecret - State と always-sync]" -"(../genesis-secret.md#state-と-always-sync) を参照してください。" +"`type: genesissecret` から生成される Secret は、`tazuna state diff` 上で常に `always-" +"sync` として扱われます。ContentHash で差分判定する対象ではなく、Provider 側を真実の源として 毎回同期されます。詳細は " +"[State の内部構造 - Diff type](../state.md#diff-type) と [GenesisSecret - State と " +"always-sync](../genesis-secret.md#state-と-always-sync) を参照してください。" msgstr "" "Secrets generated by `type: genesissecret` are always handled as `always-" "sync` in `tazuna state diff`. They are not targets of ContentHash-based " "diffing; the Provider side is the source of truth and they are synchronized " "every time. See [Internal Structure of State - Diff type](../state.md#diff-" -"type) and [GenesisSecret - State and always-sync](../genesis-secret.md#state-" -"と-always-sync) for details." +"type) and [GenesisSecret - State and always-sync](../genesis-" +"secret.md#state-と-always-sync) for details." #: src/reference/manifest-types/genesissecret.md:67 -msgid "" -"GenesisSecret YAML のスキーマ: [GenesisSecret スキーマ](../genesis-secret.md)" +msgid "GenesisSecret YAML のスキーマ: [GenesisSecret スキーマ](../genesis-secret.md)" msgstr "" "GenesisSecret YAML schema: [GenesisSecret schema](../genesis-secret.md)" #: src/reference/manifest-types/genesissecret.md:68 msgid "" -"既存 Secret から GenesisSecret を書き出す: [`tazuna secret-to-genesissecret`]" -"(../cli/secret-to-genesissecret.md)" +"既存 Secret から GenesisSecret を書き出す: [`tazuna secret-to-" +"genesissecret`](../cli/secret-to-genesissecret.md)" msgstr "" "Write GenesisSecret from an existing Secret: [`tazuna secret-to-" "genesissecret`](../cli/secret-to-genesissecret.md)" @@ -9831,46 +10029,39 @@ msgstr "" "secretprovider) / [always-sync](../../concepts/glossary.md#always-sync)" #: src/reference/cli/index.md:3 -msgid "" -"このセクションは `tazuna` バイナリが提供するすべてのサブコマンドの仕様を、 1 " -"コマンド 1 ページで網羅します。" +msgid "このセクションは `tazuna` バイナリが提供するすべてのサブコマンドの仕様を、 1 コマンド 1 ページで網羅します。" msgstr "" "This section covers the spec of every subcommand provided by the `tazuna` " "binary, one command per page." #: src/reference/cli/index.md:6 msgid "" -"ページは規約書として読まれることを想定しています。 コマンドの選び方や運用上の" -"使い分けは [ガイド](../../guides/index.md) を、 そもそも各コマンドが何を解い" -"ているかは [概念](../../concepts/index.md) を参照してください。" +"ページは規約書として読まれることを想定しています。 コマンドの選び方や運用上の使い分けは [ガイド](../../guides/index.md) を、" +" そもそも各コマンドが何を解いているかは [概念](../../concepts/index.md) を参照してください。" msgstr "" "The pages are designed to be read as a contract. For command choice and " "operational usage, see [Guides](../../guides/index.md); for what each " -"command is solving in the first place, see [Concepts](../../concepts/" -"index.md)." +"command is solving in the first place, see " +"[Concepts](../../concepts/index.md)." #: src/reference/cli/index.md:10 msgid "サブコマンド一覧" msgstr "Subcommand List" #: src/reference/cli/index.md:12 -msgid "" -"[`tazuna init`](./init.md) — includes ベースの `tazuna.yaml` 雛形を生成する" +msgid "[`tazuna init`](./init.md) — includes ベースの `tazuna.yaml` 雛形を生成する" msgstr "" "[`tazuna init`](./init.md) — generate an includes-based `tazuna.yaml` " "skeleton" #: src/reference/cli/index.md:13 -msgid "" -"[`tazuna apply`](./apply.md) — `tazuna.yaml` をクラスタに反映する(state を書" -"き戻す)" +msgid "[`tazuna apply`](./apply.md) — `tazuna.yaml` をクラスタに反映する(state を書き戻す)" msgstr "" "[`tazuna apply`](./apply.md) — apply `tazuna.yaml` to the cluster (writes " "state back)" #: src/reference/cli/index.md:14 -msgid "" -"[`tazuna build`](./build.md) — クラスタに触らずにレンダリング結果を出力する" +msgid "[`tazuna build`](./build.md) — クラスタに触らずにレンダリング結果を出力する" msgstr "" "[`tazuna build`](./build.md) — emit the rendering result without touching " "the cluster" @@ -9880,54 +10071,46 @@ msgid "[`tazuna check`](./check.md) — `tazuna.yaml` の妥当性を検証す msgstr "[`tazuna check`](./check.md) — validate `tazuna.yaml`" #: src/reference/cli/index.md:16 -msgid "" -"[`tazuna destroy`](./destroy.md) — Tazuna 管理リソースをクラスタから削除する" +msgid "[`tazuna destroy`](./destroy.md) — Tazuna 管理リソースをクラスタから削除する" msgstr "" "[`tazuna destroy`](./destroy.md) — delete Tazuna-managed resources from the " "cluster" #: src/reference/cli/index.md:17 -msgid "" -"[`tazuna plan`](./plan.md) — Build 結果とライブクラスタをフィールド単位で " -"diff する" +msgid "[`tazuna plan`](./plan.md) — Build 結果とライブクラスタをフィールド単位で diff する" msgstr "" "[`tazuna plan`](./plan.md) — diff the Build result against the live cluster " "field by field" #: src/reference/cli/index.md:18 msgid "" -"[`tazuna status`](./status.md) — State に記録された managed リソースの " -"readiness を出す" +"[`tazuna status`](./status.md) — State に記録された managed リソースの readiness を出す" msgstr "" "[`tazuna status`](./status.md) — show the readiness of managed resources " "recorded in State" #: src/reference/cli/index.md:19 -msgid "" -"[`tazuna state list`](./state-list.md) — State に記録されているリソースを一覧" -"する" +msgid "[`tazuna state list`](./state-list.md) — State に記録されているリソースを一覧する" msgstr "" -"[`tazuna state list`](./state-list.md) — list the resources recorded in State" +"[`tazuna state list`](./state-list.md) — list the resources recorded in " +"State" #: src/reference/cli/index.md:20 -msgid "" -"[`tazuna state diff`](./state-diff.md) — Build 結果と State の差分を出す" +msgid "[`tazuna state diff`](./state-diff.md) — Build 結果と State の差分を出す" msgstr "" "[`tazuna state diff`](./state-diff.md) — show the difference between the " "Build result and State" #: src/reference/cli/index.md:21 -msgid "" -"[`tazuna state drift`](./state-drift.md) — State とライブクラスタの drift を" -"検知する" +msgid "[`tazuna state drift`](./state-drift.md) — State とライブクラスタの drift を検知する" msgstr "" "[`tazuna state drift`](./state-drift.md) — detect drift between State and " "the live cluster" #: src/reference/cli/index.md:22 msgid "" -"[`tazuna secret-to-genesissecret`](./secret-to-genesissecret.md) — 既存 " -"Secret を 1Password と GenesisSecret に書き出す" +"[`tazuna secret-to-genesissecret`](./secret-to-genesissecret.md) — 既存 Secret" +" を 1Password と GenesisSecret に書き出す" msgstr "" "[`tazuna secret-to-genesissecret`](./secret-to-genesissecret.md) — write " "existing Secrets to 1Password and GenesisSecret" @@ -9989,8 +10172,8 @@ msgstr "Log level. One of `debug` / `info` / `warn` / `error`." #: src/reference/cli/index.md:34 msgid "" -"OpenTelemetry の OTLP/gRPC エンドポイント(例: `localhost:4317`)。空文字な" -"ら no-op tracer が使われ外部依存ゼロのまま動く。" +"OpenTelemetry の OTLP/gRPC エンドポイント(例: `localhost:4317`)。空文字なら no-op tracer " +"が使われ外部依存ゼロのまま動く。" msgstr "" "The OpenTelemetry OTLP/gRPC endpoint (e.g. `localhost:4317`). When empty, a " "no-op tracer is used and it runs with zero external dependencies." @@ -10000,9 +10183,7 @@ msgid "`--version`" msgstr "`--version`" #: src/reference/cli/index.md:36 -msgid "" -"ルートコマンドにのみ付くフラグ。バージョン情報を出して終了する。`tazuna " -"version` と等価。" +msgid "ルートコマンドにのみ付くフラグ。バージョン情報を出して終了する。`tazuna version` と等価。" msgstr "" "A flag set only on the root command. Prints version info and exits. " "Equivalent to `tazuna version`." @@ -10013,10 +10194,9 @@ msgstr "Common Behavior" #: src/reference/cli/index.md:42 msgid "" -"クラスタアクセスを行うサブコマンドは、起動時に kubeconfig をロードし、 " -"**current-context が指すクラスタ** に対して動作します。 `KUBECONFIG` 環境変数" -"や `--kubeconfig` 相当のフラグは Tazuna 側では持たず、 kubectl と同じ解決ルー" -"ルに従います。" +"クラスタアクセスを行うサブコマンドは、起動時に kubeconfig をロードし、 **current-context が指すクラスタ** " +"に対して動作します。 `KUBECONFIG` 環境変数や `--kubeconfig` 相当のフラグは Tazuna 側では持たず、 kubectl " +"と同じ解決ルールに従います。" msgstr "" "Subcommands that access the cluster load kubeconfig at startup and operate " "against **the cluster pointed to by current-context**. Tazuna does not " @@ -10029,8 +10209,8 @@ msgstr "Evaluating `context_matches`" #: src/reference/cli/index.md:49 msgid "" -"`tazuna.yaml` の `spec.context_matches` が設定されている場合、 **クラスタに触" -"る直前** に current-context 名と照合します。" +"`tazuna.yaml` の `spec.context_matches` が設定されている場合、 **クラスタに触る直前** に current-" +"context 名と照合します。" msgstr "" "When `spec.context_matches` is set in `tazuna.yaml`, the current-context " "name is matched against it **immediately before touching the cluster**." @@ -10041,22 +10221,21 @@ msgstr "Commands where evaluation runs: `apply` / `destroy`" #: src/reference/cli/index.md:53 msgid "" -"評価が走らないコマンド: `build` / `check` / `plan` / `status` / `state " -"list` / `state diff` / `state drift` / `tags` / `version` / `secret-to-" -"genesissecret`" +"評価が走らないコマンド: `build` / `check` / `plan` / `status` / `state list` / `state " +"diff` / `state drift` / `tags` / `version` / `secret-to-genesissecret`" msgstr "" "Commands where evaluation does not run: `build` / `check` / `plan` / " -"`status` / `state list` / `state diff` / `state drift` / `tags` / " -"`version` / `secret-to-genesissecret`" +"`status` / `state list` / `state diff` / `state drift` / `tags` / `version` " +"/ `secret-to-genesissecret`" #: src/reference/cli/index.md:56 msgid "" -"評価モードは `spec.context_match_mode`(`or` / `and`、デフォルト `or`)に従い" -"ます。 詳細は [`tazuna.yaml` スキーマ - context_matches](../tazuna-" -"yaml.md#context_matches) を参照。" +"評価モードは `spec.context_match_mode`(`or` / `and`、デフォルト `or`)に従います。 詳細は " +"[`tazuna.yaml` スキーマ - context_matches](../tazuna-yaml.md#context_matches) " +"を参照。" msgstr "" -"The evaluation mode follows `spec.context_match_mode` (`or` / `and`, default " -"`or`). See [`tazuna.yaml` schema - context_matches](../tazuna-" +"The evaluation mode follows `spec.context_match_mode` (`or` / `and`, default" +" `or`). See [`tazuna.yaml` schema - context_matches](../tazuna-" "yaml.md#context_matches) for details." #: src/reference/cli/index.md:59 @@ -10065,10 +10244,9 @@ msgstr "Validating tazuna.yaml" #: src/reference/cli/index.md:61 msgid "" -"`apply` / `build` / `destroy` / `check` / `tags` は、いずれも実行の最初に " -"`tazuna.yaml` をロードしてバリデーションします。 バリデーションで失敗するとク" -"ラスタには触れません。 チェック項目の一覧は [`tazuna.yaml` スキーマ - バリ" -"デーションのまとめ](../tazuna-yaml.md#バリデーションのまとめ) を参照。" +"`apply` / `build` / `destroy` / `check` / `tags` は、いずれも実行の最初に `tazuna.yaml` " +"をロードしてバリデーションします。 バリデーションで失敗するとクラスタには触れません。 チェック項目の一覧は [`tazuna.yaml` スキーマ -" +" バリデーションのまとめ](../tazuna-yaml.md#バリデーションのまとめ) を参照。" msgstr "" "`apply` / `build` / `destroy` / `check` / `tags` all load and validate " "`tazuna.yaml` at the very start of execution. On validation failure, no " @@ -10077,18 +10255,18 @@ msgstr "" #: src/reference/cli/index.md:66 msgid "" -"加えて、`tazuna.yaml` をロードする **すべて** のコマンド(上記に `plan` / " -"`status` / `state list` / `state diff` / `state drift` を含む)で、ロード時点" -"で `spec.minimumSupportedTazunaVersion` と実行中の tazuna のバージョンが比較" -"されます。 実行中のバージョンが下回る場合はその場でエラー終了します。詳細は " -"[`tazuna.yaml` スキーマ - `minimumSupportedTazunaVersion`](../tazuna-" +"加えて、`tazuna.yaml` をロードする **すべて** のコマンド(上記に `plan` / `status` / `state list` " +"/ `state diff` / `state drift` を含む)で、ロード時点で " +"`spec.minimumSupportedTazunaVersion` と実行中の tazuna のバージョンが比較されます。 " +"実行中のバージョンが下回る場合はその場でエラー終了します。詳細は [`tazuna.yaml` スキーマ - " +"`minimumSupportedTazunaVersion`](../tazuna-" "yaml.md#minimumsupportedtazunaversion) を参照。" msgstr "" -"In addition, on **every** command that loads `tazuna.yaml` (including " -"`plan` / `status` / `state list` / `state diff` / `state drift` on top of " -"the above), `spec.minimumSupportedTazunaVersion` is compared against the " -"running tazuna's version at load time. If the running version is below it, " -"the command exits with an error immediately. See [`tazuna.yaml` schema - " +"In addition, on **every** command that loads `tazuna.yaml` (including `plan`" +" / `status` / `state list` / `state diff` / `state drift` on top of the " +"above), `spec.minimumSupportedTazunaVersion` is compared against the running" +" tazuna's version at load time. If the running version is below it, the " +"command exits with an error immediately. See [`tazuna.yaml` schema - " "`minimumSupportedTazunaVersion`](../tazuna-" "yaml.md#minimumsupportedtazunaversion) for details." @@ -10109,9 +10287,7 @@ msgid "失敗。標準エラーに `error: ...` 形式でエラーが出力さ msgstr "Failure. An error in the form `error: ...` is printed to stderr." #: src/reference/cli/index.md:79 -msgid "" -"非ゼロ終了は CI でそのまま失敗扱いにできます。 コマンドごとに異なる終了コード" -"を返すような区別は現状ありません。" +msgid "非ゼロ終了は CI でそのまま失敗扱いにできます。 コマンドごとに異なる終了コードを返すような区別は現状ありません。" msgstr "" "Non-zero exit can be treated as failure as-is by CI. There is currently no " "distinction in exit code per command." @@ -10145,8 +10321,8 @@ msgstr "`destroy`" #: src/reference/cli/index.md:88 msgid "" -"これが `true` に設定されていない限り、`destroy` は実体の削除を行いません。プ" -"ロンプトで Yes と答えても、この環境変数が無ければ何も起こりません。" +"これが `true` に設定されていない限り、`destroy` は実体の削除を行いません。プロンプトで Yes " +"と答えても、この環境変数が無ければ何も起こりません。" msgstr "" "Unless this is set to `true`, `destroy` does not actually delete anything. " "Even if you say Yes at the prompt, nothing happens without this environment " @@ -10170,39 +10346,38 @@ msgstr "Follows the same kubeconfig resolution rules as ordinary kubectl." #: src/reference/cli/index.md:91 msgid "" -"旧 `TAZUNA_STATE_SYNC_DELETE` 環境変数は、`tazuna state sync` の削除に伴って" -"廃止されています。 `removed` 分類のリソースを削除したい場合は [`tazuna apply " -"--sync --prune`](./apply.md#state-連携---sync----prune----atomic) を使ってく" -"ださい。" +"旧 `TAZUNA_STATE_SYNC_DELETE` 環境変数は、`tazuna state sync` の削除に伴って廃止されています。 " +"`removed` 分類のリソースを削除したい場合は [`tazuna apply --sync --prune`](./apply.md#state-" +"連携---sync----prune----atomic) を使ってください。" msgstr "" "The old `TAZUNA_STATE_SYNC_DELETE` environment variable has been removed " "along with `tazuna state sync`. To delete resources in the `removed` " -"category, use [`tazuna apply --sync --prune`](./apply.md#state-連携---" -"sync----prune----atomic)." +"category, use [`tazuna apply --sync --prune`](./apply.md#state-連携---sync----" +"prune----atomic)." #: src/reference/cli/init.md:3 msgid "" -"includes ベースの最小構成な `tazuna.yaml` の雛形を生成します。 新しいリポジト" -"リやコンポーネントを Tazuna 管理に乗せる最初の一歩に向きます。" +"includes ベースの最小構成な `tazuna.yaml` の雛形を生成します。 新しいリポジトリやコンポーネントを Tazuna " +"管理に乗せる最初の一歩に向きます。" msgstr "" "Generates a minimal includes-based `tazuna.yaml` skeleton. It suits the " -"first step of bringing a new repository or component under Tazuna management." +"first step of bringing a new repository or component under Tazuna " +"management." #: src/reference/cli/init.md:12 msgid "" -"出力先(`-f` / `--file-path`、デフォルト `tazuna.yaml`)が既に存在し、かつ " -"`--force` が無ければエラーで終了します(既存ファイルを誤って壊さないため)。" +"出力先(`-f` / `--file-path`、デフォルト `tazuna.yaml`)が既に存在し、かつ `--force` " +"が無ければエラーで終了します(既存ファイルを誤って壊さないため)。" msgstr "" "If the output target (`-f` / `--file-path`, default `tazuna.yaml`) already " "exists and `--force` is not given, it exits with an error (so an existing " "file is not accidentally clobbered)." #: src/reference/cli/init.md:14 -msgid "" -"次の内容で `tazuna.yaml` を書き出し、`created: ` を標準出力に書きます。" +msgid "次の内容で `tazuna.yaml` を書き出し、`created: ` を標準出力に書きます。" msgstr "" -"Writes `tazuna.yaml` with the following content and prints `created: ` " -"to stdout." +"Writes `tazuna.yaml` with the following content and prints `created: `" +" to stdout." #: src/reference/cli/init.md:15 msgid "`apiVersion` / `kind` を正規値で設定。" @@ -10210,9 +10385,8 @@ msgstr "Sets `apiVersion` / `kind` to the canonical values." #: src/reference/cli/init.md:16 msgid "" -"`spec.minimumSupportedTazunaVersion` を、**生成した tazuna 自身のバージョン**" -"に ピン留め。これにより、より古い tazuna バイナリがこのファイルを処理しようと" -"すると エラーで止まります。" +"`spec.minimumSupportedTazunaVersion` を、**生成した tazuna 自身のバージョン**に " +"ピン留め。これにより、より古い tazuna バイナリがこのファイルを処理しようとすると エラーで止まります。" msgstr "" "Pins `spec.minimumSupportedTazunaVersion` to **the version of the tazuna " "that generated it**. As a result, an older tazuna binary that tries to " @@ -10220,8 +10394,8 @@ msgstr "" #: src/reference/cli/init.md:19 msgid "" -"`spec.manifests` は空 (`[]`)。includes でコンポーネントごとの `tazuna.yaml` " -"を 読み込むためのコメント例を添えています。" +"`spec.manifests` は空 (`[]`)。includes でコンポーネントごとの `tazuna.yaml` を " +"読み込むためのコメント例を添えています。" msgstr "" "`spec.manifests` is empty (`[]`). A commented example for loading each " "component's `tazuna.yaml` via includes is attached." @@ -10229,17 +10403,16 @@ msgstr "" #: src/reference/cli/init.md:22 msgid "生成される雛形(バージョンは生成時の tazuna に依存します):" msgstr "" -"The generated skeleton (the version depends on the tazuna that generated it):" +"The generated skeleton (the version depends on the tazuna that generated " +"it):" #: src/reference/cli/init.md:28 msgid "" -"# この tazuna.yaml を処理するのに必要な tazuna の最小バージョン (semver) で" -"す。\n" +"# この tazuna.yaml を処理するのに必要な tazuna の最小バージョン (semver) です。\n" " # これを下回る tazuna バイナリは、誤適用を防ぐためエラーで終了します。\n" " minimumSupportedTazunaVersion" msgstr "" -"# The minimum version (semver) of tazuna required to process this " -"tazuna.yaml.\n" +"# The minimum version (semver) of tazuna required to process this tazuna.yaml.\n" " # A tazuna binary below it exits with an error to prevent misapplication.\n" " minimumSupportedTazunaVersion" @@ -10275,9 +10448,8 @@ msgstr "About version pinning" #: src/reference/cli/init.md:46 msgid "" -"実行中の tazuna が semver なバージョン(リリースビルド)なら、その値を正規化" -"して `minimumSupportedTazunaVersion` に埋め込みます(先頭の `v` は除去されま" -"す)。" +"実行中の tazuna が semver なバージョン(リリースビルド)なら、その値を正規化して " +"`minimumSupportedTazunaVersion` に埋め込みます(先頭の `v` は除去されます)。" msgstr "" "If the running tazuna has a semver version (a release build), that value is " "normalized and embedded into `minimumSupportedTazunaVersion` (a leading `v` " @@ -10285,9 +10457,8 @@ msgstr "" #: src/reference/cli/init.md:48 msgid "" -"ローカルビルド(`dev` など semver でないバージョン)で実行した場合は、 プレー" -"スホルダとして `0.0.0` を埋め込みます。リリース版で生成し直すか、手で 適切な" -"バージョンに書き換えてください。" +"ローカルビルド(`dev` など semver でないバージョン)で実行した場合は、 プレースホルダとして `0.0.0` " +"を埋め込みます。リリース版で生成し直すか、手で 適切なバージョンに書き換えてください。" msgstr "" "When run with a local build (a non-semver version such as `dev`), the " "placeholder `0.0.0` is embedded. Regenerate with a release build, or " @@ -10295,8 +10466,8 @@ msgstr "" #: src/reference/cli/init.md:52 msgid "" -"`minimumSupportedTazunaVersion` の比較ルールそのものは [`tazuna.yaml` スキー" -"マ - `minimumSupportedTazunaVersion`](../tazuna-" +"`minimumSupportedTazunaVersion` の比較ルールそのものは [`tazuna.yaml` スキーマ - " +"`minimumSupportedTazunaVersion`](../tazuna-" "yaml.md#minimumsupportedtazunaversion) を参照してください。" msgstr "" "For the comparison rule of `minimumSupportedTazunaVersion` itself, see " @@ -10306,12 +10477,12 @@ msgstr "" #: src/reference/cli/init.md:58 src/reference/cli/apply.md:47 #: src/reference/cli/build.md:23 src/reference/cli/check.md:23 #: src/reference/cli/destroy.md:32 src/reference/cli/plan.md:74 -#: src/reference/cli/secret-to-genesissecret.md:32 src/reference/cli/tags.md:29 -msgid "" -"[グローバルフラグ](./index.md#グローバルフラグ) に加えて次を受け付けます。" +#: src/reference/cli/secret-to-genesissecret.md:32 +#: src/reference/cli/tags.md:29 +msgid "[グローバルフラグ](./index.md#グローバルフラグ) に加えて次を受け付けます。" msgstr "" -"In addition to [global flags](./index.md#グローバルフラグ), the following " -"are accepted." +"In addition to [global flags](./index.md#グローバルフラグ), the following are " +"accepted." #: src/reference/cli/init.md:62 src/reference/cli/destroy.md:36 msgid "`--force`" @@ -10339,9 +10510,7 @@ msgstr "" "yaml.md#includes-を使う)" #: src/reference/cli/apply.md:3 -msgid "" -"`tazuna.yaml` で宣言された Manifest 群をクラスタへ反映します。 Tazuna の中心" -"となるコマンドです。" +msgid "`tazuna.yaml` で宣言された Manifest 群をクラスタへ反映します。 Tazuna の中心となるコマンドです。" msgstr "" "Reflects the Manifests declared in `tazuna.yaml` into the cluster. The " "central command of Tazuna." @@ -10349,7 +10518,8 @@ msgstr "" #: src/reference/cli/apply.md:13 msgid "実行順序は次のとおりです。クラスタに触れるのは 5 以降です。" msgstr "" -"The execution order is as follows. Cluster access happens from step 5 onward." +"The execution order is as follows. Cluster access happens from step 5 " +"onward." #: src/reference/cli/apply.md:15 src/reference/cli/build.md:12 #: src/reference/cli/destroy.md:13 src/reference/cli/tags.md:12 @@ -10357,9 +10527,7 @@ msgid "`tazuna.yaml` をロードしてバリデーションする。" msgstr "Load and validate `tazuna.yaml`." #: src/reference/cli/apply.md:16 src/reference/cli/destroy.md:14 -msgid "" -"`spec.context_matches` が設定されていれば、current-context と照合する。 合致" -"しなければ即終了する。" +msgid "`spec.context_matches` が設定されていれば、current-context と照合する。 合致しなければ即終了する。" msgstr "" "If `spec.context_matches` is set, match against the current-context. Abort " "immediately on mismatch." @@ -10371,9 +10539,8 @@ msgstr "Filter by `--tags`." #: src/reference/cli/apply.md:19 msgid "" -"`manifests[]` を **`dependsOn` から導出した層** に分割する。 `dependsOn` が " -"1 つも使われていなければ層数 = manifest 数となり、 従来の宣言順・順次実行と完" -"全に同じ挙動になる。" +"`manifests[]` を **`dependsOn` から導出した層** に分割する。 `dependsOn` が 1 つも使われていなければ層数" +" = manifest 数となり、 従来の宣言順・順次実行と完全に同じ挙動になる。" msgstr "" "Split `manifests[]` into **layers derived from `dependsOn`**. If no " "`dependsOn` is used, the number of layers equals the number of manifests, " @@ -10381,8 +10548,7 @@ msgstr "" "declaration order." #: src/reference/cli/apply.md:22 -msgid "" -"各層内のマニフェストを **並列に** 対応 Manager に渡し、クラスタへ反映する。" +msgid "各層内のマニフェストを **並列に** 対応 Manager に渡し、クラスタへ反映する。" msgstr "" "Hand the manifests within each layer to their corresponding Manager **in " "parallel** and apply them to the cluster." @@ -10393,24 +10559,25 @@ msgstr "After each Manifest applies successfully, run its `tests`." #: src/reference/cli/apply.md:24 msgid "" -"apply とテストが成功した Manifest について **state ConfigMap** に content " -"hash を書き戻す(以降の `state diff` / `state drift` / `plan` の起点)。" +"apply とテストが成功した Manifest について **state ConfigMap** に content hash を書き戻す(以降の " +"`state diff` / `state drift` / `plan` の起点)。" msgstr "" "For Manifests whose apply and tests succeeded, write the content hash back " -"to the **state ConfigMap** (the starting point for subsequent `state diff` / " -"`state drift` / `plan`)." +"to the **state ConfigMap** (the starting point for subsequent `state diff` /" +" `state drift` / `plan`)." #: src/reference/cli/apply.md:26 msgid "すべての Manifest 適用後、`spec.tests`(全体 Tests)を実行する。" -msgstr "After all Manifests are applied, execute `spec.tests` (overall Tests)." +msgstr "" +"After all Manifests are applied, execute `spec.tests` (overall Tests)." #: src/reference/cli/apply.md:28 msgid "" -"`dependsOn` の挙動は [`dependsOn` による DAG 実行](../../concepts/depends-" -"on.md) を参照してください。" +"`dependsOn` の挙動は [`dependsOn` による DAG 実行](../../concepts/depends-on.md) " +"を参照してください。" msgstr "" -"For `dependsOn` behavior, see [DAG Execution via `dependsOn`](../../concepts/" -"depends-on.md)." +"For `dependsOn` behavior, see [DAG Execution via " +"`dependsOn`](../../concepts/depends-on.md)." #: src/reference/cli/apply.md:30 msgid "State 連携 (--sync / --prune / --atomic)" @@ -10418,13 +10585,12 @@ msgstr "State integration (--sync / --prune / --atomic)" #: src/reference/cli/apply.md:32 msgid "" -"`tazuna apply` は **デフォルトでも state ConfigMap を書き込む** 設計です。 以" -"前は別コマンドだった `tazuna state sync` の役割は、`--sync` フラグを付けた " -"`apply` に統合されました(後述の「移行: 旧 `state sync` からの置き換え」参" -"照)。" +"`tazuna apply` は **デフォルトでも state ConfigMap を書き込む** 設計です。 以前は別コマンドだった `tazuna" +" state sync` の役割は、`--sync` フラグを付けた `apply` に統合されました(後述の「移行: 旧 `state sync` " +"からの置き換え」参照)。" msgstr "" -"`tazuna apply` is designed to **write the state ConfigMap even by default**. " -"The role of `tazuna state sync`, formerly a separate command, has been " +"`tazuna apply` is designed to **write the state ConfigMap even by default**." +" The role of `tazuna state sync`, formerly a separate command, has been " "merged into `apply` with the `--sync` flag (see \"Migration: replacing the " "old `state sync`\" below)." @@ -10433,9 +10599,7 @@ msgid "なし" msgstr "None" #: src/reference/cli/apply.md:38 -msgid "" -"すべての Manifest を Manager の `Apply()` 経由で **無条件に** 反映し、その後 " -"state を保存する。" +msgid "すべての Manifest を Manager の `Apply()` 経由で **無条件に** 反映し、その後 state を保存する。" msgstr "" "Apply every Manifest **unconditionally** via the Manager's `Apply()`, then " "save state." @@ -10446,9 +10610,8 @@ msgstr "`--sync`" #: src/reference/cli/apply.md:39 msgid "" -"差分モードに切り替わる。各 Manager の `Build()` 結果と保存 state を比較し、" -"`added` / `modified` / `always-sync` 分類のリソースだけを `CreateOrUpdate` す" -"る。" +"差分モードに切り替わる。各 Manager の `Build()` 結果と保存 state を比較し、`added` / `modified` / " +"`always-sync` 分類のリソースだけを `CreateOrUpdate` する。" msgstr "" "Switches to diff mode. Compares each Manager's `Build()` result against the " "saved state and `CreateOrUpdate`s only resources classified as `added` / " @@ -10460,11 +10623,10 @@ msgstr "`--sync --prune`" #: src/reference/cli/apply.md:40 msgid "" -"上記に加え、**state にあって Build 結果に無い** リソース(`removed`)を " -"`Delete` する。`--sync` 必須。" +"上記に加え、**state にあって Build 結果に無い** リソース(`removed`)を `Delete` する。`--sync` 必須。" msgstr "" -"In addition to the above, `Delete`s resources that are **in state but absent " -"from the Build result** (`removed`). Requires `--sync`." +"In addition to the above, `Delete`s resources that are **in state but absent" +" from the Build result** (`removed`). Requires `--sync`." #: src/reference/cli/apply.md:41 msgid "`--sync --atomic`" @@ -10472,16 +10634,14 @@ msgstr "`--sync --atomic`" #: src/reference/cli/apply.md:41 msgid "" -"各 Manifest の state 保存を後段にまとめる。途中で 1 つでもエラーが出たら " -"state は **一切更新せず** 終了する。`--sync` 必須。" +"各 Manifest の state 保存を後段にまとめる。途中で 1 つでもエラーが出たら state は **一切更新せず** " +"終了する。`--sync` 必須。" msgstr "" "Defers each Manifest's state save to the end. If even one error occurs " "partway, it exits **without updating state at all**. Requires `--sync`." #: src/reference/cli/apply.md:43 -msgid "" -"`--prune` / `--atomic` を `--sync` 無しで指定するとバリデーションエラーになり" -"ます。" +msgid "`--prune` / `--atomic` を `--sync` 無しで指定するとバリデーションエラーになります。" msgstr "" "Specifying `--prune` / `--atomic` without `--sync` is a validation error." @@ -10504,12 +10664,10 @@ msgid "\\[\\]string" msgstr "\\[\\]string" #: src/reference/cli/apply.md:51 src/reference/cli/build.md:27 -msgid "" -"指定したタグのいずれかが付いている Manifest だけを処理対象にします(OR 評" -"価)。" +msgid "指定したタグのいずれかが付いている Manifest だけを処理対象にします(OR 評価)。" msgstr "" -"Limits the processing target to Manifests with at least one of the specified " -"tags (OR evaluation)." +"Limits the processing target to Manifests with at least one of the specified" +" tags (OR evaluation)." #: src/reference/cli/apply.md:52 src/reference/cli/build.md:28 #: src/reference/cli/destroy.md:38 @@ -10518,9 +10676,7 @@ msgstr "`--no-cache`" #: src/reference/cli/apply.md:52 src/reference/cli/build.md:28 #: src/reference/cli/destroy.md:38 -msgid "" -"`type: oras` の Manifest で、キャッシュを使わずに常に registry から再取得しま" -"す。" +msgid "`type: oras` の Manifest で、キャッシュを使わずに常に registry から再取得します。" msgstr "" "For `type: oras` Manifests, always refetch from the registry without using " "the cache." @@ -10532,8 +10688,7 @@ msgstr "`--offline`" #: src/reference/cli/apply.md:53 src/reference/cli/build.md:29 msgid "" -"`type: oras` の Manifest で、registry へのアクセスを禁止します。キャッシュに" -"ヒットしなければエラーになります。" +"`type: oras` の Manifest で、registry へのアクセスを禁止します。キャッシュにヒットしなければエラーになります。" msgstr "" "For `type: oras` Manifests, forbid access to the registry. If the cache " "misses, it is an error." @@ -10558,9 +10713,7 @@ msgid "`--atomic`" msgstr "`--atomic`" #: src/reference/cli/apply.md:56 -msgid "" -"全 Manifest 成功後にまとめて state を保存する。途中エラーで state を変更しな" -"い。`--sync` 必須。" +msgid "全 Manifest 成功後にまとめて state を保存する。途中エラーで state を変更しない。`--sync` 必須。" msgstr "" "Saves state in a batch after all Manifests succeed. State is not changed on " "a mid-run error. Requires `--sync`." @@ -10600,10 +10753,9 @@ msgstr "Migration: replacing the old `tazuna state sync`" #: src/reference/cli/apply.md:84 msgid "" -"以前の Tazuna には `tazuna state sync` という別コマンドがあり、`state` と " -"Build 結果の 差分を反映する役割を担っていました。本リファクタでこのコマンド" -"は **削除** され、 `tazuna apply --sync` へ統合されています。対応関係は次のと" -"おりです。" +"以前の Tazuna には `tazuna state sync` という別コマンドがあり、`state` と Build 結果の " +"差分を反映する役割を担っていました。本リファクタでこのコマンドは **削除** され、 `tazuna apply --sync` " +"へ統合されています。対応関係は次のとおりです。" msgstr "" "Earlier versions of Tazuna had a separate command, `tazuna state sync`, " "responsible for applying the diff between `state` and the Build result. In " @@ -10636,13 +10788,12 @@ msgstr "`tazuna apply --sync --atomic`" #: src/reference/cli/apply.md:94 msgid "" -"挙動上の違いとして、新しい `apply` は **`--sync` を付けなくても state を保存" -"する** ように なっています(旧 `apply` は state を一切書きませんでした)。こ" -"れにより、`apply` 一発で `state list` / `state diff` / `state drift` / " -"`plan` / `status` が常に意味のある結果を返す ようになっています。" +"挙動上の違いとして、新しい `apply` は **`--sync` を付けなくても state を保存する** ように なっています(旧 " +"`apply` は state を一切書きませんでした)。これにより、`apply` 一発で `state list` / `state diff` /" +" `state drift` / `plan` / `status` が常に意味のある結果を返す ようになっています。" msgstr "" -"As a behavioral difference, the new `apply` **saves state even without `--" -"sync`** (the old `apply` wrote no state at all). As a result, a single " +"As a behavioral difference, the new `apply` **saves state even without " +"`--sync`** (the old `apply` wrote no state at all). As a result, a single " "`apply` makes `state list` / `state diff` / `state drift` / `plan` / " "`status` always return meaningful results." @@ -10672,43 +10823,38 @@ msgid "" "State 差分の参照は [`tazuna state diff`](./state-diff.md) / [`tazuna state " "drift`](./state-drift.md)" msgstr "" -"For State diffs, see [`tazuna state diff`](./state-diff.md) / [`tazuna state " -"drift`](./state-drift.md)" +"For State diffs, see [`tazuna state diff`](./state-diff.md) / [`tazuna state" +" drift`](./state-drift.md)" #: src/reference/cli/apply.md:107 msgid "既存リソースを取り外す場合は [`tazuna destroy`](./destroy.md)" msgstr "Remove existing resources: [`tazuna destroy`](./destroy.md)" #: src/reference/cli/apply.md:108 -msgid "" -"DAG 実行モデル: [`dependsOn` による DAG 実行](../../concepts/depends-on.md)" +msgid "DAG 実行モデル: [`dependsOn` による DAG 実行](../../concepts/depends-on.md)" msgstr "" "DAG execution model: [DAG Execution via `dependsOn`](../../concepts/depends-" "on.md)" #: src/reference/cli/build.md:3 msgid "" -"`tazuna.yaml` で宣言された Manifest 群をレンダリングし、結果を標準出力に書き" -"出します。 **クラスタは変更しません。** apply 前のプレビューや、別ツールへの" -"パイプ入力として使います。" +"`tazuna.yaml` で宣言された Manifest 群をレンダリングし、結果を標準出力に書き出します。 **クラスタは変更しません。** " +"apply 前のプレビューや、別ツールへのパイプ入力として使います。" msgstr "" "Renders the Manifests declared in `tazuna.yaml` and writes the result to " "stdout. **Does not modify the cluster.** Useful for previewing before apply " "or as pipe input to other tools." #: src/reference/cli/build.md:14 -msgid "" -"各 Manifest を対応する Manager の Build に渡し、結果を連結して標準出力に書き" -"出す。" +msgid "各 Manifest を対応する Manager の Build に渡し、結果を連結して標準出力に書き出す。" msgstr "" "Passes each Manifest to its Manager's Build, concatenates the results, and " "writes them to stdout." #: src/reference/cli/build.md:16 msgid "" -"`context_matches` の評価は行いません。 クラスタへの reach も Manager の " -"Build 実装次第ですが、 組み込みの Manager は基本的に kubeconfig を要求しませ" -"ん (ORAS の registry pull は別途ネットワークアクセスを行います)。" +"`context_matches` の評価は行いません。 クラスタへの reach も Manager の Build 実装次第ですが、 組み込みの " +"Manager は基本的に kubeconfig を要求しません (ORAS の registry pull は別途ネットワークアクセスを行います)。" msgstr "" "Does not evaluate `context_matches`. Whether the cluster is reached depends " "on the Manager's Build implementation, but the built-in Managers basically " @@ -10724,9 +10870,7 @@ msgid "差分は [`tazuna state diff`](./state-diff.md)" msgstr "Differences: [`tazuna state diff`](./state-diff.md)" #: src/reference/cli/check.md:3 -msgid "" -"`tazuna.yaml` の妥当性を、クラスタには触れずに検証します。 CI で最初に通す対" -"象に向きます。" +msgid "`tazuna.yaml` の妥当性を、クラスタには触れずに検証します。 CI で最初に通す対象に向きます。" msgstr "" "Verifies the validity of `tazuna.yaml` without touching the cluster. " "Suitable as the first thing to run in CI." @@ -10738,8 +10882,7 @@ msgid "`tazuna.yaml` をロードする。" msgstr "Load `tazuna.yaml`." #: src/reference/cli/check.md:13 -msgid "" -"ファイルおよび展開後の `manifests[]` 全体に対してバリデーションを実行する。" +msgid "ファイルおよび展開後の `manifests[]` 全体に対してバリデーションを実行する。" msgstr "Run validation against the file and all expanded `manifests[]`." #: src/reference/cli/check.md:14 @@ -10748,20 +10891,20 @@ msgstr "If no problems, write `ok` to stdout and exit with status 0." #: src/reference/cli/check.md:15 msgid "" -"`--fix` を指定した場合は、`name` 未設定の Manifest に自動採番した上で " -"`tazuna.yaml` を書き戻し、`fixed: ` を標準出力に書く。" +"`--fix` を指定した場合は、`name` 未設定の Manifest に自動採番した上で `tazuna.yaml` を書き戻し、`fixed: " +"` を標準出力に書く。" msgstr "" "With `--fix`, auto-number Manifests whose `name` is unset, write back " "`tazuna.yaml`, and write `fixed: ` to stdout." #: src/reference/cli/check.md:18 msgid "" -"検証項目の一覧は [`tazuna.yaml` スキーマ - バリデーションのまとめ](../tazuna-" -"yaml.md#バリデーションのまとめ) を参照してください。 クラスタへのアクセスは行" -"いません。" +"検証項目の一覧は [`tazuna.yaml` スキーマ - バリデーションのまとめ](../tazuna-yaml.md#バリデーションのまとめ) " +"を参照してください。 クラスタへのアクセスは行いません。" msgstr "" -"See [`tazuna.yaml` schema - Validation summary](../tazuna-yaml.md#バリデー" -"ションのまとめ) for the list of check items. No cluster access is performed." +"See [`tazuna.yaml` schema - Validation summary](../tazuna-" +"yaml.md#バリデーションのまとめ) for the list of check items. No cluster access is " +"performed." #: src/reference/cli/check.md:27 msgid "`--fix`" @@ -10773,9 +10916,7 @@ msgstr "" "Auto-numbers Manifests whose `name` is unset and writes back `tazuna.yaml`." #: src/reference/cli/check.md:29 -msgid "" -"`--fix` はファイルを上書きします。バージョン管理下で実行することを推奨しま" -"す。" +msgid "`--fix` はファイルを上書きします。バージョン管理下で実行することを推奨します。" msgstr "" "`--fix` overwrites the file. We recommend running it under version control." @@ -10784,12 +10925,10 @@ msgid "検証ルールの詳細: [`tazuna.yaml` スキーマ](../tazuna-yaml.md) msgstr "Detailed validation rules: [`tazuna.yaml` schema](../tazuna-yaml.md)" #: src/reference/cli/destroy.md:3 -msgid "" -"Tazuna が管理しているリソースをクラスタから削除します。 事故を防ぐために **二" -"段階のガード** が掛かっています。" +msgid "Tazuna が管理しているリソースをクラスタから削除します。 事故を防ぐために **二段階のガード** が掛かっています。" msgstr "" -"Deletes Tazuna-managed resources from the cluster. To prevent accidents, **a " -"two-stage guard** is in place." +"Deletes Tazuna-managed resources from the cluster. To prevent accidents, **a" +" two-stage guard** is in place." #: src/reference/cli/destroy.md:16 msgid "`--force` が無ければ、次のプロンプトを出して Y/N の確認を取る。" @@ -10799,16 +10938,16 @@ msgstr "" #: src/reference/cli/destroy.md:22 msgid "" -"環境変数 `TAZUNA_DESTROY_EXECUTABLE` が `true` でなければ、 ログだけ出してク" -"ラスタには **触れず** に終了する。" +"環境変数 `TAZUNA_DESTROY_EXECUTABLE` が `true` でなければ、 ログだけ出してクラスタには **触れず** " +"に終了する。" msgstr "" "Unless the environment variable `TAZUNA_DESTROY_EXECUTABLE` is `true`, only " "log output happens and the command exits without **touching the cluster**." #: src/reference/cli/destroy.md:24 msgid "" -"ガードを通過した場合のみ、`--tags` フィルタを適用したうえで Manager の " -"Destroy を順に呼び出し、対応リソースをクラスタから削除する。" +"ガードを通過した場合のみ、`--tags` フィルタを適用したうえで Manager の Destroy " +"を順に呼び出し、対応リソースをクラスタから削除する。" msgstr "" "Only when both guards pass: applies the `--tags` filter, then invokes each " "Manager's Destroy in order to delete the corresponding resources from the " @@ -10816,24 +10955,20 @@ msgstr "" #: src/reference/cli/destroy.md:27 msgid "" -"つまり「プロンプトで Yes」「`TAZUNA_DESTROY_EXECUTABLE=true`」の **両方** を" -"満たさない限り、 リソースは消えません。" +"つまり「プロンプトで Yes」「`TAZUNA_DESTROY_EXECUTABLE=true`」の **両方** を満たさない限り、 " +"リソースは消えません。" msgstr "" "In other words, resources are not deleted unless **both** \"Yes at the " "prompt\" and \"`TAZUNA_DESTROY_EXECUTABLE=true`\" are satisfied." #: src/reference/cli/destroy.md:36 -msgid "" -"削除前の確認プロンプトをスキップします。**環境変数のガードはスキップしませ" -"ん。**" +msgid "削除前の確認プロンプトをスキップします。**環境変数のガードはスキップしません。**" msgstr "" "Skips the pre-deletion confirmation prompt. **It does not skip the " "environment-variable guard.**" #: src/reference/cli/destroy.md:37 -msgid "" -"指定したタグのいずれかが付いている Manifest だけを削除対象にします(OR 評" -"価)。" +msgid "指定したタグのいずれかが付いている Manifest だけを削除対象にします(OR 評価)。" msgstr "" "Targets only Manifests with at least one of the specified tags for deletion " "(OR evaluation)." @@ -10843,9 +10978,7 @@ msgid "`type: oras` の Manifest で、registry へのアクセスを禁止し msgstr "For `type: oras` Manifests, forbid access to the registry." #: src/reference/cli/destroy.md:47 -msgid "" -"これが設定されていない限り、`destroy` は何も削除しません。CI で誤って " -"destroy が走るのを防ぐためのキルスイッチです。" +msgid "これが設定されていない限り、`destroy` は何も削除しません。CI で誤って destroy が走るのを防ぐためのキルスイッチです。" msgstr "" "Unless this is set, `destroy` does not delete anything. It is a kill switch " "to prevent destroy from accidentally running in CI." @@ -10856,9 +10989,8 @@ msgstr "The applying side: [`tazuna apply`](./apply.md)" #: src/reference/cli/plan.md:3 msgid "" -"`tazuna.yaml` で宣言された Manifest を Build した結果と、**ライブクラスタの状" -"態** を 比較し、apply したらどう変わるかをフィールド単位で出力します。 クラス" -"タへの read アクセスのみを行い、何も変更しません。" +"`tazuna.yaml` で宣言された Manifest を Build した結果と、**ライブクラスタの状態** を 比較し、apply " +"したらどう変わるかをフィールド単位で出力します。 クラスタへの read アクセスのみを行い、何も変更しません。" msgstr "" "Compares the result of Building the Manifests declared in `tazuna.yaml` " "against **the state of the live cluster**, and outputs, field by field, how " @@ -10878,15 +11010,13 @@ msgid "各オブジェクトを GVK / namespace / name で **クラスタから msgstr "Fetch each object **from the cluster** by GVK / namespace / name." #: src/reference/cli/plan.md:18 -msgid "" -"取得できなかった(NotFound)オブジェクトは `+ to be created` 扱いで出力する。" +msgid "取得できなかった(NotFound)オブジェクトは `+ to be created` 扱いで出力する。" msgstr "" -"Objects that could not be fetched (NotFound) are output as `+ to be created`." +"Objects that could not be fetched (NotFound) are output as `+ to be " +"created`." #: src/reference/cli/plan.md:19 -msgid "" -"取得できたオブジェクトは desired と live を unified diff にして `~` で出力す" -"る。" +msgid "取得できたオブジェクトは desired と live を unified diff にして `~` で出力する。" msgstr "" "For objects that were fetched, output a unified diff of desired vs live, " "marked with `~`." @@ -10901,8 +11031,8 @@ msgstr "Why a client-side diff" #: src/reference/cli/plan.md:25 msgid "" -"Tazuna の `plan` は「server-side dry-run」というスローガンの下で実装されてい" -"ますが、 実装は **client-side diff** です。これは次のトレードオフの結果です。" +"Tazuna の `plan` は「server-side dry-run」というスローガンの下で実装されていますが、 実装は **client-" +"side diff** です。これは次のトレードオフの結果です。" msgstr "" "Tazuna's `plan` is implemented under the slogan of \"server-side dry-run,\" " "but the implementation is a **client-side diff**. This is the result of the " @@ -10947,25 +11077,23 @@ msgstr "Webhook / defaulting results are not visible" #: src/reference/cli/plan.md:33 msgid "" -"正確性を多少犠牲にしてでも「テストできる plan」を取った、と理解してくださ" -"い。 admission webhook で書き換えられるフィールド(mutation)や server-side " -"defaulting は plan の出力には反映されません。" +"正確性を多少犠牲にしてでも「テストできる plan」を取った、と理解してください。 admission webhook " +"で書き換えられるフィールド(mutation)や server-side defaulting は plan の出力には反映されません。" msgstr "" -"Understand it as choosing \"a plan that can be tested\" even at some cost to " -"accuracy. Fields rewritten by an admission webhook (mutation) and server-" +"Understand it as choosing \"a plan that can be tested\" even at some cost to" +" accuracy. Fields rewritten by an admission webhook (mutation) and server-" "side defaulting are not reflected in the plan output." #: src/reference/cli/plan.md:51 -msgid "" -"`+ (to be created)` — ライブクラスタにまだ存在しないリソース" +msgid "`+ (to be created)` — ライブクラスタにまだ存在しないリソース" msgstr "" "`+ (to be created)` — a resource that does not yet exist on " "the live cluster" #: src/reference/cli/plan.md:52 msgid "" -"`~ ` — 存在するがフィールド差分があるリソース。直下に `k8s.io/" -"apimachinery/pkg/util/diff.Diff` の unified diff がインデント付きで続く" +"`~ ` — 存在するがフィールド差分があるリソース。直下に " +"`k8s.io/apimachinery/pkg/util/diff.Diff` の unified diff がインデント付きで続く" msgstr "" "`~ ` — a resource that exists but has field differences. The " "indented unified diff from `k8s.io/apimachinery/pkg/util/diff.Diff` follows " @@ -10982,9 +11110,7 @@ msgid "差分計算時に除外されるフィールド" msgstr "Fields excluded when computing the diff" #: src/reference/cli/plan.md:59 -msgid "" -"ノイズを避けるため、live と desired の比較前に次のフィールドは取り除かれま" -"す。" +msgid "ノイズを避けるため、live と desired の比較前に次のフィールドは取り除かれます。" msgstr "" "To avoid noise, the following fields are stripped before comparing live and " "desired." @@ -11010,12 +11136,12 @@ msgid "" "`type: genesissecret`([always-sync](../../concepts/glossary.md#always-sync) " "のため plan のフィールド diff という概念に合わない)" msgstr "" -"`type: genesissecret` (being [always-sync](../../concepts/glossary.md#always-" -"sync), it does not fit the concept of a field diff in plan)" +"`type: genesissecret` (being [always-" +"sync](../../concepts/glossary.md#always-sync), it does not fit the concept " +"of a field diff in plan)" #: src/reference/cli/plan.md:78 -msgid "" -"指定タグのいずれかが付いている Manifest だけを plan 対象にします(OR 評価)。" +msgid "指定タグのいずれかが付いている Manifest だけを plan 対象にします(OR 評価)。" msgstr "" "Limits the plan target to Manifests carrying at least one of the specified " "tags (OR evaluation)." @@ -11035,22 +11161,19 @@ msgstr "" #: src/reference/cli/status.md:3 msgid "" -"State ConfigMap に記録されている **managed リソース** を順に取得し、 それぞれ" -"の readiness を一覧表示します。 クラスタへの read アクセスのみを行い、何も変" -"更しません。" +"State ConfigMap に記録されている **managed リソース** を順に取得し、 それぞれの readiness を一覧表示します。 " +"クラスタへの read アクセスのみを行い、何も変更しません。" msgstr "" -"Fetches the **managed resources** recorded in the State ConfigMap one by one " -"and lists the readiness of each. It performs only read access to the cluster " -"and changes nothing." +"Fetches the **managed resources** recorded in the State ConfigMap one by one" +" and lists the readiness of each. It performs only read access to the " +"cluster and changes nothing." #: src/reference/cli/status.md:14 msgid "各 Manifest について、対応する State ConfigMap を読む。" msgstr "For each Manifest, read the corresponding State ConfigMap." #: src/reference/cli/status.md:15 -msgid "" -"State に記録されている各リソースを GVK / namespace / name で クラスタから取得" -"する。" +msgid "State に記録されている各リソースを GVK / namespace / name で クラスタから取得する。" msgstr "" "Fetch each resource recorded in State from the cluster by GVK / namespace / " "name." @@ -11097,8 +11220,7 @@ msgid "`Error`" msgstr "`Error`" #: src/reference/cli/status.md:28 -msgid "" -"NotFound 以外のエラーが取得時に発生した(権限不足、API server エラー等)" +msgid "NotFound 以外のエラーが取得時に発生した(権限不足、API server エラー等)" msgstr "" "An error other than NotFound occurred while fetching (insufficient " "permissions, API server error, etc.)" @@ -11109,15 +11231,14 @@ msgstr "Ready check per Kind" #: src/reference/cli/status.md:32 msgid "" -"Ready 判定は Kind に応じて分岐します。**Deployment / StatefulSet / " -"DaemonSet / Pod 以外の Kind は、取得できた時点で即 `Ready` 扱い** になります" -"(ConfigMap / Secret / Service / Ingress / CRD など、readiness の概念を持たな" -"いリソースを画一的に扱うため)。" +"Ready 判定は Kind に応じて分岐します。**Deployment / StatefulSet / DaemonSet / Pod 以外の " +"Kind は、取得できた時点で即 `Ready` 扱い** になります(ConfigMap / Secret / Service / Ingress /" +" CRD など、readiness の概念を持たないリソースを画一的に扱うため)。" msgstr "" "The Ready check branches by Kind. **Kinds other than Deployment / " "StatefulSet / DaemonSet / Pod are treated as `Ready` as soon as they can be " -"fetched** (so that resources with no concept of readiness, such as " -"ConfigMap / Secret / Service / Ingress / CRD, are handled uniformly)." +"fetched** (so that resources with no concept of readiness, such as ConfigMap" +" / Secret / Service / Ingress / CRD, are handled uniformly)." #: src/reference/cli/status.md:36 msgid "Ready の条件" @@ -11125,8 +11246,8 @@ msgstr "Ready condition" #: src/reference/cli/status.md:38 msgid "" -"`spec.replicas == 0` で即 Ready。それ以外は `status.readyReplicas == " -"status.replicas == status.availableReplicas` かつ `replicas > 0`" +"`spec.replicas == 0` で即 Ready。それ以外は `status.readyReplicas == status.replicas" +" == status.availableReplicas` かつ `replicas > 0`" msgstr "" "Immediately Ready if `spec.replicas == 0`. Otherwise `status.readyReplicas " "== status.replicas == status.availableReplicas` and `replicas > 0`" @@ -11153,10 +11274,9 @@ msgstr "`Ready` as soon as it can be fetched" #: src/reference/cli/status.md:44 msgid "" -"readiness 概念を本来持たない Service / ConfigMap 等を `NotReady` で塗りつぶし" -"てしまわない ための設計です。Ingress / CRD / Custom Resource 等で固有の " -"readiness を見たい場合は、 別途 [Test plugin](../test-plugin.md) の " -"`WaitUntil` を CEL で書くのが筋となります。" +"readiness 概念を本来持たない Service / ConfigMap 等を `NotReady` で塗りつぶしてしまわない " +"ための設計です。Ingress / CRD / Custom Resource 等で固有の readiness を見たい場合は、 別途 [Test " +"plugin](../test-plugin.md) の `WaitUntil` を CEL で書くのが筋となります。" msgstr "" "This design avoids painting Service / ConfigMap and the like - which " "inherently have no concept of readiness - as `NotReady`. If you want to " @@ -11166,28 +11286,24 @@ msgstr "" #: src/reference/cli/status.md:50 msgid "" -"3 カラム(STATUS / KIND / NAMESPACE/NAME)で出します。cluster-scoped リソース" -"は NAMESPACE/NAME 列に namespace が付かず NAME のみが出ます。" +"3 カラム(STATUS / KIND / NAMESPACE/NAME)で出します。cluster-scoped リソースは " +"NAMESPACE/NAME 列に namespace が付かず NAME のみが出ます。" msgstr "" -"It is printed in three columns (STATUS / KIND / NAMESPACE/NAME). For cluster-" -"scoped resources, the NAMESPACE/NAME column has no namespace and shows only " -"NAME." +"It is printed in three columns (STATUS / KIND / NAMESPACE/NAME). For " +"cluster-scoped resources, the NAMESPACE/NAME column has no namespace and " +"shows only NAME." #: src/reference/cli/status.md:66 msgid "" -"State がまだ作られていない(一度も apply / sync されていない)Manifest は " -"`(no state)` と表示されます。" +"State がまだ作られていない(一度も apply / sync されていない)Manifest は `(no state)` と表示されます。" msgstr "" "A Manifest whose State has not been created yet (never applied / synced) is " "shown as `(no state)`." #: src/reference/cli/status.md:71 src/reference/cli/state-list.md:23 #: src/reference/cli/state-diff.md:43 src/reference/cli/state-drift.md:71 -msgid "" -"[グローバルフラグ](./index.md#グローバルフラグ) 以外に固有フラグはありませ" -"ん。" -msgstr "" -"No specific flags besides the [global flags](./index.md#グローバルフラグ)." +msgid "[グローバルフラグ](./index.md#グローバルフラグ) 以外に固有フラグはありません。" +msgstr "No specific flags besides the [global flags](./index.md#グローバルフラグ)." #: src/reference/cli/status.md:83 src/reference/cli/state-list.md:34 #: src/reference/cli/state-drift.md:102 @@ -11205,32 +11321,29 @@ msgstr "Terminology: [State](../../concepts/glossary.md#state)" #: src/reference/cli/state-list.md:3 msgid "" -"クラスタに保存されている Tazuna の State を読み、 Tazuna 管理下にあるリソース" -"とその content hash を一覧します。" +"クラスタに保存されている Tazuna の State を読み、 Tazuna 管理下にあるリソースとその content hash を一覧します。" msgstr "" "Reads the Tazuna State stored in the cluster and lists the resources under " "Tazuna's management along with their content hashes." #: src/reference/cli/state-list.md:13 msgid "" -"各 Manifest の `name` から対応する State ConfigMap (`tazuna` namespace の " -"`tazuna-state-`)を読む。" +"各 Manifest の `name` から対応する State ConfigMap (`tazuna` namespace の `tazuna-" +"state-`)を読む。" msgstr "" "Reads the State ConfigMap corresponding to each Manifest's `name` (`tazuna-" "state-` in the `tazuna` namespace)." #: src/reference/cli/state-list.md:15 msgid "" -"State に記録されている各リソースの GVK / namespace / name / content hash を " -"標準出力に整形して出力する。" +"State に記録されている各リソースの GVK / namespace / name / content hash を 標準出力に整形して出力する。" msgstr "" "Formats each resource's GVK / namespace / name / content hash recorded in " "State to stdout." #: src/reference/cli/state-list.md:18 msgid "" -"`context_matches` の評価は行いません。 クラスタへの read アクセスのみを行い、" -"State を含むいかなるリソースも変更しません。" +"`context_matches` の評価は行いません。 クラスタへの read アクセスのみを行い、State を含むいかなるリソースも変更しません。" msgstr "" "Does not evaluate `context_matches`. Only read access to the cluster is " "performed; no resources, including State, are modified." @@ -11243,11 +11356,11 @@ msgstr "" #: src/reference/cli/state-list.md:36 msgid "" -"差分の反映は [`tazuna apply --sync`](./apply.md#state-連携---sync----" -"prune----atomic)" +"差分の反映は [`tazuna apply --sync`](./apply.md#state-連携---sync----prune----" +"atomic)" msgstr "" -"To apply the diff, see [`tazuna apply --sync`](./apply.md#state-連携---" -"sync----prune----atomic)" +"To apply the diff, see [`tazuna apply --sync`](./apply.md#state-連携---sync" +"----prune----atomic)" #: src/reference/cli/state-list.md:37 msgid "managed リソースの readiness は [`tazuna status`](./status.md)" @@ -11261,24 +11374,21 @@ msgstr "" #: src/reference/cli/state-diff.md:3 msgid "" -"各 Manager の Build 結果と、クラスタに保存されている State を比較し、 リソー" -"ス単位の差分を出力します。クラスタは変更しません。" +"各 Manager の Build 結果と、クラスタに保存されている State を比較し、 リソース単位の差分を出力します。クラスタは変更しません。" msgstr "" "Compares the Build result of each Manager with the State stored in the " "cluster and outputs per-resource differences. Does not modify the cluster." #: src/reference/cli/state-diff.md:13 msgid "" -"各 Manifest について、Manager の Build を呼び出して 「いま `tazuna.yaml` から" -"生成されるべきリソース」を組み立てる。" +"各 Manifest について、Manager の Build を呼び出して 「いま `tazuna.yaml` " +"から生成されるべきリソース」を組み立てる。" msgstr "" "For each Manifest, call the Manager's Build to construct \"the resources " "that should currently be generated from `tazuna.yaml`.\"" #: src/reference/cli/state-diff.md:15 -msgid "" -"クラスタ上の State と突き合わせて、リソース単位で次のいずれかに分類して出力す" -"る。" +msgid "クラスタ上の State と突き合わせて、リソース単位で次のいずれかに分類して出力する。" msgstr "" "Reconcile with the in-cluster State and classify each resource into one of " "the following." @@ -11296,17 +11406,13 @@ msgid "State にあるが、Build 結果には存在しない" msgstr "Present in State, absent from the Build result" #: src/reference/cli/state-diff.md:22 -msgid "" -"差分計算をスキップし、常に同期する扱いの分類。`type: genesissecret` 由来の " -"Secret はここに入る" +msgid "差分計算をスキップし、常に同期する扱いの分類。`type: genesissecret` 由来の Secret はここに入る" msgstr "" "Classification that skips diff computation and is always synchronized. " "Secrets derived from `type: genesissecret` go here" #: src/reference/cli/state-diff.md:24 -msgid "" -"`context_matches` の評価は行いません。 クラスタへの read アクセスのみを行い、" -"何も変更しません。" +msgid "`context_matches` の評価は行いません。 クラスタへの read アクセスのみを行い、何も変更しません。" msgstr "" "Does not evaluate `context_matches`. Only read access to the cluster is " "performed; nothing is modified." @@ -11317,11 +11423,11 @@ msgstr "Difference from `state drift`" #: src/reference/cli/state-diff.md:29 msgid "" -"`state diff` と [`state drift`](./state-drift.md) はどちらも「差分」を表示し" -"ますが、 比較対象が違います。" +"`state diff` と [`state drift`](./state-drift.md) はどちらも「差分」を表示しますが、 " +"比較対象が違います。" msgstr "" -"Both `state diff` and [`state drift`](./state-drift.md) show a \"diff,\" but " -"they compare different things." +"Both `state diff` and [`state drift`](./state-drift.md) show a \"diff,\" but" +" they compare different things." #: src/reference/cli/state-diff.md:32 src/reference/cli/state-drift.md:29 msgid "観点" @@ -11369,8 +11475,8 @@ msgstr "`added` / `modified` / `removed` / `always-sync`" #: src/reference/cli/state-diff.md:38 msgid "" -"`tazuna.yaml` 側の更新を反映していない drift か、クラスタ側を直接触られた " -"drift かで 使うコマンドを切り替えると、ノイズの少ない監視を組み立てられます。" +"`tazuna.yaml` 側の更新を反映していない drift か、クラスタ側を直接触られた drift かで " +"使うコマンドを切り替えると、ノイズの少ない監視を組み立てられます。" msgstr "" "By switching the command you use depending on whether the drift is \"an " "update on the `tazuna.yaml` side not yet applied\" or \"the cluster side " @@ -11378,17 +11484,16 @@ msgstr "" #: src/reference/cli/state-diff.md:54 msgid "" -"反映は [`tazuna apply --sync`](./apply.md#state-連携---sync----prune----" -"atomic)" +"反映は [`tazuna apply --sync`](./apply.md#state-連携---sync----prune----atomic)" msgstr "" -"To apply, see [`tazuna apply --sync`](./apply.md#state-連携---sync----" -"prune----atomic)" +"To apply, see [`tazuna apply --sync`](./apply.md#state-連携---sync----prune" +"----atomic)" #: src/reference/cli/state-diff.md:55 msgid "ライブクラスタとの差分検知は [`tazuna state drift`](./state-drift.md)" msgstr "" -"For detecting diffs against the live cluster, see [`tazuna state drift`](./" -"state-drift.md)" +"For detecting diffs against the live cluster, see [`tazuna state " +"drift`](./state-drift.md)" #: src/reference/cli/state-diff.md:56 msgid "全件レンダリング結果が欲しいときは [`tazuna build`](./build.md)" @@ -11396,18 +11501,17 @@ msgstr "For the full rendering result, see [`tazuna build`](./build.md)" #: src/reference/cli/state-diff.md:57 msgid "" -"用語: [Diff type](../../concepts/glossary.md#diff-type) / [ContentHash]" -"(../../concepts/glossary.md#contenthash)" +"用語: [Diff type](../../concepts/glossary.md#diff-type) / " +"[ContentHash](../../concepts/glossary.md#contenthash)" msgstr "" "Terminology: [Diff type](../../concepts/glossary.md#diff-type) / " "[ContentHash](../../concepts/glossary.md#contenthash)" #: src/reference/cli/state-drift.md:3 msgid "" -"State ConfigMap に記録されたリソースと、**ライブクラスタ上の実体** を突き合わ" -"せて、 手動で変更されたリソース(`live-drifted`)や、State には残っているが " -"ライブから取り除かれたリソース(`live-missing`)を検知します。 クラスタへの " -"read アクセスのみを行い、何も変更しません。" +"State ConfigMap に記録されたリソースと、**ライブクラスタ上の実体** を突き合わせて、 手動で変更されたリソース(`live-" +"drifted`)や、State には残っているが ライブから取り除かれたリソース(`live-missing`)を検知します。 クラスタへの read" +" アクセスのみを行い、何も変更しません。" msgstr "" "Reconciles the resources recorded in the State ConfigMap against **the " "actual objects on the live cluster**, detecting resources changed by hand " @@ -11417,33 +11521,29 @@ msgstr "" #: src/reference/cli/state-drift.md:15 msgid "" -"各 Manifest について、対応する State ConfigMap(`tazuna` namespace の " -"`tazuna-state-`)を読む。" +"各 Manifest について、対応する State ConfigMap(`tazuna` namespace の `tazuna-" +"state-`)を読む。" msgstr "" -"For each Manifest, read the corresponding State ConfigMap (`tazuna-state-" -"` in the `tazuna` namespace)." +"For each Manifest, read the corresponding State ConfigMap (`tazuna-" +"state-` in the `tazuna` namespace)." #: src/reference/cli/state-drift.md:17 -msgid "" -"State に記録された各リソースを GVK / namespace / name で **クラスタから取得" -"** する。" +msgid "State に記録された各リソースを GVK / namespace / name で **クラスタから取得** する。" msgstr "" "Fetch each resource recorded in State **from the cluster** by GVK / " "namespace / name." #: src/reference/cli/state-drift.md:18 msgid "" -"取得できたリソースについて [ContentHash](../../concepts/" -"glossary.md#contenthash) を 再計算し、State に保存されたハッシュと突き合わせ" -"る。" +"取得できたリソースについて [ContentHash](../../concepts/glossary.md#contenthash) を " +"再計算し、State に保存されたハッシュと突き合わせる。" msgstr "" -"For fetched resources, recompute the [ContentHash](../../concepts/" -"glossary.md#contenthash) and reconcile it against the hash saved in State." +"For fetched resources, recompute the " +"[ContentHash](../../concepts/glossary.md#contenthash) and reconcile it " +"against the hash saved in State." #: src/reference/cli/state-drift.md:20 -msgid "" -"一致しないものを `live-drifted`、取得自体に失敗(NotFound)したものを `live-" -"missing` として出力する。" +msgid "一致しないものを `live-drifted`、取得自体に失敗(NotFound)したものを `live-missing` として出力する。" msgstr "" "Output non-matching ones as `live-drifted` and those whose fetch itself " "failed (NotFound) as `live-missing`." @@ -11451,8 +11551,7 @@ msgstr "" #: src/reference/cli/state-drift.md:23 msgid "" "`context_matches` の評価は行いません。 `tazuna state diff` と異なり、**Build " -"結果は使いません**。State に記録された ハッシュとライブの実体を比較するだけで" -"す。" +"結果は使いません**。State に記録された ハッシュとライブの実体を比較するだけです。" msgstr "" "It does not evaluate `context_matches`. Unlike `tazuna state diff`, it " "**does not use the Build result**. It only compares the hash recorded in " @@ -11488,13 +11587,13 @@ msgstr "Skips" #: src/reference/cli/state-drift.md:36 msgid "" -"`state diff` は「`tazuna.yaml` を更新したのにまだ反映していない」を検知し、 " -"`state drift` は「`tazuna.yaml` は変えていないのに、誰かがクラスタを触った」" -"を 検知する、と覚えると棲み分けが分かりやすくなります。" +"`state diff` は「`tazuna.yaml` を更新したのにまだ反映していない」を検知し、 `state drift` " +"は「`tazuna.yaml` は変えていないのに、誰かがクラスタを触った」を 検知する、と覚えると棲み分けが分かりやすくなります。" msgstr "" "It helps to remember the division of labor as: `state diff` detects \"you " "updated `tazuna.yaml` but haven't applied it yet,\" while `state drift` " -"detects \"you didn't change `tazuna.yaml`, but someone touched the cluster.\"" +"detects \"you didn't change `tazuna.yaml`, but someone touched the " +"cluster.\"" #: src/reference/cli/state-drift.md:42 msgid "drift が見つかった場合、Manifest 単位で次のように出力します。" @@ -11504,22 +11603,16 @@ msgstr "When drift is found, it is output on a per-Manifest basis as follows." msgid "" "```text\n" "Manifest: ingress-nginx\n" -" STATUS " -"RESOURCE HASH\n" -" live-drifted ingress-nginx/apps/v1/Deployment/ingress-nginx/" -"controller def456... (stored: abc123...)\n" -" live-missing ingress-nginx//v1/ConfigMap/ingress-nginx/" -"extra (stored: zzz999...)\n" +" STATUS RESOURCE HASH\n" +" live-drifted ingress-nginx/apps/v1/Deployment/ingress-nginx/controller def456... (stored: abc123...)\n" +" live-missing ingress-nginx//v1/ConfigMap/ingress-nginx/extra (stored: zzz999...)\n" "```" msgstr "" "```text\n" "Manifest: ingress-nginx\n" -" STATUS " -"RESOURCE HASH\n" -" live-drifted ingress-nginx/apps/v1/Deployment/ingress-nginx/" -"controller def456... (stored: abc123...)\n" -" live-missing ingress-nginx//v1/ConfigMap/ingress-nginx/" -"extra (stored: zzz999...)\n" +" STATUS RESOURCE HASH\n" +" live-drifted ingress-nginx/apps/v1/Deployment/ingress-nginx/controller def456... (stored: abc123...)\n" +" live-missing ingress-nginx//v1/ConfigMap/ingress-nginx/extra (stored: zzz999...)\n" "```" #: src/reference/cli/state-drift.md:51 @@ -11528,13 +11621,12 @@ msgstr "If there is no drift, only the following single line is emitted." #: src/reference/cli/state-drift.md:57 msgid "" -"`state drift` 自体は drift の有無で **終了コードを変えません**。CI で「drift " -"あり」 を失敗扱いにしたい場合は、出力に `No drift detected.` を含まないかどう" -"かでフィルタします。" +"`state drift` 自体は drift の有無で **終了コードを変えません**。CI で「drift あり」 を失敗扱いにしたい場合は、出力に" +" `No drift detected.` を含まないかどうかでフィルタします。" msgstr "" "`state drift` itself **does not change its exit code** based on whether " -"drift exists. If you want CI to treat \"drift present\" as a failure, filter " -"on whether the output does not contain `No drift detected.`" +"drift exists. If you want CI to treat \"drift present\" as a failure, filter" +" on whether the output does not contain `No drift detected.`" #: src/reference/cli/state-drift.md:62 msgid "次の Manifest は drift 検知対象外として **スキップ** されます。" @@ -11543,22 +11635,20 @@ msgstr "" #: src/reference/cli/state-drift.md:64 msgid "`name` が空の Manifest(State key を作れないため)" -msgstr "Manifests with an empty `name` (because a State key cannot be created)" +msgstr "" +"Manifests with an empty `name` (because a State key cannot be created)" #: src/reference/cli/state-drift.md:65 msgid "" "`type: genesissecret`([always-sync](../../concepts/glossary.md#always-sync) " -"設計上、 毎回 Provider から再取得するためそもそも drift という概念を持たな" -"い)" +"設計上、 毎回 Provider から再取得するためそもそも drift という概念を持たない)" msgstr "" "`type: genesissecret` (by [always-sync](../../concepts/glossary.md#always-" "sync) design, it re-fetches from the Provider every time, so it has no " "concept of drift to begin with)" #: src/reference/cli/state-drift.md:67 -msgid "" -"State ConfigMap が空または存在しない Manifest(一度も apply / sync されていな" -"い)" +msgid "State ConfigMap が空または存在しない Manifest(一度も apply / sync されていない)" msgstr "" "Manifests whose State ConfigMap is empty or absent (never applied / synced)" @@ -11588,25 +11678,23 @@ msgstr "" #: src/reference/cli/state-drift.md:103 msgid "" -"drift モニタリングの組み立て方は [Drift モニタリング](../../operations/drift-" -"monitoring.md)" +"drift モニタリングの組み立て方は [Drift モニタリング](../../operations/drift-monitoring.md)" msgstr "" -"For how to set up drift monitoring, see [Drift Monitoring](../../operations/" -"drift-monitoring.md)" +"For how to set up drift monitoring, see [Drift " +"Monitoring](../../operations/drift-monitoring.md)" #: src/reference/cli/state-drift.md:104 msgid "" -"用語: [State](../../concepts/glossary.md#state) / [ContentHash](../../" -"concepts/glossary.md#contenthash)" +"用語: [State](../../concepts/glossary.md#state) / " +"[ContentHash](../../concepts/glossary.md#contenthash)" msgstr "" -"Terminology: [State](../../concepts/glossary.md#state) / [ContentHash](../../" -"concepts/glossary.md#contenthash)" +"Terminology: [State](../../concepts/glossary.md#state) / " +"[ContentHash](../../concepts/glossary.md#contenthash)" #: src/reference/cli/secret-to-genesissecret.md:3 msgid "" -"クラスタ上の既存 Secret を 1Password に書き出し、 それを参照する " -"GenesisSecret YAML を生成します。 **移行 / 棚卸し用の片道のコマンド** であ" -"り、定常運用で繰り返し叩くものではありません。" +"クラスタ上の既存 Secret を 1Password に書き出し、 それを参照する GenesisSecret YAML を生成します。 **移行 /" +" 棚卸し用の片道のコマンド** であり、定常運用で繰り返し叩くものではありません。" msgstr "" "Writes an existing Secret in the cluster out to 1Password and generates a " "GenesisSecret YAML that references it. This is **a one-way migration / " @@ -11614,8 +11702,8 @@ msgstr "" #: src/reference/cli/secret-to-genesissecret.md:18 msgid "" -"`--namespace`(デフォルト `default`)の Secret を `--label-selector` / `--" -"name-regex` で絞り込む。" +"`--namespace`(デフォルト `default`)の Secret を `--label-selector` / `--name-regex`" +" で絞り込む。" msgstr "" "Narrow down the Secrets in `--namespace` (default `default`) by `--label-" "selector` / `--name-regex`." @@ -11626,27 +11714,23 @@ msgstr "" "Write the data of each Secret out to the 1Password `--vault` as an Item." #: src/reference/cli/secret-to-genesissecret.md:21 -msgid "" -"その Item を参照する GenesisSecret YAML を `--dump-dir`(デフォルト `.`)に出" -"力する。" +msgid "その Item を参照する GenesisSecret YAML を `--dump-dir`(デフォルト `.`)に出力する。" msgstr "" "Emit a GenesisSecret YAML referencing that Item to `--dump-dir` (default " "`.`)." #: src/reference/cli/secret-to-genesissecret.md:22 msgid "" -"`--dry-run` のときは、1Password への書き込みも YAML の生成も行わずに、 対象 " -"Secret の選定結果だけを出力する。" +"`--dry-run` のときは、1Password への書き込みも YAML の生成も行わずに、 対象 Secret の選定結果だけを出力する。" msgstr "" "With `--dry-run`, neither write to 1Password nor generate YAML; only output " "the selection result of target Secrets." #: src/reference/cli/secret-to-genesissecret.md:25 msgid "" -"`tazuna.yaml` は読まないので `-f` / `--file-path` は無視されます。 グローバル" -"フラグのうち実際に効くのは `-l` / `--log-level` だけです。 クラスタへの read " -"と 1Password への write の両方が走るため、 **1Password CLI (`op`) が認証済み" -"であること** が前提です。" +"`tazuna.yaml` は読まないので `-f` / `--file-path` は無視されます。 グローバルフラグのうち実際に効くのは `-l` " +"/ `--log-level` だけです。 クラスタへの read と 1Password への write の両方が走るため、 **1Password" +" CLI (`op`) が認証済みであること** が前提です。" msgstr "" "It does not read `tazuna.yaml`, so `-f` / `--file-path` is ignored. Among " "the global flags, only `-l` / `--log-level` actually takes effect. Since " @@ -11658,9 +11742,7 @@ msgid "`--op-host`" msgstr "`--op-host`" #: src/reference/cli/secret-to-genesissecret.md:36 -msgid "" -"1Password サービスアカウント URL のホスト部分(例: " -"`example.1password.com`)。" +msgid "1Password サービスアカウント URL のホスト部分(例: `example.1password.com`)。" msgstr "" "Host part of the 1Password service-account URL (e.g. " "`example.1password.com`)." @@ -11670,9 +11752,7 @@ msgid "`--namespace`" msgstr "`--namespace`" #: src/reference/cli/secret-to-genesissecret.md:37 -msgid "" -"対象 Secret が存在する Kubernetes namespace。シェル補完で実クラスタの " -"namespace を列挙します。" +msgid "対象 Secret が存在する Kubernetes namespace。シェル補完で実クラスタの namespace を列挙します。" msgstr "" "The Kubernetes namespace where the target Secrets exist. Shell completion " "enumerates the actual cluster namespaces." @@ -11733,8 +11813,7 @@ msgstr "Output only the selection result without writes." #: src/reference/cli/secret-to-genesissecret.md:63 msgid "" -"生成された YAML は `type: genesissecret` の Manifest として `tazuna.yaml` か" -"ら参照します。" +"生成された YAML は `type: genesissecret` の Manifest として `tazuna.yaml` から参照します。" msgstr "" "Reference the generated YAML from `tazuna.yaml` as a `type: genesissecret` " "Manifest." @@ -11750,16 +11829,14 @@ msgstr "" #: src/reference/cli/tags.md:3 msgid "" -"`tazuna.yaml` で宣言されているタグを一覧します。 タグごとに、そのタグが付いて" -"いる Manifest の name を表示します。" +"`tazuna.yaml` で宣言されているタグを一覧します。 タグごとに、そのタグが付いている Manifest の name を表示します。" msgstr "" "Lists the tags declared in `tazuna.yaml`. For each tag, displays the names " "of the Manifests carrying that tag." #: src/reference/cli/tags.md:13 msgid "" -"`includes` 展開後の全 Manifest を走査し、`tags` を `タグ名 → Manifest 名のリ" -"スト` のマップに集約する。" +"`includes` 展開後の全 Manifest を走査し、`tags` を `タグ名 → Manifest 名のリスト` のマップに集約する。" msgstr "" "Walk every Manifest after `includes` expansion and aggregate `tags` into a " "`tag name → list of Manifest names` map." @@ -11782,7 +11859,8 @@ msgstr "Narrows the output to the specified tag names." #: src/reference/cli/tags.md:45 msgid "`--tags` の絞り込み仕様: [`manifests[].tags`](../tazuna-yaml.md#tags)" -msgstr "Filter spec for `--tags`: [`manifests[].tags`](../tazuna-yaml.md#tags)" +msgstr "" +"Filter spec for `--tags`: [`manifests[].tags`](../tazuna-yaml.md#tags)" #: src/reference/cli/tags.md:46 msgid "絞り込んで apply する場合は [`tazuna apply`](./apply.md)" @@ -11820,9 +11898,8 @@ msgstr "`/` — `runtime.GOOS` / `runtime.GOARCH`." #: src/reference/cli/version.md:25 msgid "" -"`` / `` / `` は goreleaser によるリリース時に注入され" -"ます。 `go install` / `go run` などローカルビルドでは未注入のためデフォルト値" -"が出ます。" +"`` / `` / `` は goreleaser によるリリース時に注入されます。 `go " +"install` / `go run` などローカルビルドでは未注入のためデフォルト値が出ます。" msgstr "" "`` / `` / `` are injected at release time by " "goreleaser. For local builds via `go install` / `go run`, they are not " @@ -11834,15 +11911,14 @@ msgstr "No specific flags. No arguments are accepted." #: src/contributing/index.md:3 msgid "" -"このセクションは、Tazuna のコードベース・ドキュメント・リリースに変更を入れる" -"人向けの案内です。 リポジトリのルートにある [`CONTRIBUTING.md`](https://" -"github.com/pepabo/tazuna/blob/main/CONTRIBUTING.md) が一次情報で、ここではそ" -"れを補う形で各トピックを 1 ページずつにまとめます。" +"このセクションは、Tazuna のコードベース・ドキュメント・リリースに変更を入れる人向けの案内です。 リポジトリのルートにある " +"[`CONTRIBUTING.md`](https://github.com/pepabo/tazuna/blob/main/CONTRIBUTING.md)" +" が一次情報で、ここではそれを補う形で各トピックを 1 ページずつにまとめます。" msgstr "" "This section is guidance for those who want to change Tazuna's codebase, " -"documentation, or releases. The repository root's [`CONTRIBUTING.md`]" -"(https://github.com/pepabo/tazuna/blob/main/CONTRIBUTING.md) is the primary " -"source; this section supplements it with one page per topic." +"documentation, or releases. The repository root's " +"[`CONTRIBUTING.md`](https://github.com/pepabo/tazuna/blob/main/CONTRIBUTING.md)" +" is the primary source; this section supplements it with one page per topic." #: src/contributing/index.md:9 msgid "" @@ -11862,8 +11938,8 @@ msgstr "" #: src/contributing/index.md:13 msgid "" -"**[ドキュメント](./documentation.md)** — `docs/` の構造、`mdbook` でのプレ" -"ビュー、`po/en.po` を使った英語訳の更新フロー、GitHub Pages への公開。" +"**[ドキュメント](./documentation.md)** — `docs/` の構造、`mdbook` でのプレビュー、`po/en.po` " +"を使った英語訳の更新フロー、GitHub Pages への公開。" msgstr "" "**[Documentation](./documentation.md)** — the structure of `docs/`, " "previewing with `mdbook`, updating the English translation via `po/en.po`, " @@ -11871,8 +11947,8 @@ msgstr "" #: src/contributing/index.md:15 msgid "" -"**[リリース](./releases.md)** — tag push を起点とした goreleaser によるリリー" -"ス、バージョン埋め込み、SBOM / 署名 / 来歴。" +"**[リリース](./releases.md)** — tag push を起点とした goreleaser " +"によるリリース、バージョン埋め込み、SBOM / 署名 / 来歴。" msgstr "" "**[Release](./releases.md)** — releases via goreleaser triggered by tag " "push, version embedding, SBOM / signing / provenance." @@ -11883,23 +11959,23 @@ msgstr "Bug Reports / Feature Proposals" #: src/contributing/index.md:20 msgid "" -"GitHub の [Issue テンプレート](https://github.com/pepabo/tazuna/tree/" -"main/.github/ISSUE_TEMPLATE) を使ってください。テンプレート無しの自由記述 " -"issue は受け付けます。" +"GitHub の [Issue " +"テンプレート](https://github.com/pepabo/tazuna/tree/main/.github/ISSUE_TEMPLATE) " +"を使ってください。テンプレート無しの自由記述 issue は受け付けます。" msgstr "" -"Use the [Issue templates](https://github.com/pepabo/tazuna/tree/main/.github/" -"ISSUE_TEMPLATE) on GitHub. Free-form issues without a template are also " -"accepted." +"Use the [Issue " +"templates](https://github.com/pepabo/tazuna/tree/main/.github/ISSUE_TEMPLATE)" +" on GitHub. Free-form issues without a template are also accepted." #: src/contributing/index.md:23 msgid "" -"セキュリティ起因の問題は [`SECURITY.md`](https://github.com/pepabo/tazuna/" -"blob/main/SECURITY.md) の手順に従ってください。**公開 issue は作らないでくだ" -"さい。**" +"セキュリティ起因の問題は " +"[`SECURITY.md`](https://github.com/pepabo/tazuna/blob/main/SECURITY.md) " +"の手順に従ってください。**公開 issue は作らないでください。**" msgstr "" -"For security-related problems, follow the procedure in [`SECURITY.md`]" -"(https://github.com/pepabo/tazuna/blob/main/SECURITY.md). **Do not create a " -"public issue.**" +"For security-related problems, follow the procedure in " +"[`SECURITY.md`](https://github.com/pepabo/tazuna/blob/main/SECURITY.md). " +"**Do not create a public issue.**" #: src/contributing/index.md:26 msgid "Pull Request の流れ" @@ -11920,7 +11996,8 @@ msgstr "Keep each change small and focused on one topic." #: src/contributing/index.md:32 msgid "push する前にローカルで `make test` と `make lint` を通す。" msgstr "" -"Before pushing, run `make test` and `make lint` locally and ensure they pass." +"Before pushing, run `make test` and `make lint` locally and ensure they " +"pass." #: src/contributing/index.md:33 msgid "`main` 宛に PR を作成。CI が green になるまでレビュー対象にならない。" @@ -11928,25 +12005,24 @@ msgstr "Open a PR against `main`. It does not enter review until CI is green." #: src/contributing/index.md:35 msgid "" -"PR テンプレートはリポジトリの [`.github/PULL_REQUEST_TEMPLATE.md`](https://" -"github.com/pepabo/tazuna/blob/main/.github/PULL_REQUEST_TEMPLATE.md) を使いま" -"す。" +"PR テンプレートはリポジトリの " +"[`.github/PULL_REQUEST_TEMPLATE.md`](https://github.com/pepabo/tazuna/blob/main/.github/PULL_REQUEST_TEMPLATE.md)" +" を使います。" msgstr "" -"Use the [`.github/PULL_REQUEST_TEMPLATE.md`](https://github.com/pepabo/" -"tazuna/blob/main/.github/PULL_REQUEST_TEMPLATE.md) PR template in the " -"repository." +"Use the " +"[`.github/PULL_REQUEST_TEMPLATE.md`](https://github.com/pepabo/tazuna/blob/main/.github/PULL_REQUEST_TEMPLATE.md)" +" PR template in the repository." #: src/contributing/development.md:3 msgid "" -"このページは、Tazuna 本体に手を入れたい人がローカル環境を整え、 コード変更を" -"ビルド・実行・確認するまでの手順をまとめます。 ドキュメントやリリースについて" -"は別ページ([ドキュメント](./documentation.md) / [リリース](./releases.md))" -"を参照してください。" +"このページは、Tazuna 本体に手を入れたい人がローカル環境を整え、 コード変更をビルド・実行・確認するまでの手順をまとめます。 " +"ドキュメントやリリースについては別ページ([ドキュメント](./documentation.md) / " +"[リリース](./releases.md))を参照してください。" msgstr "" "This page is for people who want to modify Tazuna itself, covering setting " "up your local environment and building / running / verifying code changes. " -"For documentation and release flows, see separate pages ([Documentation](./" -"documentation.md) / [Release](./releases.md))." +"For documentation and release flows, see separate pages " +"([Documentation](./documentation.md) / [Release](./releases.md))." #: src/contributing/development.md:8 msgid "toolchain は mise で揃える" @@ -11954,11 +12030,12 @@ msgstr "Set Up the Toolchain With mise" #: src/contributing/development.md:10 msgid "" -"リポジトリには [`mise.toml`](https://github.com/pepabo/tazuna/blob/main/" -"mise.toml) が 入っており、必要な toolchain がピン留めされています。" +"リポジトリには [`mise.toml`](https://github.com/pepabo/tazuna/blob/main/mise.toml) " +"が 入っており、必要な toolchain がピン留めされています。" msgstr "" -"The repository includes [`mise.toml`](https://github.com/pepabo/tazuna/blob/" -"main/mise.toml), which pins the required toolchain." +"The repository includes " +"[`mise.toml`](https://github.com/pepabo/tazuna/blob/main/mise.toml), which " +"pins the required toolchain." #: src/contributing/development.md:13 msgid "" @@ -11978,37 +12055,34 @@ msgstr "" #: src/contributing/development.md:20 msgid "" -"`mise` をインストール済みであれば、リポジトリのルートで `mise install` を実行" -"すれば これらが揃います。Go や golangci-lint をシステム側で別管理している場合" -"は、`mise.toml` と一致するバージョンを自分で揃えてください。" +"`mise` をインストール済みであれば、リポジトリのルートで `mise install` を実行すれば これらが揃います。Go や " +"golangci-lint をシステム側で別管理している場合は、`mise.toml` と一致するバージョンを自分で揃えてください。" msgstr "" "If you have `mise` installed, running `mise install` at the repository root " -"will set up everything. If you manage Go or golangci-lint separately on your " -"system, align them with `mise.toml`'s versions yourself." +"will set up everything. If you manage Go or golangci-lint separately on your" +" system, align them with `mise.toml`'s versions yourself." #: src/contributing/development.md:24 msgid "" -"なお `go.mod` が要求する Go のバージョン (`go 1.26.x`) が `mise.toml` のピン" -"留めより 新しい場合は、ビルド時に Go の toolchain ダウンロード機構が差分を吸" -"収します。意図的に toolchain ダウンロードを避けたい場合は、`mise.toml` を " -"`go.mod` の `go` 行に揃えて使ってください。" +"なお `go.mod` が要求する Go のバージョン (`go 1.26.x`) が `mise.toml` のピン留めより 新しい場合は、ビルド時に" +" Go の toolchain ダウンロード機構が差分を吸収します。意図的に toolchain ダウンロードを避けたい場合は、`mise.toml` " +"を `go.mod` の `go` 行に揃えて使ってください。" msgstr "" -"Note: if the Go version required by `go.mod` (`go 1.26.x`) is newer than the " -"version pinned in `mise.toml`, Go's toolchain download mechanism will absorb " -"the difference at build time. If you want to deliberately avoid toolchain " -"downloads, align `mise.toml` with the `go` line in `go.mod`." +"Note: if the Go version required by `go.mod` (`go 1.26.x`) is newer than the" +" version pinned in `mise.toml`, Go's toolchain download mechanism will " +"absorb the difference at build time. If you want to deliberately avoid " +"toolchain downloads, align `mise.toml` with the `go` line in `go.mod`." #: src/contributing/development.md:28 msgid "" -"`helm` バイナリは Tazuna 自身は使いません([Helmfile backend](../reference/" -"manifest-types/helmfile.md) は Go ライブラリとして組み込んでいます)。" -"`mise.toml` に入っているのは、`helm` を 依存ツールとして扱う開発フローを将来" -"サポートする余地を残すためのものです。" +"`helm` バイナリは Tazuna 自身は使いません([Helmfile backend](../reference/manifest-" +"types/helmfile.md) は Go ライブラリとして組み込んでいます)。`mise.toml` に入っているのは、`helm` を " +"依存ツールとして扱う開発フローを将来サポートする余地を残すためのものです。" msgstr "" -"Tazuna itself does not use the `helm` binary ([Helmfile backend](../" -"reference/manifest-types/helmfile.md) is embedded as a Go library). `helm` " -"is listed in `mise.toml` to leave room for a future development flow that " -"treats `helm` as a dependent tool." +"Tazuna itself does not use the `helm` binary ([Helmfile " +"backend](../reference/manifest-types/helmfile.md) is embedded as a Go " +"library). `helm` is listed in `mise.toml` to leave room for a future " +"development flow that treats `helm` as a dependent tool." #: src/contributing/development.md:32 msgid "主要な `make` ターゲット" @@ -12080,11 +12154,11 @@ msgstr "`make test-e2e`" #: src/contributing/development.md:44 msgid "" -"`make build && make devenv-create` の後 `go test -tags=e2e -count=1 ./test/" -"e2e/...`" +"`make build && make devenv-create` の後 `go test -tags=e2e -count=1 " +"./test/e2e/...`" msgstr "" -"After `make build && make devenv-create`, runs `go test -tags=e2e -count=1 ./" -"test/e2e/...`" +"After `make build && make devenv-create`, runs `go test -tags=e2e -count=1 " +"./test/e2e/...`" #: src/contributing/development.md:45 src/contributing/testing.md:14 msgid "`make test-all`" @@ -12099,8 +12173,7 @@ msgid "`make cover`" msgstr "`make cover`" #: src/contributing/development.md:46 -msgid "" -"`-race -covermode=atomic -coverprofile=coverage.out` でテスト後、サマリ出力" +msgid "`-race -covermode=atomic -coverprofile=coverage.out` でテスト後、サマリ出力" msgstr "" "Runs tests with `-race -covermode=atomic -coverprofile=coverage.out`, then " "outputs a summary" @@ -12118,9 +12191,7 @@ msgid "`make devenv-create`" msgstr "`make devenv-create`" #: src/contributing/development.md:48 -msgid "" -"`kind` で `tazuna` という名前のクラスタを立てる(既存なら context を切り替" -"え)" +msgid "`kind` で `tazuna` という名前のクラスタを立てる(既存なら context を切り替え)" msgstr "" "Stands up a `kind` cluster named `tazuna` (or switches context if one " "already exists)" @@ -12135,15 +12206,14 @@ msgstr "`kind delete cluster --name tazuna`" #: src/contributing/development.md:51 msgid "" -"KinD クラスタ名は **固定で `tazuna`**、kubeconfig context 名は `kind-tazuna` " -"です。 e2e は KinD クラスタを前提にしているため、`make test-e2e` を初めて走ら" -"せるときは 内部で `make devenv-create` が動きます([テスト](./testing.md) も" -"参照)。" +"KinD クラスタ名は **固定で `tazuna`**、kubeconfig context 名は `kind-tazuna` です。 e2e は " +"KinD クラスタを前提にしているため、`make test-e2e` を初めて走らせるときは 内部で `make devenv-create` " +"が動きます([テスト](./testing.md) も参照)。" msgstr "" "The KinD cluster name is **fixed as `tazuna`**, and the kubeconfig context " "name is `kind-tazuna`. Because e2e assumes a KinD cluster, the first run of " -"`make test-e2e` internally triggers `make devenv-create` (see also [Testing]" -"(./testing.md))." +"`make test-e2e` internally triggers `make devenv-create` (see also " +"[Testing](./testing.md))." #: src/contributing/development.md:55 msgid "リポジトリ構成" @@ -12167,8 +12237,8 @@ msgstr "`cmd/`" #: src/contributing/development.md:62 msgid "" -"Cobra のサブコマンド定義(`apply` / `build` / `check` / `destroy` / `plan` / " -"`status` / `state ...` / `secret-to-genesissecret` / `tags` / `version`)。" +"Cobra のサブコマンド定義(`apply` / `build` / `check` / `destroy` / `plan` / `status` " +"/ `state ...` / `secret-to-genesissecret` / `tags` / `version`)。" msgstr "" "Cobra subcommand definitions (`apply` / `build` / `check` / `destroy` / " "`plan` / `status` / `state ...` / `secret-to-genesissecret` / `tags` / " @@ -12179,9 +12249,7 @@ msgid "`cmd/internal/`" msgstr "`cmd/internal/`" #: src/contributing/development.md:63 -msgid "" -"サブコマンド間で共有する内部ユーティリティ(kubeconfig ロード、ロガー、OTLP " -"tracer セットアップなど)。" +msgid "サブコマンド間で共有する内部ユーティリティ(kubeconfig ロード、ロガー、OTLP tracer セットアップなど)。" msgstr "" "Internal utilities shared between subcommands (kubeconfig loading, logger, " "OTLP tracer setup, and so on)." @@ -12192,8 +12260,8 @@ msgstr "`api/v1/`" #: src/contributing/development.md:64 msgid "" -"YAML スキーマに対応する Go 構造体定義(`tazuna.yaml` / `tazuna.hint.yaml` / " -"GenesisSecret / TestPluginSpec / ORAS / Secret Provider)。" +"YAML スキーマに対応する Go 構造体定義(`tazuna.yaml` / `tazuna.hint.yaml` / GenesisSecret /" +" TestPluginSpec / ORAS / Secret Provider)。" msgstr "" "Go struct definitions corresponding to the YAML schemas (`tazuna.yaml` / " "`tazuna.hint.yaml` / GenesisSecret / TestPluginSpec / ORAS / Secret " @@ -12205,8 +12273,8 @@ msgstr "`pkg/runner/`" #: src/contributing/development.md:65 msgid "" -"`tazuna apply` 全体のオーケストレーション、`dependsOn` の DAG 解決、`plan` / " -"`status` / `state diff` / `state drift` の実装。" +"`tazuna apply` 全体のオーケストレーション、`dependsOn` の DAG 解決、`plan` / `status` / `state" +" diff` / `state drift` の実装。" msgstr "" "Orchestration of the whole `tazuna apply`, DAG resolution of `dependsOn`, " "and the implementation of `plan` / `status` / `state diff` / `state drift`." @@ -12217,8 +12285,8 @@ msgstr "`pkg/manager/`" #: src/contributing/development.md:66 msgid "" -"Manifest type 別の Manager 実装(`kustomize` / `helmfile` / " -"`genesis_secret`、および `oras/` サブパッケージ)。" +"Manifest type 別の Manager 実装(`kustomize` / `helmfile` / `genesis_secret`、および " +"`oras/` サブパッケージ)。" msgstr "" "Per-manifest-type Manager implementations (`kustomize` / `helmfile` / " "`genesis_secret`, and the `oras/` subpackage)." @@ -12314,9 +12382,8 @@ msgstr "This documentation site." #: src/contributing/development.md:79 msgid "" -"リファレンスでよく出てくる Manager / Runner / Validator などの責務分担は [全" -"体アーキテクチャ](../concepts/architecture.md) を参照すると引き合わせやすいで" -"す。" +"リファレンスでよく出てくる Manager / Runner / Validator などの責務分担は " +"[全体アーキテクチャ](../concepts/architecture.md) を参照すると引き合わせやすいです。" msgstr "" "The responsibility splits often referenced in the reference (Manager / " "Runner / Validator and so on) are easier to cross-check by reading [Overall " @@ -12327,30 +12394,26 @@ msgid "ローカルバイナリで挙動を試す" msgstr "Try Behavior With a Local Binary" #: src/contributing/development.md:84 -msgid "" -"`make build` で生成した `./tazuna` を直接呼べば、リリース版のかわりに開発中" -"の バイナリで挙動を試せます。" +msgid "`make build` で生成した `./tazuna` を直接呼べば、リリース版のかわりに開発中の バイナリで挙動を試せます。" msgstr "" "By calling `./tazuna` generated by `make build` directly, you can try " "behavior using your in-development binary instead of the release version." #: src/contributing/development.md:93 msgid "" -"`PATH` に置きたいときは `make install` を使います(`sudo` が必要です)。 " -"KinD で実機検証する場合は `make devenv-create` でクラスタを立て、 `kubectl " -"config use-context kind-tazuna` で current-context を切り替えてから動かしま" -"す。" +"`PATH` に置きたいときは `make install` を使います(`sudo` が必要です)。 KinD で実機検証する場合は `make " +"devenv-create` でクラスタを立て、 `kubectl config use-context kind-tazuna` で current-" +"context を切り替えてから動かします。" msgstr "" "When you want it on `PATH`, use `make install` (it requires `sudo`). If you " -"want to do live verification with KinD, bring up a cluster with `make devenv-" -"create`, switch current-context with `kubectl config use-context kind-" -"tazuna`, and then run." +"want to do live verification with KinD, bring up a cluster with `make " +"devenv-create`, switch current-context with `kubectl config use-context " +"kind-tazuna`, and then run." #: src/contributing/testing.md:3 msgid "" -"Tazuna のテストは **unit / integration / e2e** の 3 レイヤです。 各レイヤは " -"`make` ターゲットと 1 対 1 で対応しており、PR で常に動くのは unit (CI)、" -"e2e は KinD を前提にした手動レイヤです。" +"Tazuna のテストは **unit / integration / e2e** の 3 レイヤです。 各レイヤは `make` ターゲットと 1 対" +" 1 で対応しており、PR で常に動くのは unit (CI)、e2e は KinD を前提にした手動レイヤです。" msgstr "" "Tazuna's tests are split into **3 layers: unit / integration / e2e**. Each " "layer corresponds 1:1 with a `make` target; unit always runs on PRs (CI), " @@ -12382,7 +12445,8 @@ msgstr "`go test ./...`" #: src/contributing/testing.md:11 msgid "なし。GitHub Actions の `CI` ワークフローで毎 push / PR 時に走る。" -msgstr "None. Runs on every push / PR via the `CI` workflow in GitHub Actions." +msgstr "" +"None. Runs on every push / PR via the `CI` workflow in GitHub Actions." #: src/contributing/testing.md:12 msgid "integration" @@ -12422,9 +12486,7 @@ msgid "カバレッジ" msgstr "Coverage" #: src/contributing/testing.md:15 -msgid "" -"`-race -covermode=atomic -coverprofile=coverage.out` で unit を実行、サマリ出" -"力" +msgid "`-race -covermode=atomic -coverprofile=coverage.out` で unit を実行、サマリ出力" msgstr "" "Runs unit tests with `-race -covermode=atomic -coverprofile=coverage.out`, " "then outputs a summary" @@ -12432,8 +12494,7 @@ msgstr "" #: src/contributing/testing.md:17 msgid "" "CI(`.github/workflows/ci.yaml`)では `go test -race -covermode=atomic " -"-coverprofile=coverage.out ./...` が走るため、内容は `make cover` とおおむね" -"一致します。" +"-coverprofile=coverage.out ./...` が走るため、内容は `make cover` とおおむね一致します。" msgstr "" "In CI (`.github/workflows/ci.yaml`), `go test -race -covermode=atomic " "-coverprofile=coverage.out ./...` is run, so the contents largely match " @@ -12445,8 +12506,8 @@ msgstr "Unit Tests" #: src/contributing/testing.md:22 msgid "" -"すべてのパッケージで `*_test.go` として書かれています。Go の標準的なテストで" -"す。 KinD / 外部 CLI に依存せず、`go test ./...` のみで完結します。" +"すべてのパッケージで `*_test.go` として書かれています。Go の標準的なテストです。 KinD / 外部 CLI に依存せず、`go " +"test ./...` のみで完結します。" msgstr "" "Written as `*_test.go` in every package. Standard Go tests. They have no " "dependency on KinD or external CLIs, and `go test ./...` is self-contained." @@ -12461,9 +12522,8 @@ msgstr "Integration Tests" #: src/contributing/testing.md:29 msgid "" -"build tag `integration` を付けた追加テストです。`make test-integration` で実" -"行します。 外部依存はないが、unit テストには重すぎるシナリオを切り分ける場所" -"として使われます。" +"build tag `integration` を付けた追加テストです。`make test-integration` で実行します。 " +"外部依存はないが、unit テストには重すぎるシナリオを切り分ける場所として使われます。" msgstr "" "Additional tests tagged with the `integration` build tag. Run with `make " "test-integration`. The place to isolate scenarios that have no external " @@ -12479,8 +12539,8 @@ msgstr "E2E Tests" #: src/contributing/testing.md:36 msgid "" -"`test/e2e/` に置かれた本物のクラスタを使ったテストです。 build tag `e2e` で隔" -"離され、`./test/e2e/...` だけが対象になります。" +"`test/e2e/` に置かれた本物のクラスタを使ったテストです。 build tag `e2e` で隔離され、`./test/e2e/...` " +"だけが対象になります。" msgstr "" "Real-cluster tests placed in `test/e2e/`. Isolated by the `e2e` build tag, " "with only `./test/e2e/...` targeted." @@ -12494,18 +12554,15 @@ msgid "`make build`(`./tazuna` を作る)" msgstr "`make build` (build `./tazuna`)" #: src/contributing/testing.md:42 -msgid "" -"`make devenv-create`(KinD クラスタ `tazuna` を立てる、既存なら context を切" -"り替え)" +msgid "`make devenv-create`(KinD クラスタ `tazuna` を立てる、既存なら context を切り替え)" msgstr "" "`make devenv-create` (stand up the KinD cluster `tazuna`, or switch context " "if one already exists)" #: src/contributing/testing.md:45 msgid "" -"`-count=1` が付くのは、e2e テストのキャッシュを禁止して毎回実走させるためで" -"す。 `make devenv-destroy` で KinD クラスタは片付きます(`kind delete " -"cluster --name tazuna`)。" +"`-count=1` が付くのは、e2e テストのキャッシュを禁止して毎回実走させるためです。 `make devenv-destroy` で KinD" +" クラスタは片付きます(`kind delete cluster --name tazuna`)。" msgstr "" "`-count=1` is set so that e2e tests are not cached and actually run every " "time. The KinD cluster is cleaned up by `make devenv-destroy` (`kind delete " @@ -12541,16 +12598,16 @@ msgstr "Config file" #: src/contributing/testing.md:54 msgid "" -"[`.github/kind-config.yaml`](https://github.com/pepabo/tazuna/blob/" -"main/.github/kind-config.yaml)" +"[`.github/kind-" +"config.yaml`](https://github.com/pepabo/tazuna/blob/main/.github/kind-" +"config.yaml)" msgstr "" -"[`.github/kind-config.yaml`](https://github.com/pepabo/tazuna/blob/" -"main/.github/kind-config.yaml)" +"[`.github/kind-" +"config.yaml`](https://github.com/pepabo/tazuna/blob/main/.github/kind-" +"config.yaml)" #: src/contributing/testing.md:56 -msgid "" -"CI 用と開発者ローカル用で同じ KinD 設定を共有しているため、ローカルで通る " -"e2e は 基本的に CI でも通ります。" +msgid "CI 用と開発者ローカル用で同じ KinD 設定を共有しているため、ローカルで通る e2e は 基本的に CI でも通ります。" msgstr "" "Because CI and developer local environments share the same KinD config, e2e " "that passes locally generally also passes in CI." @@ -12561,13 +12618,12 @@ msgstr "Test Data" #: src/contributing/testing.md:61 msgid "" -"e2e の fixture は `test/e2e/testdata/` 配下にケースごとのディレクトリで置かれ" -"ています。 `tazuna.yaml` と、`type` に対応した実体(`kustomize/` / `helmfile/" -"` 等)が同居する作りです。" +"e2e の fixture は `test/e2e/testdata/` 配下にケースごとのディレクトリで置かれています。 `tazuna.yaml` " +"と、`type` に対応した実体(`kustomize/` / `helmfile/` 等)が同居する作りです。" msgstr "" "E2E fixtures are placed per-case under `test/e2e/testdata/`. Each case " -"directory holds a `tazuna.yaml` alongside the actual content (`kustomize/` / " -"`helmfile/` etc.) corresponding to its `type`." +"directory holds a `tazuna.yaml` alongside the actual content (`kustomize/` /" +" `helmfile/` etc.) corresponding to its `type`." #: src/contributing/testing.md:64 msgid "" @@ -12576,8 +12632,7 @@ msgid "" "├── kustomize-minimal/ # type: kustomize の最小ケース\n" "├── helmfile-minimal/ # type: helmfile の最小ケース\n" "├── dependson-minimal/ # dependsOn による DAG 実行\n" -"├── testplugin-minimal/ # Test plugin (WaitUntil/ExistNonExist) の基" -"本\n" +"├── testplugin-minimal/ # Test plugin (WaitUntil/ExistNonExist) の基本\n" "├── testplugin-cel/ # WaitUntil の CEL 式が複雑なケース\n" "├── tags-filter-minimal/ # --tags フィルタ\n" "├── state-minimal/ # state list/diff、apply --sync\n" @@ -12592,10 +12647,8 @@ msgstr "" "├── kustomize-minimal/ # minimal case for type: kustomize\n" "├── helmfile-minimal/ # minimal case for type: helmfile\n" "├── dependson-minimal/ # DAG execution via dependsOn\n" -"├── testplugin-minimal/ # basic Test plugin (WaitUntil/" -"ExistNonExist)\n" -"├── testplugin-cel/ # case with complex CEL expressions in " -"WaitUntil\n" +"├── testplugin-minimal/ # basic Test plugin (WaitUntil/ExistNonExist)\n" +"├── testplugin-cel/ # case with complex CEL expressions in WaitUntil\n" "├── tags-filter-minimal/ # --tags filter\n" "├── state-minimal/ # state list/diff, apply --sync\n" "├── state-modified/ # \"modified\" judgment in state diff\n" @@ -12606,12 +12659,11 @@ msgstr "" #: src/contributing/testing.md:79 msgid "" -"新しい機能を入れるときは、対応する fixture ディレクトリを追加し、最小構成の " -"`tazuna.yaml` を 1 つ書き、`test/e2e/` 配下に `*_test.go` を追加する流れが一" -"般的です。" +"新しい機能を入れるときは、対応する fixture ディレクトリを追加し、最小構成の `tazuna.yaml` を 1 つ書き、`test/e2e/`" +" 配下に `*_test.go` を追加する流れが一般的です。" msgstr "" -"When adding a new feature, the common flow is to add a corresponding fixture " -"directory with a single minimal `tazuna.yaml`, and add a `*_test.go` under " +"When adding a new feature, the common flow is to add a corresponding fixture" +" directory with a single minimal `tazuna.yaml`, and add a `*_test.go` under " "`test/e2e/`." #: src/contributing/testing.md:82 @@ -12620,37 +12672,34 @@ msgstr "Lint" #: src/contributing/testing.md:88 msgid "" -"`golangci-lint run` を呼ぶだけです。`golangci-lint` のバージョンは " -"`mise.toml` で 管理しているため、`mise install` で揃えれば追加の手当ては不要" -"です。" +"`golangci-lint run` を呼ぶだけです。`golangci-lint` のバージョンは `mise.toml` で " +"管理しているため、`mise install` で揃えれば追加の手当ては不要です。" msgstr "" -"Simply calls `golangci-lint run`. The `golangci-lint` version is managed via " -"`mise.toml`, so running `mise install` is sufficient — no additional steps " +"Simply calls `golangci-lint run`. The `golangci-lint` version is managed via" +" `mise.toml`, so running `mise install` is sufficient — no additional steps " "required." #: src/contributing/testing.md:91 -msgid "" -"CI でも同じ `golangci-lint` が走ります。PR を出す前にローカルで通しておくと往" -"復が減ります。" +msgid "CI でも同じ `golangci-lint` が走ります。PR を出す前にローカルで通しておくと往復が減ります。" msgstr "" "CI also runs the same `golangci-lint`. Running it locally before opening a " "PR reduces back-and-forth." #: src/contributing/documentation.md:3 msgid "" -"このページは、Tazuna のドキュメントサイト(いま読んでいるサイト)に変更を入れ" -"る人向けの案内です。 サイトは `docs/` 配下で完結しており、[mdBook](https://" -"rust-lang.github.io/mdBook/) + [mdbook-i18n-helpers](https://github.com/" -"google/mdbook-i18n-helpers)(gettext / PO ファイル) で構築しています。" +"このページは、Tazuna のドキュメントサイト(いま読んでいるサイト)に変更を入れる人向けの案内です。 サイトは `docs/` " +"配下で完結しており、[mdBook](https://rust-lang.github.io/mdBook/) + " +"[mdbook-i18n-helpers](https://github.com/google/mdbook-i18n-helpers)(gettext" +" / PO ファイル) で構築しています。" msgstr "" -"This page is for people who want to make changes to the Tazuna documentation " -"site (the site you are reading now). The site is self-contained under `docs/" -"`, built with [mdBook](https://rust-lang.github.io/mdBook/) + [mdbook-i18n-" -"helpers](https://github.com/google/mdbook-i18n-helpers) (gettext / PO files)." +"This page is for people who want to make changes to the Tazuna documentation" +" site (the site you are reading now). The site is self-contained under " +"`docs/`, built with [mdBook](https://rust-lang.github.io/mdBook/) + " +"[mdbook-i18n-helpers](https://github.com/google/mdbook-i18n-helpers) " +"(gettext / PO files)." #: src/contributing/documentation.md:8 -msgid "" -"ソースは **日本語** で書き、英語版は `po/en.po` の翻訳で派生させる構成です。" +msgid "ソースは **日本語** で書き、英語版は `po/en.po` の翻訳で派生させる構成です。" msgstr "" "The sources are written in **Japanese**, and the English edition is derived " "via translation in `po/en.po`." @@ -12661,22 +12710,19 @@ msgstr "Directory Layout" #: src/contributing/documentation.md:33 msgid "" -"`docs/src/SUMMARY.md` がページの目次そのものです。新しいページを追加するとき" -"は ここにも 1 行追記する必要があります(追記漏れがあると mdBook はビルドでき" -"ても、 そのページはサイトに出ません)。" +"`docs/src/SUMMARY.md` がページの目次そのものです。新しいページを追加するときは ここにも 1 " +"行追記する必要があります(追記漏れがあると mdBook はビルドできても、 そのページはサイトに出ません)。" msgstr "" "`docs/src/SUMMARY.md` is the table of contents itself. When adding a new " -"page, you also need to add one line here (mdBook builds even if the entry is " -"missing, but the page will not appear on the site)." +"page, you also need to add one line here (mdBook builds even if the entry is" +" missing, but the page will not appear on the site)." #: src/contributing/documentation.md:37 msgid "必要なツール" msgstr "Required Tools" #: src/contributing/documentation.md:44 -msgid "" -"`msgmerge`(gettext 同梱)は PO の更新で使います。macOS なら `brew install " -"gettext`。" +msgid "`msgmerge`(gettext 同梱)は PO の更新で使います。macOS なら `brew install gettext`。" msgstr "" "`msgmerge` (bundled with gettext) is used when updating the PO. On macOS, " "`brew install gettext`." @@ -12706,9 +12752,7 @@ msgid "ローカルでビルド" msgstr "Build Locally" #: src/contributing/documentation.md:73 -msgid "" -"`book/index.html` をブラウザで開けば、リンクで `/ja/` と `/en/` を切り替えら" -"れます。" +msgid "`book/index.html` をブラウザで開けば、リンクで `/ja/` と `/en/` を切り替えられます。" msgstr "" "Open `book/index.html` in your browser to switch between `/ja/` and `/en/` " "via links." @@ -12718,9 +12762,7 @@ msgid "英語訳の更新" msgstr "Updating the English Translation" #: src/contributing/documentation.md:77 -msgid "" -"`docs/src/` 配下の文章を編集したら、PO テンプレートを再生成して `en.po` に " -"merge します。" +msgid "`docs/src/` 配下の文章を編集したら、PO テンプレートを再生成して `en.po` に merge します。" msgstr "" "After editing text under `docs/src/`, regenerate the PO template and merge " "into `en.po`." @@ -12731,13 +12773,13 @@ msgstr "messages.pot" #: src/contributing/documentation.md:86 msgid "" -"このあと `po/en.po` を開いて、追加された `msgid` に対応する `msgstr` を埋めま" -"す。 ソース側(日本語)と英語訳の対応が崩れているとサイト上で空白や欠落が見え" -"るので、 ソース変更と同じ PR で `en.po` も更新するのが基本フローです。" +"このあと `po/en.po` を開いて、追加された `msgid` に対応する `msgstr` を埋めます。 " +"ソース側(日本語)と英語訳の対応が崩れているとサイト上で空白や欠落が見えるので、 ソース変更と同じ PR で `en.po` " +"も更新するのが基本フローです。" msgstr "" "Then open `po/en.po` and fill in `msgstr` for the added `msgid`s. If the " -"correspondence between the source (Japanese) and English translation breaks, " -"blanks or missing items appear on the site, so the basic flow is to update " +"correspondence between the source (Japanese) and English translation breaks," +" blanks or missing items appear on the site, so the basic flow is to update " "`en.po` in the same PR as the source change." #: src/contributing/documentation.md:90 @@ -12750,17 +12792,16 @@ msgstr "`.github/workflows/docs.yaml` handles publishing." #: src/contributing/documentation.md:94 msgid "" -"`main` への push: サイトをビルドし、GitHub Pages へ公開する (`actions/" -"upload-pages-artifact` + `actions/deploy-pages`)" +"`main` への push: サイトをビルドし、GitHub Pages へ公開する (`actions/upload-pages-artifact`" +" + `actions/deploy-pages`)" msgstr "" "Push to `main`: build the site and publish to GitHub Pages (`actions/upload-" "pages-artifact` + `actions/deploy-pages`)." #: src/contributing/documentation.md:96 msgid "" -"PR: ビルドのみ。生成物は `github-pages` という名前で workflow run の " -"artifact として ダウンロードできます。ローカルで展開して目で見るのが推奨レ" -"ビュー手順です。" +"PR: ビルドのみ。生成物は `github-pages` という名前で workflow run の artifact として " +"ダウンロードできます。ローカルで展開して目で見るのが推奨レビュー手順です。" msgstr "" "PR: build only. The output can be downloaded as a workflow-run artifact " "named `github-pages`. The recommended review process is to extract it " @@ -12768,8 +12809,8 @@ msgstr "" #: src/contributing/documentation.md:99 msgid "" -"GitHub Pages は 1 サイトにつき 1 デプロイメントしか持てないため、PR ごとの " -"live プレビュー URL は意図的に提供していません。" +"GitHub Pages は 1 サイトにつき 1 デプロイメントしか持てないため、PR ごとの live プレビュー URL " +"は意図的に提供していません。" msgstr "" "Since GitHub Pages allows only one deployment per site, per-PR live preview " "URLs are intentionally not provided." @@ -12780,56 +12821,53 @@ msgstr "Third-party Assets" #: src/contributing/documentation.md:104 msgid "" -"サイトは Google Fonts の [M PLUS U](https://fonts.google.com/specimen/" -"M+PLUS+U) を ランタイムでロードしています。フォント / アイコン / 画像など新し" -"い外部資産を入れる場合は、 [`docs/THIRDPARTY.md`](https://github.com/pepabo/" -"tazuna/blob/main/docs/THIRDPARTY.md) にライセンスと帰属を追記します。" +"サイトは Google Fonts の [M PLUS U](https://fonts.google.com/specimen/M+PLUS+U) を" +" ランタイムでロードしています。フォント / アイコン / 画像など新しい外部資産を入れる場合は、 " +"[`docs/THIRDPARTY.md`](https://github.com/pepabo/tazuna/blob/main/docs/THIRDPARTY.md)" +" にライセンスと帰属を追記します。" msgstr "" "The site loads [M PLUS U](https://fonts.google.com/specimen/M+PLUS+U) from " "Google Fonts at runtime. When adding new external assets such as fonts / " -"icons / images, add license and attribution to [`docs/THIRDPARTY.md`]" -"(https://github.com/pepabo/tazuna/blob/main/docs/THIRDPARTY.md)." +"icons / images, add license and attribution to " +"[`docs/THIRDPARTY.md`](https://github.com/pepabo/tazuna/blob/main/docs/THIRDPARTY.md)." #: src/contributing/documentation.md:109 msgid "ドキュメント側の規約" msgstr "Documentation-side Conventions" #: src/contributing/documentation.md:111 -msgid "" -"ここまでに書いた既存ページが従っている規約を、参考として残しておきます。" +msgid "ここまでに書いた既存ページが従っている規約を、参考として残しておきます。" msgstr "" "The conventions that existing pages follow are noted here for reference." #: src/contributing/documentation.md:113 msgid "" -"**トーンの使い分け**: 概念は散文中心([concepts/](../concepts/index.md))、ガ" -"イドは「目的→前提→手順」、 リファレンスはフィールド表とコード断片中心。" +"**トーンの使い分け**: 概念は散文中心([concepts/](../concepts/index.md))、ガイドは「目的→前提→手順」、 " +"リファレンスはフィールド表とコード断片中心。" msgstr "" -"**Tonal split**: concepts are mostly prose ([concepts/](../concepts/" -"index.md)), guides are \"purpose → prerequisites → procedure,\" reference is " -"field tables and code fragments." +"**Tonal split**: concepts are mostly prose " +"([concepts/](../concepts/index.md)), guides are \"purpose → prerequisites → " +"procedure,\" reference is field tables and code fragments." #: src/contributing/documentation.md:116 msgid "" -"**アンカーリンク**: glossary や他リファレンスへの導線は `#anchor` まで含めて" -"貼る。 例: `[Manifest type](../concepts/glossary.md#manifest-type)`。" +"**アンカーリンク**: glossary や他リファレンスへの導線は `#anchor` まで含めて貼る。 例: `[Manifest " +"type](../concepts/glossary.md#manifest-type)`。" msgstr "" "**Anchor links**: links into glossary or other references include the " -"`#anchor`. Example: `[Manifest type](../concepts/glossary.md#manifest-type)`." +"`#anchor`. Example: `[Manifest type](../concepts/glossary.md#manifest-" +"type)`." #: src/contributing/documentation.md:119 -msgid "" -"**コードと識別子**: `tazuna.yaml` のフィールド名、CLI フラグ、Go の型名はバッ" -"ククォートで囲む。" +msgid "**コードと識別子**: `tazuna.yaml` のフィールド名、CLI フラグ、Go の型名はバッククォートで囲む。" msgstr "" "**Code and identifiers**: `tazuna.yaml` field names, CLI flags, and Go type " "names are wrapped in backticks." #: src/contributing/documentation.md:121 msgid "" -"**言語ポリシー**: ソースは日本語で書く。コード中のコメントは日本語で書いてよ" -"いが、 ログ・エラーメッセージ・CLI 出力は英語に統一する(プロジェクト全体の方" -"針)。" +"**言語ポリシー**: ソースは日本語で書く。コード中のコメントは日本語で書いてよいが、 ログ・エラーメッセージ・CLI " +"出力は英語に統一する(プロジェクト全体の方針)。" msgstr "" "**Language policy**: sources are written in Japanese. Comments in code can " "be Japanese, but logs / error messages / CLI output are consistently in " @@ -12837,21 +12875,18 @@ msgstr "" #: src/contributing/releases.md:3 msgid "" -"Tazuna のリリースは **タグ push をトリガに GitHub Actions が goreleaser を回" -"す** という構成です。リリースを切るときに手元から `goreleaser` を直接呼ぶ場面" -"は通常ありません。" +"Tazuna のリリースは **タグ push をトリガに GitHub Actions が goreleaser を回す** " +"という構成です。リリースを切るときに手元から `goreleaser` を直接呼ぶ場面は通常ありません。" msgstr "" -"Tazuna releases use the setup of **tag push triggering goreleaser via GitHub " -"Actions**. You normally do not invoke `goreleaser` directly from your " +"Tazuna releases use the setup of **tag push triggering goreleaser via GitHub" +" Actions**. You normally do not invoke `goreleaser` directly from your " "machine when cutting a release." #: src/contributing/releases.md:6 -msgid "" -"ここでは「リリースが切られたときに何が起きるか」「バージョン文字列の供給元」 " -"「成果物の検証手段」をまとめます。" +msgid "ここでは「リリースが切られたときに何が起きるか」「バージョン文字列の供給元」 「成果物の検証手段」をまとめます。" msgstr "" -"This page summarizes \"what happens when a release is cut,\" \"where version " -"strings come from,\" and \"how to verify the artifacts.\"" +"This page summarizes \"what happens when a release is cut,\" \"where version" +" strings come from,\" and \"how to verify the artifacts.\"" #: src/contributing/releases.md:9 msgid "トリガと出力" @@ -12859,11 +12894,11 @@ msgstr "Trigger and Output" #: src/contributing/releases.md:11 msgid "" -"ワークフロー: [`.github/workflows/release.yaml`](https://github.com/pepabo/" -"tazuna/blob/main/.github/workflows/release.yaml)" +"ワークフロー: " +"[`.github/workflows/release.yaml`](https://github.com/pepabo/tazuna/blob/main/.github/workflows/release.yaml)" msgstr "" -"Workflow: [`.github/workflows/release.yaml`](https://github.com/pepabo/" -"tazuna/blob/main/.github/workflows/release.yaml)" +"Workflow: " +"[`.github/workflows/release.yaml`](https://github.com/pepabo/tazuna/blob/main/.github/workflows/release.yaml)" #: src/contributing/releases.md:12 msgid "起動条件: `push: tags: [\"*\"]`(任意のタグ push)" @@ -12876,9 +12911,8 @@ msgstr "" #: src/contributing/releases.md:15 msgid "" -"タグ名はそのまま `version` 文字列として埋め込まれます。 セマンティックバー" -"ジョニング(`vX.Y.Z`)に従うことを推奨します([changelog の自動生成]" -"(#changelog) も参照)。" +"タグ名はそのまま `version` 文字列として埋め込まれます。 " +"セマンティックバージョニング(`vX.Y.Z`)に従うことを推奨します([changelog の自動生成](#changelog) も参照)。" msgstr "" "The tag name is embedded as the `version` string as-is. We recommend " "following semantic versioning (`vX.Y.Z`) (see also [Changelog auto-" @@ -12890,11 +12924,12 @@ msgstr "Outputs" #: src/contributing/releases.md:20 msgid "" -"[`.goreleaser.yaml`](https://github.com/pepabo/tazuna/blob/" -"main/.goreleaser.yaml) の ビルド対象は次のとおりです。" +"[`.goreleaser.yaml`](https://github.com/pepabo/tazuna/blob/main/.goreleaser.yaml)" +" の ビルド対象は次のとおりです。" msgstr "" -"Build targets in [`.goreleaser.yaml`](https://github.com/pepabo/tazuna/blob/" -"main/.goreleaser.yaml) are as follows." +"Build targets in " +"[`.goreleaser.yaml`](https://github.com/pepabo/tazuna/blob/main/.goreleaser.yaml)" +" are as follows." #: src/contributing/releases.md:23 msgid "軸" @@ -12934,8 +12969,8 @@ msgstr "`-s -w -trimpath` + version embedding" #: src/contributing/releases.md:30 msgid "" -"成果物のアーカイブ名は `tazuna__.tar.gz`(`amd64` は `x86_64` に正" -"規化)で、 リリースには次のものが添付されます。" +"成果物のアーカイブ名は `tazuna__.tar.gz`(`amd64` は `x86_64` に正規化)で、 " +"リリースには次のものが添付されます。" msgstr "" "The archive name is `tazuna__.tar.gz` (with `amd64` normalized to " "`x86_64`), and the release includes:" @@ -12958,22 +12993,21 @@ msgstr "`checksums.txt.sigstore.json` (cosign keyless signing bundle)" #: src/contributing/releases.md:38 msgid "" -"GitHub Actions の [`actions/attest-build-provenance`](https://github.com/" -"actions/attest-build-provenance) が SLSA build provenance を別途生成し、`gh " -"attestation verify` で検証できる形に 紐付けます。" +"GitHub Actions の [`actions/attest-build-" +"provenance`](https://github.com/actions/attest-build-provenance) が SLSA " +"build provenance を別途生成し、`gh attestation verify` で検証できる形に 紐付けます。" msgstr "" -"GitHub Actions' [`actions/attest-build-provenance`](https://github.com/" -"actions/attest-build-provenance) separately generates SLSA build provenance, " -"and links it in a form verifiable with `gh attestation verify`." +"GitHub Actions' [`actions/attest-build-" +"provenance`](https://github.com/actions/attest-build-provenance) separately " +"generates SLSA build provenance, and links it in a form verifiable with `gh " +"attestation verify`." #: src/contributing/releases.md:42 msgid "バージョン文字列の埋め込み" msgstr "Version String Embedding" #: src/contributing/releases.md:44 -msgid "" -"`main.go` には次の var が宣言されていて、リリースビルド時に `-X` で値が注入さ" -"れます。" +msgid "`main.go` には次の var が宣言されていて、リリースビルド時に `-X` で値が注入されます。" msgstr "" "`main.go` declares the following `var`s, which are injected with `-X` at " "release-build time." @@ -12996,29 +13030,27 @@ msgstr "In `.goreleaser.yaml`'s `ldflags`:" #: src/contributing/releases.md:60 msgid "" -"注入された値は `cmd.SetVersionInfo` 経由で [`tazuna version`](../reference/" -"cli/version.md) に表示されます。" +"注入された値は `cmd.SetVersionInfo` 経由で [`tazuna " +"version`](../reference/cli/version.md) に表示されます。" msgstr "" -"The injected values flow through `cmd.SetVersionInfo` and appear in [`tazuna " -"version`](../reference/cli/version.md)." +"The injected values flow through `cmd.SetVersionInfo` and appear in [`tazuna" +" version`](../reference/cli/version.md)." #: src/contributing/releases.md:63 msgid "" -"`go install` / `make build` などローカルビルドの場合は注入されないため、 " -"`version` / `commit` / `date` はそのまま `dev` / `none` / `unknown` になりま" -"す。" +"`go install` / `make build` などローカルビルドの場合は注入されないため、 `version` / `commit` / " +"`date` はそのまま `dev` / `none` / `unknown` になります。" msgstr "" "For local builds via `go install` / `make build` and similar, nothing is " -"injected, so `version` / `commit` / `date` remain `dev` / `none` / `unknown`." +"injected, so `version` / `commit` / `date` remain `dev` / `none` / " +"`unknown`." #: src/contributing/releases.md:66 msgid "changelog" msgstr "Changelog" #: src/contributing/releases.md:68 -msgid "" -"`.goreleaser.yaml` の `changelog` セクションが GitHub Releases の説明文を組み" -"立てます。" +msgid "`.goreleaser.yaml` の `changelog` セクションが GitHub Releases の説明文を組み立てます。" msgstr "" "The `changelog` section of `.goreleaser.yaml` assembles the GitHub Releases " "description." @@ -13032,19 +13064,15 @@ msgid "除外: `^docs:` / `^test:` プレフィックスの commit" msgstr "Exclusions: commits with `^docs:` / `^test:` prefixes" #: src/contributing/releases.md:72 -msgid "" -"フォーマット: ヘッダ `## Tazuna {{.Version}}` と、フッタに前リリースとの " -"compare リンク" +msgid "フォーマット: ヘッダ `## Tazuna {{.Version}}` と、フッタに前リリースとの compare リンク" msgstr "" -"Format: header `## Tazuna {{.Version}}`, with a compare link to the previous " -"release in the footer" +"Format: header `## Tazuna {{.Version}}`, with a compare link to the previous" +" release in the footer" #: src/contributing/releases.md:74 msgid "" -"PR のタイトル / commit メッセージ規約は CONTRIBUTING.md / PR テンプレートが基" -"準です。 **`docs:` / `test:` プレフィックスはリリースノートに出ない** ので、" -"プロダクトの動作変更 ではない PR にはこれらを付けると棚卸しがしやすくなりま" -"す。" +"PR のタイトル / commit メッセージ規約は CONTRIBUTING.md / PR テンプレートが基準です。 **`docs:` / " +"`test:` プレフィックスはリリースノートに出ない** ので、プロダクトの動作変更 ではない PR にはこれらを付けると棚卸しがしやすくなります。" msgstr "" "PR title / commit message conventions follow CONTRIBUTING.md / the PR " "template. **`docs:` / `test:` prefixes do not appear in release notes**, so " @@ -13069,8 +13097,7 @@ msgstr "# 2. Verify checksums.txt signature (cosign keyless)\n" #: src/contributing/releases.md:95 msgid "" -"3 つ目は GitHub CLI 経由で SLSA build provenance を確認する手段です。 リリー" -"ス直後でも内部 CI でも使えます。" +"3 つ目は GitHub CLI 経由で SLSA build provenance を確認する手段です。 リリース直後でも内部 CI でも使えます。" msgstr "" "The third is to confirm SLSA build provenance via the GitHub CLI. Usable " "right after release and from internal CI as well." @@ -13097,38 +13124,36 @@ msgstr "If needed, hand-curate the auto-generated changelog." #: src/contributing/releases.md:105 msgid "" -"ドキュメントサイトの公開は別ワークフロー([`docs.yaml`](https://github.com/" -"pepabo/tazuna/blob/main/.github/workflows/docs.yaml)) で、こちらは `main` へ" -"の push をトリガに動きます。リリース切りとは独立しています。" +"ドキュメントサイトの公開は別ワークフロー([`docs.yaml`](https://github.com/pepabo/tazuna/blob/main/.github/workflows/docs.yaml))" +" で、こちらは `main` への push をトリガに動きます。リリース切りとは独立しています。" msgstr "" -"The documentation site is published by a separate workflow ([`docs.yaml`]" -"(https://github.com/pepabo/tazuna/blob/main/.github/workflows/docs.yaml)), " -"triggered by pushes to `main`. It is independent of release cutting." +"The documentation site is published by a separate workflow " +"([`docs.yaml`](https://github.com/pepabo/tazuna/blob/main/.github/workflows/docs.yaml))," +" triggered by pushes to `main`. It is independent of release cutting." -#~ msgid "" -#~ "次に、Tazuna に対する「唯一の入力ファイル」である `tazuna.yaml` を書きま" -#~ "す。" +#~ msgid "helmfile template の出力 YAML を標準出力に書く。" +#~ msgstr "Write the helmfile template output YAML to stdout." + +#~ msgid "次に、Tazuna に対する「唯一の入力ファイル」である `tazuna.yaml` を書きます。" #~ msgstr "Next, write `tazuna.yaml` — \"the only input file\" for Tazuna." #~ msgid "`type: parallel`" #~ msgstr "`type: parallel`" #~ msgid "" -#~ "`GenesisSecret` および helmfile の `vars.op` から参照される、 「シークレッ" -#~ "トの取得元」を抽象化したコンポーネントです。 現状は 1Password 向けの実装が" -#~ "組み込まれています。" +#~ "`GenesisSecret` および helmfile の `vars.op` から参照される、 " +#~ "「シークレットの取得元」を抽象化したコンポーネントです。 現状は 1Password 向けの実装が組み込まれています。" #~ msgstr "" #~ "A component that abstracts the \"source of secret values\" referenced by " #~ "`GenesisSecret` and helmfile's `vars.op`. Currently, a 1Password " #~ "implementation is bundled." #~ msgid "" -#~ "GenesisSecret が秘匿情報を取り出す元を抽象化したインターフェース。 現状は " -#~ "1Password (`op`) 向けの実装が組み込まれている。" +#~ "GenesisSecret が秘匿情報を取り出す元を抽象化したインターフェース。 現状は 1Password (`op`) " +#~ "向けの実装が組み込まれている。" #~ msgstr "" #~ "The interface that abstracts the source from which `GenesisSecret` pulls " -#~ "secret values. Currently, an implementation for 1Password (`op`) is " -#~ "bundled." +#~ "secret values. Currently, an implementation for 1Password (`op`) is bundled." #~ msgid "`apply` か `state sync` か" #~ msgstr "`apply` or `state sync`" @@ -13147,60 +13172,54 @@ msgstr "" #~ msgid "[ManifestParallel](#manifest-type-別フィールド)" #~ msgstr "[ManifestParallel](#manifest-type-別フィールド)" -#~ msgid "" -#~ "`type: parallel` のときに参照されるオプション。`children[]` に Manifest を" -#~ "入れ子で書く。" +#~ msgid "`type: parallel` のときに参照されるオプション。`children[]` に Manifest を入れ子で書く。" #~ msgstr "" #~ "Options referenced when `type: parallel`. Write nested Manifests under " #~ "`children[]`." -#~ msgid "" -#~ "実体としては使用されません。`children[]` 側の `path` が使われます。バリ" -#~ "デーション都合で空にはできません。" +#~ msgid "実体としては使用されません。`children[]` 側の `path` が使われます。バリデーション都合で空にはできません。" #~ msgstr "" #~ "Not used in practice. The `path` from `children[]` is used. It cannot be " #~ "empty due to validation." #~ msgid "" -#~ "[`type: parallel`](./manifest-types/parallel.md) 向けオプション。" -#~ "`children[]` に Manifest を入れる。" +#~ "[`type: parallel`](./manifest-types/parallel.md) 向けオプション。`children[]` に " +#~ "Manifest を入れる。" #~ msgstr "" #~ "Options for [`type: parallel`](./manifest-types/parallel.md). Has " #~ "`children[]`." #~ msgid "" -#~ "`type: parallel` の場合: `parallel.children[]` が空でなく、各 child も妥当" -#~ "な Manifest であること。" +#~ "`type: parallel` の場合: `parallel.children[]` が空でなく、各 child も妥当な Manifest " +#~ "であること。" #~ msgstr "" -#~ "For `type: parallel`: `parallel.children[]` must be non-empty and each " -#~ "child must be a valid Manifest." +#~ "For `type: parallel`: `parallel.children[]` must be non-empty and each child" +#~ " must be a valid Manifest." #~ msgid "" -#~ "取得元 Provider の指定。**現バージョンの Manager は値を参照していません。" -#~ "** Provider は Tazuna 全体で 1 つ(1Password 向け実装)が組み込まれてい" -#~ "て、`tazuna apply` の起動時に決定されます。" +#~ "取得元 Provider の指定。**現バージョンの Manager は値を参照していません。** Provider は Tazuna 全体で 1 " +#~ "つ(1Password 向け実装)が組み込まれていて、`tazuna apply` の起動時に決定されます。" #~ msgstr "" #~ "Specifies the Provider to retrieve from. **The current Manager does not " -#~ "reference the value.** The Provider for the entire Tazuna run (the " -#~ "1Password implementation) is determined at `tazuna apply` startup." +#~ "reference the value.** The Provider for the entire Tazuna run (the 1Password" +#~ " implementation) is determined at `tazuna apply` startup." #~ msgid "" -#~ "スキーマ上は存在しますが **現バージョンでは未対応** です。" -#~ "`kubernetesSecret` が `null` の場合は実行時にエラーになります。" +#~ "スキーマ上は存在しますが **現バージョンでは未対応** です。`kubernetesSecret` が `null` " +#~ "の場合は実行時にエラーになります。" #~ msgstr "" #~ "Defined in the schema but **not supported in the current version**. If " #~ "`kubernetesSecret` is `null`, a runtime error is raised." #~ msgid "" -#~ "(※) 現バージョンでは `outputs[]` の各要素は **`kubernetesSecret` を必須** " -#~ "とします。 構造体上は `stdout` も存在しますが、`kubernetesSecret == nil` " -#~ "だと `.spec.output currently supports only KubernetesSecret` というエラー" -#~ "で失敗します。" +#~ "(※) 現バージョンでは `outputs[]` の各要素は **`kubernetesSecret` を必須** とします。 構造体上は " +#~ "`stdout` も存在しますが、`kubernetesSecret == nil` だと `.spec.output currently " +#~ "supports only KubernetesSecret` というエラーで失敗します。" #~ msgstr "" #~ "(*) In the current version, each element of `outputs[]` **requires " #~ "`kubernetesSecret`**. While `stdout` exists structurally, if " -#~ "`kubernetesSecret == nil`, it fails with the error `.spec.output " -#~ "currently supports only KubernetesSecret`." +#~ "`kubernetesSecret == nil`, it fails with the error `.spec.output currently " +#~ "supports only KubernetesSecret`." #~ msgid "[`parallel`](./parallel.md) — 子 Manifest を並列に処理する" #~ msgstr "[`parallel`](./parallel.md) — process child Manifests in parallel" @@ -13209,23 +13228,20 @@ msgstr "" #~ msgstr "[ManifestParallel](./parallel.md#固有フィールド)" #~ msgid "" -#~ "`parallel` Manifest は、複数の子 Manifest を **並列に処理する** ためのコン" -#~ "テナです。 子の `type` は `kustomize` / `helmfile` / `genesissecret` / " -#~ "`oras` のいずれか (`parallel` のネストは想定していません)。" +#~ "`parallel` Manifest は、複数の子 Manifest を **並列に処理する** ためのコンテナです。 子の `type` は " +#~ "`kustomize` / `helmfile` / `genesissecret` / `oras` のいずれか (`parallel` " +#~ "のネストは想定していません)。" #~ msgstr "" #~ "A `parallel` Manifest is a container that **processes multiple child " -#~ "Manifests in parallel**. The child `type` is one of `kustomize` / " -#~ "`helmfile` / `genesissecret` / `oras` (nesting `parallel` is not " -#~ "intended)." +#~ "Manifests in parallel**. The child `type` is one of `kustomize` / `helmfile`" +#~ " / `genesissecret` / `oras` (nesting `parallel` is not intended)." #~ msgid "" -#~ "`parallel` Manifest 自体の `manifests[].path` は **実体としては使用されま" -#~ "せん**。 バリデーション都合で空にはできないため、何かしらのディレクトリを" -#~ "書きます。" +#~ "`parallel` Manifest 自体の `manifests[].path` は **実体としては使用されません**。 " +#~ "バリデーション都合で空にはできないため、何かしらのディレクトリを書きます。" #~ msgstr "" -#~ "A `parallel` Manifest's own `manifests[].path` is **not used in " -#~ "practice**. Since validation does not allow it to be empty, write any " -#~ "directory." +#~ "A `parallel` Manifest's own `manifests[].path` is **not used in practice**. " +#~ "Since validation does not allow it to be empty, write any directory." #~ msgid "実際の処理対象パスは、各 `children[].path` 側で指定します。" #~ msgstr "The actual processed path is specified per `children[].path`." @@ -13245,53 +13261,48 @@ msgstr "" #~ "required." #~ msgid "" -#~ "`children[]` の各要素は [Manifest](../tazuna-yaml.md#manifest) と同じ構造" -#~ "です。 `children[]` 内の Manifest が持つ `name` も、include 展開後の全 " -#~ "Manifest 名と同じ空間で 一意でなければなりません(`tazuna check` で検証さ" -#~ "れます)。" +#~ "`children[]` の各要素は [Manifest](../tazuna-yaml.md#manifest) と同じ構造です。 " +#~ "`children[]` 内の Manifest が持つ `name` も、include 展開後の全 Manifest 名と同じ空間で " +#~ "一意でなければなりません(`tazuna check` で検証されます)。" #~ msgstr "" -#~ "Each element of `children[]` has the same structure as [Manifest](../" -#~ "tazuna-yaml.md#manifest). The `name`s of Manifests inside `children[]` " -#~ "must also be unique within the same space as all Manifest names after " -#~ "include expansion (verified at `tazuna check`)." +#~ "Each element of `children[]` has the same structure as [Manifest](../tazuna-" +#~ "yaml.md#manifest). The `name`s of Manifests inside `children[]` must also be" +#~ " unique within the same space as all Manifest names after include expansion " +#~ "(verified at `tazuna check`)." #~ msgid "" -#~ "`children[]` の各要素に対応する Manager の `Apply` を **goroutine で並列" -#~ "** に呼ぶ。エラーは集約して返す。" +#~ "`children[]` の各要素に対応する Manager の `Apply` を **goroutine で並列** に呼ぶ。エラーは集約して返す。" #~ msgstr "" -#~ "Call the corresponding Manager's `Apply` for each element of `children[]` " -#~ "in **goroutines in parallel**. Errors are aggregated and returned." +#~ "Call the corresponding Manager's `Apply` for each element of `children[]` in" +#~ " **goroutines in parallel**. Errors are aggregated and returned." #~ msgid "`children[]` の各要素に対応する Manager の `Destroy` を並列に呼ぶ。" #~ msgstr "" -#~ "Call the corresponding Manager's `Destroy` for each element of " -#~ "`children[]` in parallel." +#~ "Call the corresponding Manager's `Destroy` for each element of `children[]` " +#~ "in parallel." #~ msgid "" -#~ "`children[]` の各要素に対応する Manager の `Build` を並列に呼び、宣言順を" -#~ "保ったまま `\\n---\\n` で結合した文字列を返す。空文字の出力はスキップ。" +#~ "`children[]` の各要素に対応する Manager の `Build` を並列に呼び、宣言順を保ったまま `\\n---\\n` " +#~ "で結合した文字列を返す。空文字の出力はスキップ。" #~ msgstr "" -#~ "Call the corresponding Manager's `Build` for each element of `children[]` " -#~ "in parallel, and return a string joined by `\\n---\\n` while preserving " +#~ "Call the corresponding Manager's `Build` for each element of `children[]` in" +#~ " parallel, and return a string joined by `\\n---\\n` while preserving " #~ "declaration order. Empty outputs are skipped." #~ msgid "" -#~ "`children[]` の処理順序は保証されません。並列で動かして問題ないグループに" -#~ "だけ使ってください。 順序依存(A の CRD を待ってから B を入れる、など)が" -#~ "ある場合は、`parallel` を使わず 通常の `manifests[]` の宣言順に並べるか、" -#~ "子 Manifest 側の [Test plugin](../test-plugin.md) で Ready 待ちを表現しま" -#~ "す。" +#~ "`children[]` の処理順序は保証されません。並列で動かして問題ないグループにだけ使ってください。 順序依存(A の CRD を待ってから B " +#~ "を入れる、など)がある場合は、`parallel` を使わず 通常の `manifests[]` の宣言順に並べるか、子 Manifest 側の " +#~ "[Test plugin](../test-plugin.md) で Ready 待ちを表現します。" #~ msgstr "" #~ "The processing order of `children[]` is not guaranteed. Use it only for " -#~ "groups safe to run in parallel. For ordering dependencies (waiting for " -#~ "A's CRD before installing B, etc.), instead of `parallel`, line them up " -#~ "in declaration order under normal `manifests[]`, or use the child " -#~ "Manifest's [Test plugin](../test-plugin.md) to express Ready waits." +#~ "groups safe to run in parallel. For ordering dependencies (waiting for A's " +#~ "CRD before installing B, etc.), instead of `parallel`, line them up in " +#~ "declaration order under normal `manifests[]`, or use the child Manifest's " +#~ "[Test plugin](../test-plugin.md) to express Ready waits." #~ msgid "並列に入れて構わない 2 つの kustomize を 1 つの parallel に束ねる例:" #~ msgstr "" -#~ "Example of bundling two parallel-safe kustomize Manifests into one " -#~ "parallel:" +#~ "Example of bundling two parallel-safe kustomize Manifests into one parallel:" #~ msgid "observability" #~ msgstr "observability" @@ -13332,45 +13343,41 @@ msgstr "" #~ msgid "[`tazuna state sync`](./state-sync.md) — 差分を State 主導で反映する" #~ msgstr "" -#~ "[`tazuna state sync`](./state-sync.md) — reflect the differences State-" -#~ "first" +#~ "[`tazuna state sync`](./state-sync.md) — reflect the differences State-first" #~ msgid "`state sync`" #~ msgstr "`state sync`" #~ msgid "" -#~ "これが `true` のときだけ、State には残っていてクラスタには無くなったリソー" -#~ "ス(removed)を削除します。デフォルトは削除をスキップします。" +#~ "これが `true` のときだけ、State " +#~ "には残っていてクラスタには無くなったリソース(removed)を削除します。デフォルトは削除をスキップします。" #~ msgstr "" -#~ "Only when this is `true`, resources that remain in State but no longer " -#~ "exist in the cluster (removed) are deleted. The default is to skip " -#~ "deletion." +#~ "Only when this is `true`, resources that remain in State but no longer exist" +#~ " in the cluster (removed) are deleted. The default is to skip deletion." #~ msgid "`manifests[]` を **宣言順** に走査する。" #~ msgstr "Walk `manifests[]` in **declaration order**." #~ msgid "" -#~ "各 Manager の Build 結果と State を比較し、追加・変更されたリソースだけを " -#~ "クラスタへ反映します。同期に成功したリソースの State は ConfigMap に書き戻" -#~ "されます。" +#~ "各 Manager の Build 結果と State を比較し、追加・変更されたリソースだけを クラスタへ反映します。同期に成功したリソースの " +#~ "State は ConfigMap に書き戻されます。" #~ msgstr "" -#~ "Compares the Build result of each Manager with State, and reflects only " -#~ "the added or modified resources into the cluster. The State of " -#~ "successfully synchronized resources is written back to the ConfigMap." +#~ "Compares the Build result of each Manager with State, and reflects only the " +#~ "added or modified resources into the cluster. The State of successfully " +#~ "synchronized resources is written back to the ConfigMap." #~ msgid "各 Manifest について Build を呼び出し、State との差分を計算する。" #~ msgstr "" #~ "For each Manifest, call Build and compute the difference against State." -#~ msgid "" -#~ "`added` / `modified` / `always-sync` 分類のリソースをクラスタへ反映する。" +#~ msgid "`added` / `modified` / `always-sync` 分類のリソースをクラスタへ反映する。" #~ msgstr "" #~ "Reflect resources classified as `added` / `modified` / `always-sync` into " #~ "the cluster." #~ msgid "" -#~ "`removed` 分類のリソースは **デフォルトではスキップ** される。 " -#~ "`TAZUNA_STATE_SYNC_DELETE=true` を設定したときに限り、削除を行う。" +#~ "`removed` 分類のリソースは **デフォルトではスキップ** される。 `TAZUNA_STATE_SYNC_DELETE=true` " +#~ "を設定したときに限り、削除を行う。" #~ msgstr "" #~ "Resources classified as `removed` are **skipped by default**. They are " #~ "deleted only when `TAZUNA_STATE_SYNC_DELETE=true` is set." @@ -13379,27 +13386,24 @@ msgstr "" #~ msgstr "Write back the State of successfully synchronized resources." #~ msgid "" -#~ "`--atomic` を指定した場合、いずれかのリソースでエラーが発生したときは " -#~ "State をまったく更新せずに終了します(途中まで進んだ反映自体は巻き戻りませ" -#~ "ん)。" +#~ "`--atomic` を指定した場合、いずれかのリソースでエラーが発生したときは State " +#~ "をまったく更新せずに終了します(途中まで進んだ反映自体は巻き戻りません)。" #~ msgstr "" -#~ "When `--atomic` is specified, if any resource errors out, the command " -#~ "exits without updating State at all (the in-progress apply itself is not " -#~ "rolled back)." +#~ "When `--atomic` is specified, if any resource errors out, the command exits " +#~ "without updating State at all (the in-progress apply itself is not rolled " +#~ "back)." #~ msgid "エラーが発生したときに State を更新せずに終了します。" #~ msgstr "If an error occurs, exit without updating State." -#~ msgid "" -#~ "`removed` 分類のリソースを削除します。設定されていない場合は削除を行いませ" -#~ "ん。" +#~ msgid "`removed` 分類のリソースを削除します。設定されていない場合は削除を行いません。" #~ msgstr "" #~ "Delete resources classified as `removed`. When not set, deletion does not " #~ "happen." #~ msgid "" -#~ "用語: [Diff type](../../concepts/glossary.md#diff-type) / [always-sync]" -#~ "(../../concepts/glossary.md#always-sync)" +#~ "用語: [Diff type](../../concepts/glossary.md#diff-type) / [always-" +#~ "sync](../../concepts/glossary.md#always-sync)" #~ msgstr "" #~ "Terminology: [Diff type](../../concepts/glossary.md#diff-type) / [always-" #~ "sync](../../concepts/glossary.md#always-sync)" @@ -13407,27 +13411,25 @@ msgstr "" #~ msgid "`tazuna apply` 全体のオーケストレーション。" #~ msgstr "Orchestration for the whole of `tazuna apply`." -#~ msgid "" -#~ "Tazuna は、マルチクラスタ Kubernetes 環境のブートストラップライフサイクル" -#~ "を管理するための CLI ツールです。" +#~ msgid "Tazuna は、マルチクラスタ Kubernetes 環境のブートストラップライフサイクルを管理するための CLI ツールです。" #~ msgstr "" -#~ "Tazuna is a CLI tool for managing the bootstrap lifecycle of multi-" -#~ "cluster Kubernetes environments." +#~ "Tazuna is a CLI tool for managing the bootstrap lifecycle of multi-cluster " +#~ "Kubernetes environments." #~ msgid "" -#~ "GenesisSecret 由来 Secret のように、差分計算をスキップして毎回同期する扱い" -#~ "の Diff type。 ContentHash で変化を判定できない / させない対象に使う。" +#~ "GenesisSecret 由来 Secret のように、差分計算をスキップして毎回同期する扱いの Diff type。 ContentHash " +#~ "で変化を判定できない / させない対象に使う。" #~ msgstr "" #~ "A Diff type for entries that skip diff computation and are synchronized " -#~ "every time, such as Secrets derived from `GenesisSecret`. Used for " -#~ "targets where changes cannot or should not be judged by `ContentHash`." +#~ "every time, such as Secrets derived from `GenesisSecret`. Used for targets " +#~ "where changes cannot or should not be judged by `ContentHash`." #~ msgid "" -#~ "`--force` が無ければ、`!!! All resources managed by Tazuna will be " -#~ "deleted !!!` というプロンプトを出して Y/N の確認を取る。" +#~ "`--force` が無ければ、`!!! All resources managed by Tazuna will be deleted !!!` " +#~ "というプロンプトを出して Y/N の確認を取る。" #~ msgstr "" -#~ "Without `--force`, displays the prompt `!!! All resources managed by " -#~ "Tazuna will be deleted !!!` and asks for Y/N confirmation." +#~ "Without `--force`, displays the prompt `!!! All resources managed by Tazuna " +#~ "will be deleted !!!` and asks for Y/N confirmation." #~ msgid "TODO: はじめかたのコンテンツを追加する。" #~ msgstr "TODO: Add getting started content."