From 2a30a1d83bab412c3b7ec94788f366a3dd115897 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Mon, 4 Mar 2019 16:05:20 -0800 Subject: [PATCH 1/2] Improve README.md with better example and descriptions. --- README.md | 97 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 81 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 7d436e68b..94e4c6b25 100644 --- a/README.md +++ b/README.md @@ -10,33 +10,74 @@ dotnet add package KubernetesClient ``` -# Generating the Client Code +# Usage -## Prerequisites +## Authentication/Configuration +You should be able to use an standard KubeConfig file with this library, +see the `BuildConfigFromConfigFile` function below. Most authentication +methods are currently supported, but a few are not, see the +[known-issues](https://github.com/kubernetes-client/csharp#known-issues) -You'll need a Linux machine with Docker. +You should also be able to authenticate using the in-cluster service +account using the `InClusterConfig` function shown below. -The generated code works on all platforms supported by .NET or .NET Core. +## Sample Code -Check out the generator project into some other directory -(henceforth `$GEN_DIR`) +### Creating the client +```c# +// Load from the default kubeconfig on the machine. +var config = KubernetesClientConfiguration.BuildConfigFromConfigFile(); -```bash -cd $GEN_DIR/.. -git clone https://github.com/kubernetes-client/gen +// Load from a specific file: +var config = KubernetesClientConfiguration.BuildConfigFromConfigFile(Environment.GetEnvironmentVariable("KUBECONFIG")); + +// Load from in-cluster configuration: +var config = KubernetesClientConfiguration.InClusterConfig() + +// Use the config object to create a client. +var client = new Kubernetes(config); ``` -## Generating code +### Listing Objects +```c# +var namespaces = client.ListNamespace(); +foreach (var ns in namespaces.Items) { + Console.WriteLine(ns.Metadata.Name); + var list = client.ListNamespacedPod(ns.Metadata.Name); + foreach (var item in list.Items) + { + Console.WriteLine(item.Metadata.Name); + } +} +``` -```bash -# Where REPO_DIR points to the root of the csharp repository -cd ${REPO_DIR}/csharp/src/KubernetesClient -${GEN_DIR}/openapi/csharp.sh generated ../csharp.settings +### Creating and Deleting Objects +```c# +var ns = new V1Namespace +{ + Metadata = new V1ObjectMeta + { + Name = "test" + } +}; + +var result = client.CreateNamespace(ns); +Console.WriteLine(result); + +var result = client.CreateNamespace(ns); +Console.WriteLine(result); + +var status = client.DeleteNamespace(ns.Metadata.Name, new V1DeleteOptions()); ``` -# Usage +### Deleting Objects +```c# + +## Examples -## Running the Examples +There is extensive example code in the [examples directory](https://github.com/kubernetes-client/csharp/tree/master/examples). + +### Running the Examples ```bash git clone git@github.com:kubernetes-client/csharp.git @@ -80,6 +121,30 @@ dotnet restore dotnet test ``` +# Generating the Client Code + +## Prerequisites + +You'll need a Linux machine with Docker. + +The generated code works on all platforms supported by .NET or .NET Core. + +Check out the generator project into some other directory +(henceforth `$GEN_DIR`) + +```bash +cd $GEN_DIR/.. +git clone https://github.com/kubernetes-client/gen +``` + +## Generating code + +```bash +# Where REPO_DIR points to the root of the csharp repository +cd ${REPO_DIR}/csharp/src/KubernetesClient +${GEN_DIR}/openapi/csharp.sh generated ../csharp.settings +``` + ## Contributing Please see [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on how to contribute. From de5f1cfcb2ce4471c2c3b7afdd61037fa5d5c2b6 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Tue, 5 Mar 2019 21:58:35 -0800 Subject: [PATCH 2/2] Address comments. --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 94e4c6b25..45bf1b358 100644 --- a/README.md +++ b/README.md @@ -64,15 +64,9 @@ var ns = new V1Namespace var result = client.CreateNamespace(ns); Console.WriteLine(result); -var result = client.CreateNamespace(ns); -Console.WriteLine(result); - var status = client.DeleteNamespace(ns.Metadata.Name, new V1DeleteOptions()); ``` -### Deleting Objects -```c# - ## Examples There is extensive example code in the [examples directory](https://github.com/kubernetes-client/csharp/tree/master/examples).