Reflector — это надстройка Kubernetes, предназначенная для отслеживания изменений в ресурсах (секретах и картах конфигурации) и отражения изменений для зеркалирования ресурсов в том же или других пространствах имен.
Поддерживает
amd64
,arm
иarm64
Если вам нужна помощь или вы обнаружили ошибку, смело открывайте проблему на GitHub (https://github.com/emberstack/kubernetes-reflector/issues).
Reflector можно развернуть вручную или с помощью Helm (рекомендуется).
Кубернетес 1.14+
Helm 3 (если развернут с помощью Helm)
Используйте Helm для установки последней выпущенной диаграммы:
$ репозиторий helm добавить emberstack https://emberstack.github.io/helm-charts$ обновление репозитория helm $ обновление helm --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
allowed был true
поскольку зеркала должны иметь возможность отражать источник.
reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: "<list>"
в аннотации ресурса, указывающие, в каких пространствах имен автоматически создавать зеркала. Примечание. Если эта аннотация опущена или пуста, разрешены все пространства имен. Пространства имен в этом списке также будут проверяться с помощью reflector.v1.k8s.emberstack.com/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 ,namespace-2,namespace-[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
.
Примечание. Добавьтеreflector.v1.k8s.emberstack.com
reflector.v1.k8s.emberstack.com/reflected-version: ""
в аннотации ресурсов при внесении каких-либо изменений в зеркало вручную (например, при развертывании с помощьюhelm
или повторном применении сценария развертывания). Это сбросит отраженную версию зеркала.
Пример секрета зеркала:
apiVersion: v1kind: Secretmetadata: name: аннотации Mirror-Secret: Reflector.v1.k8s.emberstack.com/reflects: "default/source-secret"data: ...
Пример конфигурации зеркала:
apiVersion: v1kind: ConfigMapmetadata: имя: аннотации зеркальной конфигурации-карты: отражатель.v1.k8s.emberstack.com/reflects: "default/source-config-map" data: ...
Reflector будет отслеживать любые изменения, внесенные в исходные объекты, и копировать следующие поля:
data
для секретов
data
binaryData
для configmaps Reflector отслеживает то, что было скопировано, аннотируя зеркала версией исходного объекта.
cert-manager
Начиная с версии 1.5 cert-manager вы можете аннотировать секреты, созданные на основе сертификатов, для зеркалирования с помощью
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: "" ...