K8s の client-go の informers の調査の一環としてこのドキュメントを読むことになりました。英語力に不安があるので、DeepL でベースの翻訳を行い、怪しい単語は手動で直したメモを書いていました。一般的な内容なので共有します。
Version: v0.30.1 の内容です。
informers
Overview
informers
は K8s の API 用に生成された informers を提供します
Types
type GenericInformer
type GenericInformer interface {
Informer() cache.SharedIndexInformer
Lister() cache.GenericLister
}
GenericInformer は SharedIndexInformer の一種であり、型に基づいて他の sharedInformer を見つけ、処理を委譲します。
type SharedInformerFactory
type SharedInformerFactory interface {
internalinterfaces.SharedInformerFactory
// Startは、要求されたすべてのインフォーマーを初期化する。これらは、stopチャネルがクローズされるまで実行されるゴルーチン内で処理される。
Start(stopCh <-chan struct{})
// シャットダウンはファクトリーがシャットダウンしたことを示します。その時点で、新しいインフォーマーを開始することはできなくなり、Startは何もせずに戻ります。さらに、シャットダウンは、すべてのゴルーチンが終了するまでブロックします。そのためには、シャットダウンが呼び出される前に、またはシャットダウンが待機している間に、それらが開始されたクローズ・チャネルがクローズされていなければなりません。シャットダウンは複数回(同時でも)呼び出すことができます。そのような呼び出しはすべて、すべてのゴルーチンが終了するまでブロックされます。
Shutdown()
// WaitForCacheSyncは、開始されたすべてのインフォーマのキャッシュが同期されるか、停止チャネルが閉じられるまでブロックする。
WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
// ForResourceは、一致する型の共有インフォーマーへの一般的なアクセスを与える。
ForResource(resource schema.GroupVersionResource) (GenericInformer, error)
// InformerFor は、内部クライアントを使用して obj の SharedIndexInformer を返します。
InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer
Admissionregistration() admissionregistration.Interface
Internal() apiserverinternal.Interface
Apps() apps.Interface
Autoscaling() autoscaling.Interface
Batch() batch.Interface
Certificates() certificates.Interface
Coordination() coordination.Interface
Core() core.Interface
Discovery() discovery.Interface
Events() events.Interface
Extensions() extensions.Interface
Flowcontrol() flowcontrol.Interface
Networking() networking.Interface
Node() node.Interface
Policy() policy.Interface
Rbac() rbac.Interface
Resource() resource.Interface
Scheduling() scheduling.Interface
Storage() storage.Interface
Storagemigration() storagemigration.Interface
}
SharedInformerFactoryは、既知のすべてのAPIグループのバージョンのリソースに対して共有 informers を提供します。
通常、次のように使用します:
ctx, cancel := context.Background()
defer cancel()
factory := NewSharedInformerFactory(client, resyncPeriod)
defer factory.WaitForStop() // 何も開始されなかった場合は直ちに戻る。
genericInformer := factory.ForResource(resource)
typedInformer := factory.SomeAPIGroup().V1().SomeType()
factory.Start(ctx.Done()) // informers の処理を開始する。
synced := factory.WaitForCacheSync(ctx.Done())
for v, ok := range synced {
if !ok {
fmt.Fprintf(os.Stderr, "caches failed to sync: %v", v)
return
}
}
// informers の作成は、Startの後に行うこともできるが、その場合はStartを再度呼び出す必要がある:
anotherGenericInformer := factory.ForResource(resource)
factory.Start(ctx.Done())
func NewFilteredSharedInformerFactory
func NewFilteredSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory
NewFilteredSharedInformerFactory は sharedInformerFactory の新しいインスタンスを構築します。この SharedInformerFactory 経由で取得したリスタには、ここで指定したものと同じフィルタが適用されます。
非推奨: 代わりに NewSharedInformerFactoryWithOptions を使用してください。
func NewSharedInformerFactory
func NewSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration) SharedInformerFactory
NewSharedInformerFactory は、すべてのネームスペースに対して sharedInformerFactory の新しいインスタンスを構築します。
func NewSharedInformerFactoryWithOptions
func NewSharedInformerFactoryWithOptions(client kubernetes.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory
NewSharedInformerFactoryWithOptions は、オプションを追加した SharedInformerFactory の新しいインスタンスを構築します。
type SharedInformerOption
type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory
SharedInformerOption は、SharedInformerFactory の関数のオプション型を定義します。
func WithCustomResyncConfig
func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption
WithCustomResyncConfig は、指定された informers 型のカスタム再同期期間を設定します。
func WithNamespace
func WithNamespace(namespace string) SharedInformerOption
WithNamespace は、SharedInformerFactory を指定された名前空間に制限します。
func WithTransform
func WithTransform(transform cache.TransformFunc) SharedInformerOption
WithTransform は、すべての informers にトランスフォームを設定します。
func WithTweakListOptions
func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption
WithTweakListOptions は、設定された SharedInformerFactory のすべてのリスタにカスタムフィルタを設定します。