config

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package config 提供 IAM SDK 的公开配置结构与加载入口。

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEndpointRequired = errors.New("config: endpoint is required")
)

配置相关错误

Functions

func GenerateEnvExample

func GenerateEnvExample(prefix string) string

GenerateEnvExample 生成环境变量配置示例。

func GenerateYAMLExample

func GenerateYAMLExample() string

GenerateYAMLExample 生成 YAML 配置示例。

Types

type CircuitBreakerConfig

type CircuitBreakerConfig struct {
	FailureThreshold int
	OpenDuration     time.Duration
	HalfOpenRequests int
	SuccessThreshold int
}

CircuitBreakerConfig 熔断器配置。

type ClientOption

type ClientOption func(*ClientOptions)

ClientOption 客户端选项函数

func WithDialOptions

func WithDialOptions(opts ...grpc.DialOption) ClientOption

WithDialOptions 添加 gRPC DialOption

func WithDisableDefaultInterceptors

func WithDisableDefaultInterceptors() ClientOption

WithDisableDefaultInterceptors 禁用默认拦截器

func WithMetricsCollector

func WithMetricsCollector(collector MetricsCollector) ClientOption

WithMetricsCollector 设置自定义 Metrics 收集器

func WithStreamInterceptors

func WithStreamInterceptors(interceptors ...grpc.StreamClientInterceptor) ClientOption

WithStreamInterceptors 添加 Stream 拦截器

func WithTracingHook

func WithTracingHook(hook TracingHook) ClientOption

WithTracingHook 设置 Tracing 钩子

func WithUnaryInterceptors

func WithUnaryInterceptors(interceptors ...grpc.UnaryClientInterceptor) ClientOption

WithUnaryInterceptors 添加 Unary 拦截器

type ClientOptions

type ClientOptions struct {
	UnaryInterceptors  []grpc.UnaryClientInterceptor
	StreamInterceptors []grpc.StreamClientInterceptor
	DialOptions        []grpc.DialOption

	// TracingHook 用户提供的 Tracing 钩子
	TracingHook TracingHook

	// MetricsCollector 用户提供的 Metrics 收集器(覆盖默认)
	MetricsCollector MetricsCollector

	// DisableDefaultInterceptors 禁用默认拦截器
	DisableDefaultInterceptors bool
}

ClientOptions 客户端选项集合

func ApplyOptions

func ApplyOptions(opts ...ClientOption) *ClientOptions

ApplyOptions 应用选项

type Config

type Config struct {
	Endpoint string
	TLS      *TLSConfig

	Timeout     time.Duration
	DialTimeout time.Duration
	Keepalive   *KeepaliveConfig
	Retry       *RetryConfig

	JWKS           *JWKSConfig
	Metadata       map[string]string
	LoadBalancer   string
	CircuitBreaker *CircuitBreakerConfig
	Observability  *ObservabilityConfig
}

Config 是 IAM SDK 的主配置结构。

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig 返回默认配置。

func FromEnv

func FromEnv() (*Config, error)

FromEnv 从环境变量加载配置。

func FromEnvWithPrefix

func FromEnvWithPrefix(prefix string) (*Config, error)

FromEnvWithPrefix 从带前缀的环境变量加载配置。

func FromViper

func FromViper(getter viperGetter) (*Config, error)

FromViper 从 Viper 风格的 getter 加载配置,默认读取 `iam.*` 前缀。

func FromViperWithPrefix

func FromViperWithPrefix(getter viperGetter, prefix string) (*Config, error)

FromViperWithPrefix 从 Viper 风格的 getter 加载带前缀的配置。

func (*Config) Validate

func (c *Config) Validate() error

Validate 验证配置有效性。

func (*Config) WithDefaults

func (c *Config) WithDefaults() *Config

WithDefaults 填充默认值。

type EnvLoader

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

EnvLoader 环境变量配置加载器。

func NewEnvLoader

func NewEnvLoader(prefix string) *EnvLoader

NewEnvLoader 创建环境变量配置加载器。

func (*EnvLoader) Load

func (l *EnvLoader) Load() (*Config, error)

Load 从环境变量加载配置。

type JWKSConfig

type JWKSConfig struct {
	URL             string
	GRPCEndpoint    string
	RefreshInterval time.Duration
	RequestTimeout  time.Duration
	CacheTTL        time.Duration
	HTTPClient      *http.Client
	CustomHeaders   map[string]string
	FallbackOnError bool
}

JWKSConfig JWKS(JSON Web Key Set)配置。

type KeepaliveConfig

type KeepaliveConfig struct {
	Time                time.Duration
	Timeout             time.Duration
	PermitWithoutStream bool
}

KeepaliveConfig gRPC 连接保活配置。

type MetricsCollector

type MetricsCollector interface {
	RecordRequest(method string, code string, duration time.Duration)
}

MetricsCollector 自定义指标收集器接口。

type ObservabilityConfig

type ObservabilityConfig struct {
	EnableMetrics        bool
	EnableTracing        bool
	EnableCircuitBreaker bool
	EnableRequestID      bool
	MetricsNamespace     string
	MetricsSubsystem     string
	ServiceName          string
}

ObservabilityConfig 控制 SDK 默认 metrics / tracing / circuit breaker 链路。

func DefaultObservabilityConfig

func DefaultObservabilityConfig() *ObservabilityConfig

DefaultObservabilityConfig 默认可观测性配置。

type RetryConfig

type RetryConfig struct {
	Enabled           bool
	MaxAttempts       int
	InitialBackoff    time.Duration
	MaxBackoff        time.Duration
	BackoffMultiplier float64
	RetryableCodes    []string
}

RetryConfig 重试配置。

type ServiceAuthConfig

type ServiceAuthConfig struct {
	ServiceID      string
	TargetAudience []string
	TokenTTL       time.Duration
	RefreshBefore  time.Duration
}

ServiceAuthConfig 服务间认证配置。

type TLSConfig

type TLSConfig struct {
	Enabled bool

	CACert    string
	CACertPEM []byte

	ClientCert    string
	ClientCertPEM []byte
	ClientKey     string
	ClientKeyPEM  []byte

	ServerName         string
	InsecureSkipVerify bool
	MinVersion         uint16
}

TLSConfig TLS/mTLS 配置。

type TokenVerifyConfig

type TokenVerifyConfig struct {
	AllowedAudience         []string
	AllowedIssuer           string
	ClockSkew               time.Duration
	RequireExpirationTime   bool
	ForceRemoteVerification bool
	RequiredClaims          []string
	Algorithms              []string
}

TokenVerifyConfig Token 验证配置。

type TracingHook

type TracingHook interface {
	StartSpan(ctx context.Context, name string) (context.Context, func())
	SetAttributes(ctx context.Context, attrs map[string]string)
	RecordError(ctx context.Context, err error)
}

TracingHook Tracing 钩子接口。

type ViperLoader

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

ViperLoader Viper 配置加载器。

func NewViperLoader

func NewViperLoader(getter func(key string) interface{}) *ViperLoader

NewViperLoader 创建 Viper 配置加载器。

func (*ViperLoader) Load

func (l *ViperLoader) Load(prefix string) (*Config, error)

Load 从 Viper 加载配置。

Jump to

Keyboard shortcuts

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