Home > Enterprise >  How to get status of custom resource using Kubernetes C# .net Client?
How to get status of custom resource using Kubernetes C# .net Client?

Time:10-06

I have created an Elasticsearch resource using the below yaml manifest after installing the eck-operator as mentioned here.

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 7.15.0
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false

After this manifest is applied, I can get the status manually by executing:

kubectl get elasticsearch -n ecknamespace

and the output would be as follows:

> $ kubectl get elasticsearch -n ecknamespace
  NAME          HEALTH   NODES  VERSION   PHASE   AGE 
  quickstart    green    3       7.15.0   Ready   3d17h

Using the Kubernetes C# Client, how do I get the above data programmatically?

CodePudding user response:

The client includes an example of how to interact with custom resources.

It will require you to define the classes described in the files cResource.cs and CustomResourceDefinition.cs.

Afterwards, the following code should list the elasticsearch resource:

var config = KubernetesClientConfiguration.BuildConfigFromConfigFile();
var client = new GenericClient(config,  "elasticsearch.k8s.elastic.co", "v1", "elasticsearches");
var elasticSearches = await client.ListNamespacedAsync<CustomResourceList<CResource>>("default").ConfigureAwait(false);
foreach (var es in elasticSearches.Items)
{
    Console.WriteLine(es.Metadata.Name);
}

EDIT after OP's comments: to view all fields of the custom resource, one needs to edit the CustomResource class (file CustomResourceDefinition.cs in the example) with the corresponding fields.

  • Related