diff --git a/cmd/admin-handlers.go b/cmd/admin-handlers.go index 91bc31b84..a65a2a117 100644 --- a/cmd/admin-handlers.go +++ b/cmd/admin-handlers.go @@ -57,7 +57,8 @@ import ( ) const ( - maxEConfigJSONSize = 262272 + maxEConfigJSONSize = 262272 + kubernetesVersionEndpoint = "https://kubernetes.default.svc/version" ) // Only valid query params for mgmt admin APIs. @@ -1768,6 +1769,36 @@ func getServerInfo(ctx context.Context, r *http.Request) madmin.InfoMessage { } } +func getKubernetesInfo(dctx context.Context) madmin.KubernetesInfo { + ctx, cancel := context.WithCancel(dctx) + defer cancel() + + ki := madmin.KubernetesInfo{} + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, kubernetesVersionEndpoint, nil) + if err != nil { + ki.Error = err.Error() + return ki + } + + client := &http.Client{ + Transport: NewGatewayHTTPTransport(), + Timeout: 10 * time.Second, + } + + resp, err := client.Do(req) + if err != nil { + ki.Error = err.Error() + return ki + } + + decoder := json.NewDecoder(resp.Body) + if err := decoder.Decode(&ki); err != nil { + ki.Error = err.Error() + } + return ki +} + // HealthInfoHandler - GET /minio/admin/v3/healthinfo // ---------- // Get server health info @@ -1855,6 +1886,13 @@ func (a adminAPIHandlers) HealthInfoHandler(w http.ResponseWriter, r *http.Reque info.SetAddr(anonAddr(info.GetAddr())) } + getAndWritePlatformInfo := func() { + if IsKubernetes() { + healthInfo.Sys.KubernetesInfo = getKubernetesInfo(deadlinedCtx) + partialWrite(healthInfo) + } + } + getAndWriteCPUs := func() { if query.Get("syscpu") == "true" { localCPUInfo := madmin.GetCPUs(deadlinedCtx, globalLocalNodeName) @@ -2177,6 +2215,7 @@ func (a adminAPIHandlers) HealthInfoHandler(w http.ResponseWriter, r *http.Reque defer close(healthInfoCh) partialWrite(healthInfo) // Write first message with only version and deployment id populated + getAndWritePlatformInfo() getAndWriteCPUs() getAndWritePartitions() getAndWriteOSInfo() diff --git a/go.mod b/go.mod index 7a94b873d..c75731d45 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/minio/dperf v0.3.6 github.com/minio/highwayhash v1.0.2 github.com/minio/kes v0.19.2 - github.com/minio/madmin-go v1.3.12 + github.com/minio/madmin-go v1.3.13 github.com/minio/minio-go/v7 v7.0.24 github.com/minio/pkg v1.1.23 github.com/minio/selfupdate v0.4.0 diff --git a/go.sum b/go.sum index be35389e7..e38a15b1e 100644 --- a/go.sum +++ b/go.sum @@ -614,8 +614,8 @@ github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLT github.com/minio/kes v0.19.2 h1:0kdMAgLMSkiDA33k8pMHC7d6erDuseuLrZF+N3017SM= github.com/minio/kes v0.19.2/go.mod h1:X2fMkDbAkjbSKDGOQZvyPkHxoG7nuzP6R78Jw+TzXtM= github.com/minio/madmin-go v1.3.5/go.mod h1:vGKGboQgGIWx4DuDUaXixjlIEZOCIp6ivJkQoiVaACc= -github.com/minio/madmin-go v1.3.12 h1:7SmK/KtT7+d3hn3VcYBqI/c4yETfXV9gRT1j+g/U1jE= -github.com/minio/madmin-go v1.3.12/go.mod h1:ez87VmMtsxP7DRxjKJKD4RDNW+nhO2QF9KSzwxBDQ98= +github.com/minio/madmin-go v1.3.13 h1:157u3bFK9qh2EkkqjpJ/bwOw/5KonXUWqhKP3ZczAdY= +github.com/minio/madmin-go v1.3.13/go.mod h1:ez87VmMtsxP7DRxjKJKD4RDNW+nhO2QF9KSzwxBDQ98= github.com/minio/mc v0.0.0-20220419155441-cc4ff3a0cc82 h1:CiTaWFwpxzjd7A3sUQ0xZEX8sWfZh3/k2qbxuPip05s= github.com/minio/mc v0.0.0-20220419155441-cc4ff3a0cc82/go.mod h1:h6VCl43/2AUA3RP1GWUVMqcUiXq2NWJ4+dSei+ibf70= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=