private async Task <string[]> GetFreeTierDeployments(IKubernetes client, CancellationToken cancellationToken = default)
        {
            var deployments = await K8sOperations.ListAllDeployments(client, "default");

            var freeDeployments = deployments.Where(d => d.Spec.Replicas == 1).Select(d => d.Metadata.Name).ToArray();

            return(freeDeployments);
        }
        protected override async Task OnExecuteAsync(CommandLineApplication app)
        {
            if (!ValidateParameters())
            {
                return;
            }
            var kubeClientCache = new KubernetesClientCache();
            var kubeClient      = kubeClientCache.Get("CheckPods", File.ReadAllText(this.K8sConfig));
            var pods            = await K8sOperations.ListPodsAsync(kubeClient, "default");

            var freeTierDeployArray = await GetFreeTierDeployments(kubeClient);

            var mdmClient  = new MdmClient(MdmClientCertPath, MdmClientCertPasswd, Region);
            var podMetrics = await mdmClient.GetDimensionCountMetricsAsync(MetricsName, TimeSpan.FromHours(1), "InstanceId");

            if (podMetrics == null)
            {
                Console.WriteLine($"Fail to get metrics for {Region}");
                return;
            }
            bool foundFreeTier = false;

            Parallel.ForEach(pods, pod =>
            {
                bool isFreeTier = isFreeTierPod(freeTierDeployArray, pod.Metadata.Name);
                if (isFreeTier)
                {
                    foundFreeTier = true;
                }
                var hasMetrics = podMetrics.TryGetValue(pod.Metadata.Name, out double count);
                if (!hasMetrics)
                {
                    if (isFreeTier)
                    {
                        Console.WriteLine($"Free pod {pod.Metadata.Name} miss metrics");
                    }
                    else
                    {
                        Console.WriteLine($"{pod.Metadata.Name} miss metrics");
                    }
                }
            });
            if (!foundFreeTier)
            {
                Console.WriteLine("Does not see free tier");
            }
        }