0
0

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 のすべてのリスタにカスタムフィルタを設定します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0