内容简介:在kubernetes集群内,当ConfigMap以volume形式挂载到pod内时,更新ConfigMap,kubernetes会自动同步被挂载到pod内的文件内容。当然并不是更改立即生效的,大约是需要10S钟后,才会生效。实际生产使用案例中,假如你的应用具备hot reload 功能, 这时可以增加一些监测配置文件变更的脚本,然后reload对应服务。比如prometheus。今天就给大家介绍一个configmap-reload 组件。输入参数可以通过configmap-reload -h 获取:
前言
在kubernetes集群内,当ConfigMap以volume形式挂载到pod内时,更新ConfigMap,kubernetes会自动同步被挂载到pod内的文件内容。当然并不是更改立即生效的,大约是需要10S钟后,才会生效。实际生产使用案例中,假如你的应用具备hot reload 功能, 这时可以增加一些监测配置文件变更的脚本,然后reload对应服务。比如prometheus。今天就给大家介绍一个configmap-reload 组件。
configmap-reload
configmap-reload 采用rust语言实现,作为主业务容器的sidercar,主要用于k8s当中监听configmap的变化,待变化后通过http接口的方式通知主业务。在资源消耗上,更小。具体如下:
[root@ip-172-xx-xx-10 src]# kubectl top pods NAME CPU(cores) MEMORY(bytes) configmap-reload-6bbbb8b45b-7zg2x 0m 1Mi
输入参数可以通过configmap-reload -h 获取:
configmap-reload 0.1.0
gaohj <gaohj2015@yeah.net>
USAGE:
configmap-reload [OPTIONS]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-l, --log_level <LOG_LEVEL> log level: error|warn|info|debug|trace [default: info]
-p, --path <VOLUME_PATH> the config map volume directory to watch for updates [default: ]
-m, --webhook_method <WEBHOOK_METHOD>
the HTTP method url to use to send the webhook: GET|POST [default: POST]
-c, --webhook_status_code <WEBHOOK_STATUS_CODE>
the HTTP status code indicating successful triggering of reload [default: 200]
-u, --webhook_url <WEBHOOK_URL> the HTTP method url to use to send the webhook [default: ]
示例使用:
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: configmap-reload
name: configmap-reload-cm
data:
test.ini: |-
key: a
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: configmap-reload
labels:
app: configmap-reload
spec:
replicas: 1
selector:
matchLabels:
app: configmap-reload
template:
metadata:
labels:
app: configmap-reload
spec:
volumes:
- name: config
configMap:
name: configmap-reload-cm
containers:
- name: configmap-reload
image: 'iyacontrol/configmap-reload:v0.1'
command:
- configmap-reload
args:
- -l
- debug
- -p
- /etc/test/
- -c
- '200'
- -u
- https://www.baidu.com
volumeMounts:
- name: config
mountPath: /etc/test/
imagePullPolicy: Always
---
总结
大家直接可以拉取 dockerhub 中的镜像。
当然仓库中已经提供了Dockerfile文件,
FROM clux/muslrust:stable as builder
WORKDIR /configmap-reload
COPY ./ ./
ARG use_mirror
RUN if [ $use_mirror ]; then \
mkdir -p $HOME/.cargo; \
mv -f ./docker/cargo_config $HOME/.cargo/config; \
fi
RUN cargo build --release
#####################################
FROM alpine:latest as prod
RUN apk add --no-cache ca-certificates
COPY --from=0 /configmap-reload/target/x86_64-unknown-linux-musl/release/configmap-reload /usr/bin/configmap-reload
RUN chmod +x /usr/bin/configmap-reload
ENTRYPOINT ["configmap-reload"]
大家可以自己打镜像,然后push到自己的仓库中。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- React 组件模式-有状态组件 x 无状态组件、容器组件 x 展示组件、高阶组件 x 渲染回调(函数作为子组件)
- Serverless 组件开发尝试:全局变量组件和单独部署组件
- angular自定义组件-UI组件篇-switch组件
- React Hooks 源码解析(一):类组件、函数组件、纯组件
- Vue动态组件和异步组件
- Vue 动态组件 & 异步组件原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java in a Nutshell, 6th Edition
Benjamin J Evans、David Flanagan / O'Reilly Media / 2014-10 / USD 59.99
The latest edition of Java in a Nutshell is designed to help experienced Java programmers get the most out of Java 7 and 8, but it's also a learning path for new developers. Chock full of examples tha......一起来看看 《Java in a Nutshell, 6th Edition》 这本书的介绍吧!