github.com/kubernetes/client-go informers 和訳

K8s　の client-go の informers の調査の一環としてこのドキュメントを読むことになりました。英語力に不安があるので、DeepL　でベースの翻訳を行い、怪しい単語は手動で直したメモを書いていました。一般的な内容なので共有します。

**Version: v0.30.1**　の内容です。

# informers

## Overview

`informers` は K8s の API 用に生成された informers を提供します

## Types

### type [`GenericInformer`](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/generic.go#L77)

```golang
type GenericInformer interface {
    Informer() cache.SharedIndexInformer
    Lister() cache.GenericLister
}
```

GenericInformer は SharedIndexInformer の一種であり、型に基づいて他の sharedInformer を見つけ、処理を委譲します。

### type [`SharedInformerFactory`](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L245)

```golang
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 を提供します。

通常、次のように使用します：

```golang
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](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L120)

```golang
func NewFilteredSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory
```

NewFilteredSharedInformerFactory は sharedInformerFactory の新しいインスタンスを構築します。この SharedInformerFactory 経由で取得したリスタには、ここで指定したものと同じフィルタが適用されます。
非推奨： 代わりに NewSharedInformerFactoryWithOptions を使用してください。

### func [NewSharedInformerFactory](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L112)

```golang
func NewSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration) SharedInformerFactory
```

NewSharedInformerFactory は、すべてのネームスペースに対して sharedInformerFactory の新しいインスタンスを構築します。

### func [NewSharedInformerFactoryWithOptions](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L125)

```golang
func NewSharedInformerFactoryWithOptions(client kubernetes.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory
```

NewSharedInformerFactoryWithOptions は、オプションを追加した SharedInformerFactory の新しいインスタンスを構築します。

### type [SharedInformerOption](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L55)

```golang
type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory
```

SharedInformerOption は、SharedInformerFactory の関数のオプション型を定義します。

### func [WithCustomResyncConfig](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L78)

```golang
func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption
```

WithCustomResyncConfig は、指定された informers 型のカスタム再同期期間を設定します。

### func [WithNamespace](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L96)

```golang
func WithNamespace(namespace string) SharedInformerOption
```

WithNamespace は、SharedInformerFactory を指定された名前空間に制限します。

### func [WithTransform](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L104)

```golang
func WithTransform(transform cache.TransformFunc) SharedInformerOption
```

WithTransform は、すべての informers にトランスフォームを設定します。

### func [WithTweakListOptions](https://github.com/kubernetes/client-go/blob/v0.30.1/informers/factory.go#L88)

```golang
func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption
```

WithTweakListOptions は、設定された SharedInformerFactory のすべてのリスタにカスタムフィルタを設定します。