Skip to content

Improve README.md with better example and descriptions. #250

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 22, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 75 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,68 @@
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();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: We should prefer showing the async methods to the blocking ones. It is easy to translate in either direction of course, but we should set the expectation that async is the 'normal' way to do it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the examples are all sync right now. Let's do this in a separate PR.

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 status = client.DeleteNamespace(ns.Metadata.Name, new V1DeleteOptions());
```

# Usage
## Examples

There is extensive example code in the [examples directory](https://github.com/kubernetes-client/csharp/tree/master/examples).

## Running the Examples
### Running the Examples

```bash
git clone [email protected]:kubernetes-client/csharp.git
Expand Down Expand Up @@ -80,6 +115,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.