Reflector é um complemento do Kubernetes projetado para monitorar alterações em recursos (segredos e mapas de configuração) e refletir alterações em recursos espelhados no mesmo ou em outros namespaces.
Suporta
amd64
,arm
earm64
Se precisar de ajuda ou encontrar um bug, sinta-se à vontade para abrir um problema no GitHub (https://github.com/emberstack/kubernetes-reflector/issues).
O refletor pode ser implantado manualmente ou usando o Helm (recomendado).
Kubernetes 1.14+
Helm 3 (se implantado usando Helm)
Use o Helm para instalar o gráfico lançado mais recente:
$ helm repo adicionar emberstack https://emberstack.github.io/helm-charts$ helm repo update$ helm upgrade --install reflector emberstack/reflector
É possível customizar os valores da implantação do helm usando os seguintes valores:
Parâmetro | Descrição | Padrão |
---|---|---|
nameOverride | Substitui o nome da versão | "" |
fullnameOverride | Substitui o nome completo da versão | "" |
image.repository | Repositório de imagens de contêiner | emberstack/kubernetes-reflector |
image.tag | Tag de imagem do contêiner | Same as chart version |
image.pullPolicy | Política de extração de imagem de contêiner | IfNotPresent |
configuration.logging.minimumLevel | Nível mínimo de registro | Information |
configuration.watcher.timeout | Vida útil máxima do inspetor em segundos | `` |
configuration.kubernetes.skipTlsVerify | Ignorar a verificação de TLS ao conectar o cluster | false |
rbac.enabled | Criar e usar recursos RBAC | true |
serviceAccount.create | Criar conta de serviço | true |
serviceAccount.name | Nome da conta de serviço | nome do lançamento |
livenessProbe.initialDelaySeconds | Atraso inicial livenessProbe | 5 |
livenessProbe.periodSeconds | livenessProbe de sondagem | 10 |
readinessProbe.initialDelaySeconds | readinessProbe | 5 |
readinessProbe.periodSeconds | readinessProbe | 10 |
startupProbe.failureThreshold | Limite de falha startupProbe | 10 |
startupProbe.periodSeconds | Período de startupProbe | 5 |
resources | Limites de recursos | {} |
nodeSelector | Rótulos de nó para atribuição de pod | {} |
tolerations | Rótulos de tolerância para atribuição de pod | [] |
affinity | Afinidade do nó para atribuição de pod | {} |
priorityClassName | priorityClassName para pods | "" |
Encontre-nos no Artifact Hub
Cada versão (encontrada na página Releases GitHub) contém o arquivo de implantação manual ( reflector.yaml
).
$ kubectl -n kube-system aplicar -f https://github.com/emberstack/kubernetes-reflector/releases/latest/download/reflector.yaml
secret
de origem ou configmap
Adicione reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
às anotações do recurso para permitir a reflexão nos espelhos.
Adicione reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "<list>"
às anotações de recurso para permitir a reflexão apenas da lista de namespaces separados por vírgula ou expressões regulares. Nota: Se esta anotação for omitida ou estiver vazia, todos os namespaces serão permitidos.
O Reflector pode criar espelhos com o mesmo nome em outros namespaces automaticamente. As seguintes anotações controlam se e como os espelhos são criados:
Adicione reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"
às anotações de recursos para criar espelhos automaticamente em outros namespaces. Nota: Requer que reflector.v1.k8s.emberstack.com/reflection-allowed
seja true
, pois os espelhos precisam ser capazes de refletir a fonte.
Adicione reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: "<list>"
às anotações de recursos para especificar em quais namespaces criar espelhos automaticamente. Nota: Se esta anotação for omitida ou estiver vazia, todos os namespaces serão permitidos. Os namespaces nesta lista também serão verificados por reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces
, pois os espelhos precisam estar em namespaces de onde a reflexão é permitida.
Importante: Se a
source
for excluída, os espelhos automáticos serão excluídos. Além disso, se a reflexão ou o espelhamento automático estiverem desativados ou se o namespace do espelho automático não for mais uma correspondência válida para os namespaces permitidos, o espelho automático será excluído.
Importante: o Reflector irá ignorar qualquer recurso conflitante ao criar espelhos automáticos. Se já existir um recurso com o nome da origem em um namespace onde um espelho automático será criado, esse namespace será ignorado e registrado como um aviso.
Exemplo de segredo de origem:
apiVersion: v1kind: Secretmetadata: nome: source-secret annotations: reflector.v1.k8s.emberstack.com/reflection-allowed: "true" reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "namespace-1 ,namespace-2,namespace-[0-9]*"dados: ...
Exemplo de mapa de configuração de origem:
apiVersion: v1kind: ConfigMapmetadata: nome: source-config-map anotações: reflector.v1.k8s.emberstack.com/reflection-allowed: "true" reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "namespace -1,namespace-2,namespace-[0-9]*"dados: ...
Adicione reflector.v1.k8s.emberstack.com/reflects: "<source namespace>/<source name>"
ao objeto de espelho. O valor da anotação é o nome completo do objeto de origem no formato namespace/name
.
Nota: Adicione
reflector.v1.k8s.emberstack.com/reflected-version: ""
às anotações do recurso ao fazer qualquer alteração manual no espelho (por exemplo, ao implantar comhelm
ou reaplicar o script de implantação). Isto irá redefinir a versão refletida do espelho.
Exemplo de segredo de espelho:
apiVersion: v1kind: Secretmetadata: nome: mirror-secret annotations: reflector.v1.k8s.emberstack.com/reflects: "default/source-secret"data: ...
Exemplo de mapa de configuração de espelho:
apiVersion: v1kind: ConfigMapmetadata: nome: mirror-config-map anotações: reflector.v1.k8s.emberstack.com/reflects: "default/source-config-map"data: ...
O Reflector monitorará quaisquer alterações feitas nos objetos de origem e copiará os seguintes campos:
data
para segredos
data
e binaryData
para configmaps O Reflector rastreia o que foi copiado anotando espelhos com a versão do objeto de origem.
cert-manager
Desde a versão 1.5 do cert-manager você pode anotar segredos criados a partir de certificados para espelhamento usando
secretTemplate
(consulte 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: "" ...