Documentation
¶
Index ¶
- type GenesisSecret
- func (g *GenesisSecret) Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) (objects []client.Object, retErr error)
- func (g *GenesisSecret) Build(ctx context.Context, logger *slog.Logger, m v1.Manifest) (result string, retErr error)
- func (g *GenesisSecret) Destroy(ctx context.Context, logger *slog.Logger, m v1.Manifest) (retErr error)
- func (g *GenesisSecret) WithStdout(w io.Writer) *GenesisSecret
- type Helmfile
- func (h *Helmfile) Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) (objects []client.Object, retErr error)
- func (h *Helmfile) Build(ctx context.Context, logger *slog.Logger, m v1.Manifest) (result string, retErr error)
- func (h *Helmfile) ConstructHelmfileVars(ctx context.Context, m *v1.Manifest) (map[string]any, error)
- func (h *Helmfile) Destroy(ctx context.Context, logger *slog.Logger, m v1.Manifest) (retErr error)
- func (h *Helmfile) WithEnvironment(environment string) *Helmfile
- type Kustomize
- func (k *Kustomize) Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) (objects []client.Object, retErr error)
- func (k *Kustomize) Build(ctx context.Context, logger *slog.Logger, m v1.Manifest) (out string, retErr error)
- func (k *Kustomize) Destroy(ctx context.Context, logger *slog.Logger, m v1.Manifest) (retErr error)
- type Manager
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type GenesisSecret ¶
type GenesisSecret struct {
// contains filtered or unexported fields
}
GenesisSecret managerはGenesisSecretのapplyに関する諸々をやります。 SecretProvider の解決は registry 経由で manifest の .spec.provider を name として動的に lookup します。
func NewGenesisSecret ¶
func NewGenesisSecret( c client.Client, registry *genesissecret.ProviderRegistry, ) *GenesisSecret
NewGenesisSecret は GenesisSecret manager を生成します。 registry には少なくとも組み込みの "default-op" provider が登録されている想定です。 GenesisSecret の .spec.provider が空文字の manifest は "default-op" にフォールバック されることで後方互換性が保たれます。
func (*GenesisSecret) Apply ¶
func (g *GenesisSecret) Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) (objects []client.Object, retErr error)
Apply implements Manager.
戻り値の objects は state hash 計算用に Build() と同一の経路 (outputs[0] の Secret を yaml.Marshal -> ConvertManifestsToObjects) で生成したものを返します。これにより apply 後に Build() を再度呼んで render し直す二重 render を回避しつつ、state diff/sync 側 (Build 経由) とのハッシュ整合性を保ちます。
func (*GenesisSecret) Build ¶
func (g *GenesisSecret) Build(ctx context.Context, logger *slog.Logger, m v1.Manifest) (result string, retErr error)
Build implements Manager.
func (*GenesisSecret) Destroy ¶
func (g *GenesisSecret) Destroy(ctx context.Context, logger *slog.Logger, m v1.Manifest) (retErr error)
Destroy implements Manager.
func (*GenesisSecret) WithStdout ¶ added in v0.2.0
func (g *GenesisSecret) WithStdout(w io.Writer) *GenesisSecret
WithStdout は stdout 出力先を上書きします。テスト用。
type Helmfile ¶
type Helmfile struct {
// contains filtered or unexported fields
}
Helmfile は helmfile (https://github.com/helmfile/helmfile) 形式の "サブセット" 互換 レンダラです。helmfile 本体には依存せず、内部的に helm パッケージ (helm.sh/helm/v3) の in-memory render を用いて manifest を生成します。
設計上の意図 (TASKLIST 参照):
- helmfile.app.Template は結果を os.Stdout に書き出すため、従来は os.Stdout を グローバルに差し替えてキャプチャしていた。これは並列 apply 時にレンダリング結果が 混線するバグの温床だった。helm の action.Install{ClientOnly,DryRun} は結果を Go の値 (release.Manifest) として返すため、os.Stdout 差し替えが一切不要になる。
- helmfile.app は logger 未設定で segv するハックが必要だったが、helm では不要。
インスピレーション元として helmfile をクレジットします。本実装が解釈する helmfile.yaml は以下のサブセットです (差分は docs/src/reference/manifest-types/helmfile.md を参照):
- repositories[].{name,url,username,password,oci}
- releases[].{name,namespace,chart,version,values}
- chart はローカルチャートへの相対パス、oci:// で始まる OCI チャート参照、または <alias>/<chart> 形式のいずれか。<alias>/<chart> 形式は alias が repositories[] に 宣言されていれば、その url (HTTP(S) or OCI) から version の chart を pull する (未宣言ならローカルパス扱い)。OCI は helm registry client 経由で pull する。
- values[] はファイルパス文字列、またはインライン map
- helmfile.yaml 自体の Go テンプレート (.StateValues / .Values) と sprig 関数
func (*Helmfile) Apply ¶
func (h *Helmfile) Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) (objects []client.Object, retErr error)
Apply implements Manager.
func (*Helmfile) Build ¶
func (h *Helmfile) Build(ctx context.Context, logger *slog.Logger, m v1.Manifest) (result string, retErr error)
Build implements Manager.
func (*Helmfile) ConstructHelmfileVars ¶
func (*Helmfile) WithEnvironment ¶ added in v0.4.1
WithEnvironment は -e/--environment フラグの値を設定します。 helmfile.yaml テンプレートの {{ .Environment.Name }} に反映されます。
type Kustomize ¶
type Kustomize struct {
// contains filtered or unexported fields
}
func NewKustomize ¶
func (*Kustomize) Apply ¶
func (k *Kustomize) Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) (objects []client.Object, retErr error)
Apply implements Manager.
type Manager ¶
type Manager interface {
// Apply はマニフェストをレンダリングしてクラスタへ適用し、適用対象となった
// render 済みオブジェクト群を返します。呼び出し側 (runner) はこの戻り値を
// state hash 計算・保存に再利用することで、apply 後の再レンダリング (二重 render)
// を避けられます。
//
// 返すオブジェクトは hash 計算のため *unstructured.Unstructured であり、
// 同一マニフェストに対する Build() の出力を ConvertManifestsToObjects したものと
// 同一になることを各実装が保証します (state diff/sync との整合性のため)。
Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) ([]client.Object, error)
Destroy(ctx context.Context, logger *slog.Logger, m v1.Manifest) error
Build(ctx context.Context, logger *slog.Logger, m v1.Manifest) (string, error)
}