k 8 sとconfigmap-安利configmap-reloadコンポーネント


前言
kubernetesクラスタ内で、ConfigMapがpod内にvolume形式でマウントされると、ConfigMapが更新され、kubernetesはpod内にマウントされたファイルの内容を自動的に同期します.もちろん、変更がすぐに発効するわけではありません.約10 S後に発効します.実際の本番使用例では、hot reload機能を備えている場合は、プロファイルの変更を監視するスクリプトを追加し、reload対応サービスを追加できます.例えばprometheus.今日はconfigmap-reloadコンポーネントを紹介します.
configmap-reload
configmap-reloadはrust言語で実現され、主な業務容器であるsidercarは、主にk 8 sにおける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 


USAGE:
    configmap-reload [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -l, --log_level                         log level: error|warn|info|debug|trace [default: info]
    -p, --path                            the config map volume directory to watch for updates [default: ]
    -m, --webhook_method 
            the HTTP method url to use to send the webhook: GET|POST [default: POST]

    -c, --webhook_status_code 
            the HTTP status code indicating successful triggering of reload [default: 200]

    -u, --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することができます.