Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrReissueUnsupported = fmt.Errorf("reissue unsupported")
Functions ¶
func RequiresRestart ¶
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 ¶
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 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 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 는 조회조차 하지 않는다.