public async Task DeleteCRD(CustomResourceDefinition crd)
        {
            var resp = await this._client.DeleteAsync($"/apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{crd.Metadata.Name}");

            if (resp.StatusCode != HttpStatusCode.OK)
            {
                var err = await resp.Content.ReadAsStringAsync();

                this._logger?.LogError($"Failure deleting CRD: {err}");
                return;
            }

            // TODO: Investigate how to wait for Kube to commit the objects on etcd before move forward without those delays.
            await Task.Delay(300);
        }
        public async Task <CustomResourceDefinition> CreateCRD(CustomResourceDefinition crd)
        {
            var resp = await this._client.PostAsync(CRD_ENDPOINT,
                                                    new StringContent(JsonConvert.SerializeObject(crd, _jsonSettings),
                                                                      _encoding, MEDIA_TYPE));

            if (resp.StatusCode != HttpStatusCode.OK &&
                resp.StatusCode != HttpStatusCode.Created)
            {
                var err = await resp.Content.ReadAsStringAsync();

                this._logger?.LogError($"Failure creating CRD: {err}");
                return(null);
            }

            var json = await resp.Content.ReadAsStringAsync();

            // TODO: Investigate how to wait for Kube to commit the objects on etcd before move forward without those delays.
            await Task.Delay(300);

            return(JsonConvert.DeserializeObject <CustomResourceDefinition>(json));
        }