利用Reloader 实现configmap或secret变更后Pod等自动重启

300 阅读1分钟

Reloader可以观察ConfigMap和Secret的变化,并对Pod及其相关的DeploymentConfigs、Deployments、Daemonsets Statefulsets和Rollout进行滚动升级。

部署到kubernetes

  • 直接部署
kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml
  • Kustomize部署

编辑kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
  - https://github.com/stakater/Reloader/deployments/kubernetes

namespace: reloader
  • Helm部署
helm repo add stakater https://stakater.github.io/stakater-charts
helm repo update
helm install stakater/reloader 

或者下载helm 根据需要修改values.yaml
helm pull https://stakater.github.io/stakater-charts  stakater/reloader
tar xvf reloader-v1.0.24.tar
helm install -name reloader -n default ./reloader

详细参数可查看:Reloader, 默认:Reloader watches in all namespaces

配置annotations

  • 自动检测所有命名空间下的变化,实现滚动升级

可以在DeploymentConfigsDeploymentsDaemonsetsStatefulsets 和 Rollouts 中的 annotations添加如下内容:

kind: Deployment
metadata:
  annotations:
    reloader.stakater.com/auto: "true"
spec:
  template:
    metadata:
  • 限制只检查带有特殊annotations的变化,实现滚动升级

先在DeploymentConfigsDeploymentsDaemonsetsStatefulsets 和 Rollouts 中的 annotations添加如下内容:

kind: Deployment
metadata:
  annotations:
    reloader.stakater.com/search: "true"
spec:
  template:
    metadata:

其次在 ConfigMap 或者 Secret 中的 annotations 中添加如下内容:

kind: ConfigMap
metadata:
  annotations:
    reloader.stakater.com/match: "true"
data:
  key: value
  • 检测指定的 ConfigMap 或者 Secret 的变化,实现滚动升级

DeploymentConfigsDeploymentsDaemonsetsStatefulsets 和 Rollouts 中的 annotations添加如下内容:

kind: Deployment
metadata:
  annotations:
    configmap.reloader.stakater.com/reload: "foo-configmap,bar-configmap,baz-configmap"
    secret.reloader.stakater.com/reload: "foo-secret,bar-secret,baz-secret"
spec:
  template: 
    metadata: