rotation

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrReissueUnsupported = fmt.Errorf("reissue unsupported")

Functions

func RequiresRestart

func RequiresRestart(provider string) bool

RequiresRestart 는 provider 소비자가 회전 후 재시작을 필요로 하는지 알려준다.

Types

type GitHubReissuer

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

func NewGitHubReissuer

func NewGitHubReissuer(apiBase string) *GitHubReissuer

func (*GitHubReissuer) Reissue

func (r *GitHubReissuer) Reissue(ctx context.Context, input ReissueInput) (string, error)

type GitLabReissuer

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

func NewGitLabReissuer

func NewGitLabReissuer(baseURL string) *GitLabReissuer

func (*GitLabReissuer) Reissue

func (r *GitLabReissuer) Reissue(ctx context.Context, input ReissueInput) (string, error)

type GiteaReissueSpec

type GiteaReissueSpec struct {
	StackID   string
	ClusterID string
	Namespace string
	OrgID     string
	Env       string
}

GiteaReissueSpec 은 재발급에 필요한 스택 좌표다.

type GiteaReissuer

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

GiteaReissuer 는 스택 안에 설치된 Gitea 의 액세스 토큰을 재발급한다.

GitHub 재발급기와 근본적으로 다르다. GitHub 은 App JWT 로 외부 API 를 부르지만 Gitea 는 클러스터 안에 있고 외부에 노출되지 않을 수 있어 HTTP 로 닿지 못한다 — 발급 경로와 같은 방식으로 파드 안의 gitea CLI 를 쓴다.

발급 자체는 CI/CD 모듈의 TokenIssuer 가 이미 구현하고 있다. 모듈 간 직접 import 는 금지되므로 그 동작을 함수로 주입받는다 — 재발급 로직을 두 곳에 복제하면 스코프나 토큰 이름이 갈라져 회전 후 인증이 조용히 실패한다.

func NewGiteaReissuer

func NewGiteaReissuer(issue GiteaTokenIssueFunc) *GiteaReissuer

NewGiteaReissuer 는 GiteaReissuer 를 만든다.

func (*GiteaReissuer) Reissue

func (r *GiteaReissuer) Reissue(ctx context.Context, input ReissueInput) (string, error)

Reissue 는 Gitea 액세스 토큰을 새로 발급한다.

발급 경로가 배선되지 않았으면 ErrReissueUnsupported 를 돌려 회전 스케줄러가 이 provider 를 건너뛰게 한다 — 조용히 성공을 반환하면 만료된 토큰이 그대로 남은 채 회전이 끝난 것으로 기록된다.

type GiteaTokenIssueFunc

type GiteaTokenIssueFunc func(ctx context.Context, spec GiteaReissueSpec) (string, error)

GiteaTokenIssueFunc 는 스택의 Gitea 토큰을 강제로 새로 발급한다.

어느 스택인지는 Metadata 가 알려준다 — 회전 스케줄러는 token_sources 행을 훑을 뿐 스택 구조를 모른다.

type KubectlRunner

type KubectlRunner func(ctx context.Context, kubeconfig []byte, args ...string) ([]byte, error)

KubectlRunner 는 kubectl 실행을 추상화한다.

type NoopReissuer

type NoopReissuer struct{}

func NewNoopReissuer

func NewNoopReissuer() *NoopReissuer

func (*NoopReissuer) Reissue

func (r *NoopReissuer) Reissue(_ context.Context, input ReissueInput) (string, error)

type ReissueInput

type ReissueInput struct {
	Provider     string
	CurrentToken string
	Metadata     map[string]any
}

type Reissuer

type Reissuer interface {
	Reissue(ctx context.Context, input ReissueInput) (string, error)
}

type RouterReissuer

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

func NewRouterReissuer

func NewRouterReissuer() *RouterReissuer

func (*RouterReissuer) Register

func (r *RouterReissuer) Register(provider string, reissuer Reissuer)

func (*RouterReissuer) Reissue

func (r *RouterReissuer) Reissue(ctx context.Context, input ReissueInput) (string, error)

type WorkloadRef

type WorkloadRef struct {
	Kind string
	Name string
}

WorkloadRef 는 재시작 대상 워크로드다.

type WorkloadRestarter

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

WorkloadRestarter 는 회전 후 소비자를 rolling restart 한다.

lookup/restart 를 필드로 두어 테스트에서 교체할 수 있게 한다.

func NewWorkloadRestarter

func NewWorkloadRestarter(kubeconfig []byte, runKubectl KubectlRunner) *WorkloadRestarter

NewWorkloadRestarter 는 kubeconfig 로 동작하는 restarter 를 만든다.

func (*WorkloadRestarter) RestartForProvider

func (r *WorkloadRestarter) RestartForProvider(ctx context.Context, namespace, provider string) error

RestartForProvider 는 해당 provider 의 소비자를 rolling restart 한다.

재시작이 불필요한 provider 는 조회조차 하지 않는다.

Jump to

Keyboard shortcuts

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