namespace k8s { /// /// Extension methods for Kubernetes metrics. /// public static class KubernetesMetricsExtensions { /// /// Get nodes metrics pull from metrics server API. /// /// kubernetes client object /// the metrics public static async Task GetKubernetesNodesMetricsAsync(this IKubernetes kubernetes) { if (kubernetes is null) { throw new ArgumentNullException(nameof(kubernetes)); } var customObject = (JsonElement)await kubernetes.CustomObjects.GetClusterCustomObjectAsync("metrics.k8s.io", "v1beta1", "nodes", string.Empty).ConfigureAwait(false); return customObject.Deserialize(); } /// /// Get pods metrics pull from metrics server API. /// /// kubernetes client object /// the metrics public static async Task GetKubernetesPodsMetricsAsync(this IKubernetes kubernetes) { if (kubernetes is null) { throw new ArgumentNullException(nameof(kubernetes)); } var customObject = (JsonElement)await kubernetes.CustomObjects.GetClusterCustomObjectAsync("metrics.k8s.io", "v1beta1", "pods", string.Empty).ConfigureAwait(false); return customObject.Deserialize(); } /// /// Get pods metrics by namespace pull from metrics server API. /// /// kubernetes client object /// the querying namespace /// the metrics public static async Task GetKubernetesPodsMetricsByNamespaceAsync(this IKubernetes kubernetes, string namespaceParameter) { if (kubernetes is null) { throw new ArgumentNullException(nameof(kubernetes)); } var customObject = (JsonElement)await kubernetes.CustomObjects.GetNamespacedCustomObjectAsync("metrics.k8s.io", "v1beta1", namespaceParameter, "pods", string.Empty).ConfigureAwait(false); return customObject.Deserialize(); } } }