Documentation
¶
Index ¶
- Constants
- Variables
- func GitHubAPITokenPath(env, orgID string) string
- func GitLabAPITokenPath(env, orgID string) string
- type HealthChecker
- type KubernetesAuthConfig
- type KubernetesTokenProvider
- type OpenBaoStore
- type Resolver
- type Router
- func (r *Router) Check(ctx context.Context, provider string) error
- func (r *Router) CheckForStack(ctx context.Context, provider, stackID string) error
- func (r *Router) ForStack(ctx context.Context, provider, stackID string) (Store, error)
- func (r *Router) GetToken(ctx context.Context, provider, path string) (string, error)
- func (r *Router) GetTokenForStack(ctx context.Context, provider, stackID, path string) (string, error)
- func (r *Router) Has(provider string) bool
- func (r *Router) InvalidateStack(stackID string)
- func (r *Router) PutToken(ctx context.Context, provider, path, value string) error
- func (r *Router) PutTokenForStack(ctx context.Context, provider, stackID, path, value string) error
- func (r *Router) Register(provider string, store Store)
- func (r *Router) WithResolver(resolver Resolver) *Router
- type StaticTokenProvider
- type Store
- type TokenProvider
Constants ¶
const ( // ControllerRole / ControllerServiceAccount 는 백엔드가 사용하는 신원이다. // 부트스트랩 Job 이 만드는 role/SA 이름과 일치해야 한다. ControllerRole = "nullus-controller" ControllerServiceAccount = "nullus-controller" )
const DefaultEnv = "dev"
DefaultEnv 는 환경 이름이 비었을 때 쓰는 값이다.
Variables ¶
var ErrProviderNotConfigured = errors.New("secret provider not configured")
Functions ¶
func GitHubAPITokenPath ¶
GitHubAPITokenPath 는 조직 GitHub PAT 의 경로다.
func GitLabAPITokenPath ¶
GitLabAPITokenPath 는 스택 GitLab 자동화 토큰의 경로다.
Types ¶
type HealthChecker ¶
type KubernetesAuthConfig ¶
type KubernetesAuthConfig struct {
Kubeconfig []byte
Namespace string
Role string
ServiceAccount string
// ServiceName/ServicePort 가 비면 openbao:8200 을 사용한다.
ServiceName string
ServicePort string
}
KubernetesAuthConfig 는 k8s auth 로그인에 필요한 정보를 담는다.
type KubernetesTokenProvider ¶
type KubernetesTokenProvider struct {
// contains filtered or unexported fields
}
KubernetesTokenProvider 는 Kubernetes Auth 로 로그인해 얻은 client_token 을 캐시하고, 만료가 임박하면 다시 로그인한다.
login 은 (토큰, TTL, 오류) 를 돌려준다. 테스트에서 교체할 수 있도록 필드로 주입한다.
func NewKubernetesTokenProvider ¶
func NewKubernetesTokenProvider(login func(ctx context.Context) (string, time.Duration, error)) *KubernetesTokenProvider
NewKubernetesTokenProvider 는 주어진 로그인 함수로 provider 를 만든다.
type OpenBaoStore ¶
type OpenBaoStore struct {
// contains filtered or unexported fields
}
func NewKubernetesAuthStore ¶
func NewKubernetesAuthStore(cfg KubernetesAuthConfig) (*OpenBaoStore, error)
NewKubernetesAuthStore 는 대상 클러스터의 OpenBao 에 Kubernetes Auth 로 접속하는 store 를 만든다.
func NewOpenBaoStore ¶
func NewOpenBaoStore(addr, token string) *OpenBaoStore
NewOpenBaoStore 는 정적 토큰을 사용하는 store 를 만든다. 로컬 개발 전용이다.
func NewOpenBaoStoreWithProvider ¶
func NewOpenBaoStoreWithProvider(addr string, provider TokenProvider) *OpenBaoStore
NewOpenBaoStoreWithProvider 는 토큰 공급 전략을 주입해 store 를 만든다. 운영 경로는 KubernetesTokenProvider 를 넘겨 단기 자격을 사용한다.
func (*OpenBaoStore) Check ¶
func (s *OpenBaoStore) Check(ctx context.Context) error
Check 는 금고가 응답하고, 봉인이 풀려 있고, 자격이 유효한지 확인한다. preflight gate 의 판단 근거다.
type Resolver ¶
Resolver 는 스택 단위로 Store 를 만들어 준다.
OpenBao 는 스택마다 배포되므로 "provider 하나 = 인스턴스 하나" 가정이 성립하지 않는다. Router 는 전역 등록(로컬 개발)과 스택별 지연 생성(운영)을 함께 지원한다.
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
func (*Router) CheckForStack ¶
func (*Router) ForStack ¶
ForStack 은 특정 스택의 Store 를 돌려준다. resolver 가 없거나 stackID 가 비면 전역 등록분으로 되돌아간다.
func (*Router) GetTokenForStack ¶
func (*Router) InvalidateStack ¶
InvalidateStack 은 스택 삭제/재설치 시 캐시된 Store 를 버린다.
func (*Router) PutTokenForStack ¶
PutTokenForStack / GetTokenForStack / CheckForStack 은 스택 범위 접근이다.
func (*Router) WithResolver ¶
WithResolver 는 스택별 Store 생성기를 등록한다.
type StaticTokenProvider ¶
type StaticTokenProvider struct {
// contains filtered or unexported fields
}
StaticTokenProvider 는 고정 토큰을 돌려준다. 로컬 개발 전용이다.
func NewStaticTokenProvider ¶
func NewStaticTokenProvider(token string) *StaticTokenProvider
type TokenProvider ¶
TokenProvider 는 OpenBao 요청에 사용할 토큰을 공급한다.
구현이 두 가지인 이유는 실행 위치가 다르기 때문이다.
- StaticTokenProvider: 로컬 개발 전용. .env 의 고정 토큰을 그대로 쓴다
- KubernetesTokenProvider: 운영. Kubernetes Auth 로 단기 자격을 발급받는다
PRD 5.2 는 "정적 토큰 하드코딩 금지, Kubernetes auth 기반 short-lived token 사용을 기본으로 한다" 고 규정한다. 정적 전략은 로컬 예외로만 허용된다.