manager

package
v0.4.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2026 License: MIT Imports: 36 Imported by: 0

Documentation

Index

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 NewHelmfile

func NewHelmfile(client client.Client, opClient op.Client) *Helmfile

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 (h *Helmfile) ConstructHelmfileVars(ctx context.Context, m *v1.Manifest) (map[string]any, error)

func (*Helmfile) Destroy

func (h *Helmfile) Destroy(ctx context.Context, logger *slog.Logger, m v1.Manifest) (retErr error)

Destroy implements Manager.

func (*Helmfile) WithEnvironment added in v0.4.1

func (h *Helmfile) WithEnvironment(environment string) *Helmfile

WithEnvironment は -e/--environment フラグの値を設定します。 helmfile.yaml テンプレートの {{ .Environment.Name }} に反映されます。

type Kustomize

type Kustomize struct {
	// contains filtered or unexported fields
}

func NewKustomize

func NewKustomize(client client.Client) *Kustomize

func (*Kustomize) Apply

func (k *Kustomize) Apply(ctx context.Context, logger *slog.Logger, m v1.Manifest) (objects []client.Object, retErr error)

Apply implements Manager.

func (*Kustomize) Build

func (k *Kustomize) Build(ctx context.Context, logger *slog.Logger, m v1.Manifest) (out string, retErr error)

Build implements Manager.

func (*Kustomize) Destroy

func (k *Kustomize) Destroy(ctx context.Context, logger *slog.Logger, m v1.Manifest) (retErr error)

Destroy 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)
}

Directories

Path Synopsis
Package oras - auth.go
Package oras - auth.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL