kata-monitor: talk to the container engine via the CRI

kata-monitor uses containerd client to retrieve information from the
container engine. This makes kata-monitor work with the containerd
container engine only.
Bin Liu (bin <bin@hyper.sh>) worked on a kata-monitor version able
to talk to any container engine leveraging the standard CRI[1].
Here, the original work of Bin Lui has been adapted on the current
kata-monitor to make it container engine independent.

[1] https://github.com/liubin/kata-containers/tree/fix/1030-use-cri-in-kata-monitor

Fixes: #1030
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
This commit is contained in:
Francesco Giudici
2021-07-02 08:47:02 +02:00
parent eac05ad6d6
commit c2f03e8993
10 changed files with 283 additions and 452 deletions

View File

@@ -9,7 +9,7 @@ import (
"flag"
"net/http"
"os"
"runtime"
goruntime "runtime"
"text/template"
"time"
@@ -18,8 +18,7 @@ import (
)
var monitorListenAddr = flag.String("listen-address", ":8090", "The address to listen on for HTTP requests.")
var containerdAddr = flag.String("containerd-address", "/run/containerd/containerd.sock", "Containerd address to accept client requests.")
var containerdConfig = flag.String("containerd-conf", "/etc/containerd/config.toml", "Containerd config file.")
var runtimeEndpoint = flag.String("runtime-endpoint", "/run/containerd/containerd.sock", `Endpoint of CRI container runtime service. (default: "/run/containerd/containerd.sock")`)
var logLevel = flag.String("log-level", "info", "Log level of logrus(trace/debug/info/warn/error/fatal/panic).")
// These values are overridden via ldflags
@@ -59,9 +58,9 @@ func main() {
ver := versionInfo{
AppName: appName,
Version: version,
GoVersion: runtime.Version(),
Os: runtime.GOOS,
Arch: runtime.GOARCH,
GoVersion: goruntime.Version(),
Os: goruntime.GOOS,
Arch: goruntime.GOARCH,
GitCommit: GitCommit,
}
@@ -85,16 +84,15 @@ func main() {
"git-commit": ver.GitCommit,
// properties from command-line options
"listen-address": *monitorListenAddr,
"containerd-address": *containerdAddr,
"containerd-conf": *containerdConfig,
"log-level": *logLevel,
"listen-address": *monitorListenAddr,
"runtime-endpoint": *runtimeEndpoint,
"log-level": *logLevel,
}
logrus.WithFields(announceFields).Info("announce")
// create new kataMonitor
km, err := kataMonitor.NewKataMonitor(*containerdAddr, *containerdConfig)
km, err := kataMonitor.NewKataMonitor(*runtimeEndpoint)
if err != nil {
panic(err)
}