Reflector は、リソース (シークレットと構成マップ) への変更を監視し、同じ名前空間または別の名前空間内のミラー リソースに変更を反映するように設計された Kubernetes アドオンです。
amd64
、arm
およびarm64
サポート
サポートが必要な場合、またはバグが見つかった場合は、お気軽に GitHub (https://github.com/emberstack/kubernetes-reflector/issues) で問題を開いてください。
Reflector は手動で、または Helm を使用してデプロイできます (推奨)。
Kubernetes 1.14+
Helm 3 (Helm を使用してデプロイされている場合)
Helm を使用して、最新リリースのチャートをインストールします。
$ helm repo add emberstack https://emberstack.github.io/helm-charts$ helm repo update$ helm upgrade --install リフレクター emberstack/reflector
次の値を使用して、helm デプロイメントの値をカスタマイズできます。
パラメータ | 説明 | デフォルト |
---|---|---|
nameOverride | リリース名をオーバーライドします | "" |
fullnameOverride | リリースのフルネームをオーバーライドします | "" |
image.repository | コンテナイメージリポジトリ | emberstack/kubernetes-reflector |
image.tag | コンテナイメージタグ | Same as chart version |
image.pullPolicy | コンテナイメージのプルポリシー | IfNotPresent |
configuration.logging.minimumLevel | ロギングの最小レベル | Information |
configuration.watcher.timeout | ウォッチャーの最大存続期間 (秒) | 「」 |
configuration.kubernetes.skipTlsVerify | クラスターに接続するときに TLS 検証をスキップする | false |
rbac.enabled | RBAC リソースを作成して使用する | true |
serviceAccount.create | サービスアカウントの作成 | true |
serviceAccount.name | サービスアカウント名 | リリース名 |
livenessProbe.initialDelaySeconds | livenessProbe の初期遅延 | 5 |
livenessProbe.periodSeconds | livenessProbe 期間 | 10 |
readinessProbe.initialDelaySeconds | readinessProbe 初期遅延 | 5 |
readinessProbe.periodSeconds | readinessProbe 期間 | 10 |
startupProbe.failureThreshold | startupProbe 失敗しきい値 | 10 |
startupProbe.periodSeconds | startupProbe 期間 | 5 |
resources | リソース制限 | {} |
nodeSelector | ポッド割り当てのノード ラベル | {} |
tolerations | ポッド割り当ての許容ラベル | [] |
affinity | ポッド割り当てのノード アフィニティ | {} |
priorityClassName | ポッドのpriorityClassName | "" |
Artifact Hub で私たちを見つけてください
各リリース (リリース GitHub ページにあります) には、手動デプロイメント ファイル ( reflector.yaml
) が含まれています。
$ kubectl -n kube-system apply -f https://github.com/emberstack/kubernetes-reflector/releases/latest/download/reflector.yaml
secret
またはconfigmap
に注釈を付けますミラーへの反射を許可するには、 reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
をリソースの注釈に追加します。
カンマ区切りの名前空間または正規表現のリストのみからのリフレクションを許可するには、 reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "<list>"
をリソースの注釈に追加します。注: この注釈が省略されているか空の場合、すべての名前空間が許可されます。
Reflector は、他の名前空間に同じ名前のミラーを自動的に作成できます。次の注釈は、ミラーを作成するかどうか、およびミラーを作成する方法を制御します。
他の名前空間にミラーを自動的に作成するには、リソースの注釈にreflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"
を追加します。注: ミラーはソースを反射できる必要があるため、 reflector.v1.k8s.emberstack.com/reflection-allowed
をtrue
にする必要があります。
ミラーを自動的に作成する名前空間を指定するリソースの注釈に、 reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: "<list>"
を追加します。注: この注釈が省略されているか空の場合、すべての名前空間が許可されます。ミラーはリフレクションが許可されている名前空間に存在する必要があるため、このリスト内の名前空間はreflector.v1.k8s.emberstack.com/reflection-allowed-namespaces
reflection-allowed-namespaces によってもチェックされます。
重要:
source
が削除されると、自動ミラーも削除されます。また、リフレクションまたは自動ミラーリングがオフになっている場合、または自動ミラーの名前空間が許可されている名前空間と有効に一致しなくなった場合、自動ミラーは削除されます。
重要: Reflector は、自動ミラーの作成時に競合するリソースをスキップします。自動ミラーが作成される名前空間にソースの名前を持つリソースがすでに存在する場合、その名前空間はスキップされ、警告として記録されます。
ソースシークレットの例:
apiVersion: v1kind: Secretmetadata: name: ソース秘密アノテーション:reflector.v1.k8s.emberstack.com/reflection-allowed: "true"reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "namespace-1 ,名前空間-2,名前空間-[0-9]*"データ: ...
ソース構成マップの例:
apiVersion: v1kind: ConfigMapmetadata: name: source-config-map 注釈:reflector.v1.k8s.emberstack.com/reflection-allowed: "true"reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "namespace -1,名前空間-2,名前空間-[0-9]*"データ: ...
reflector.v1.k8s.emberstack.com/reflects: "<source namespace>/<source name>"
をミラー オブジェクトに追加します。注釈の値はnamespace/name
形式のソース オブジェクトの完全名です。
注: ミラーに手動で変更を加えるとき (たとえば、
helm
を使用してデプロイするときやデプロイメント スクリプトを再適用するとき)、リソースの注釈にreflector.v1.k8s.emberstack.com/reflected-version: ""
を追加します。これにより、ミラーの反射バージョンがリセットされます。
ミラーシークレットの例:
apiVersion: v1kind: Secretmetadata: name: ミラー シークレット アノテーション:reflector.v1.k8s.emberstack.com/reflects: "default/source-secret"data: ...
ミラー構成マップの例:
apiVersion: v1kind: ConfigMapmetadata: name: Mirror-config-map 注釈:reflector.v1.k8s.emberstack.com/reflects: "default/source-config-map"data: ...
Reflector は、ソース オブジェクトに加えられた変更を監視し、次のフィールドをコピーします。
秘密のdata
configmap のdata
とbinaryData
Reflector は、ミラーにソース オブジェクトのバージョンの注釈を付けることで、コピーされた内容を追跡します。
cert-manager
サポートcert-manager のバージョン 1.5 以降では、
secretTemplate
使用して、ミラーリング用の証明書から作成されたシークレットに注釈を付けることができます (https://cert-manager.io/docs/usage/certificate/ を参照)。
apiVersion: cert-manager.io/v1 kind: Certificate ... spec: secretTemplate: annotations: reflector.v1.k8s.emberstack.com/reflection-allowed: "true" reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "" ...