使用version-checker检查你集群中的镜像是不是最新版本

简介

version-checker是一个k8s的小工具,可以把k8s中运行的pods镜像版本和远程的镜像仓库的版本进行对比,来提示你镜像是不是最新的

目前支持的上游仓库

  • ACR
  • Docker Hub
  • ECR
  • GCR (inc gcr facades such as k8s.gcr.io)
  • Quay
  • Self Hosted (Docker V2 API compliant registries, e.g. registry, artifactory etc.). Multiple self hosted registries can be configured at once.

因为中国网络的特殊性,所以如果你使用gcr或者quay等镜像仓库,体验可能不会很好

项目地址

https://github.com/jetstack/version-checker

部署

首先version-checker是没有arm64版本的目前,所以我需要clone到本地然后使用droneci去构建,如果你也是和我一样的可以参考下面的drone ci配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
---
kind: pipeline
type: kubernetes
name: version-check

platform:
  os: linux

steps:
- name: build
  image: dockerproxy.com/library/golang:latest
  commands:
    - export GO111MODULE=on
    - export GOPROXY=https://goproxy.cn
    - export CGO_ENABLED=0
    - mkdir ./build/
    - go build -o ./build/version-checker ./cmd/.

  
- name: docker  
  image: plugins/docker
  privileged: true
  settings:
    username: user
    password: pass
    repo: git.bboysoul.cn/container/version-checker
    registry: git.bboysoul.cn
    tags:
      - latest
      - v0.2.1

之后就是部署

所有的yaml可以在这里找到

https://github.com/jetstack/version-checker/tree/master/deploy/yaml

修改镜像为自己编译之后的镜像部署就好了

然后在prometheus中加入一个job

1
2
3
      - job_name: 'version-checker'
        static_configs:
        - targets: ['version-checker.version-checker.svc.cluster.local:8080']

官方提供了一个grafana的面板

https://grafana.com/grafana/dashboards/12833-version-checker/

注意的是如果默认,version-check只会检查annotation中带有

enable.version-checker.io/*my-container*

的pods,如果你想检查所有pods可以在yaml中加入-a参数

1
2
3
4
5
6
7
8
      serviceAccountName: version-checker
      containers:
      - image: git.bboysoul.cn/container/version-checker:v0.2.1
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
        name: version-checker
        command: ["version-checker","-a"]

欢迎关注我的博客 www.bboy.app

Have Fun