* adding details for all official client libraries . there are six official client libraries for kubernetes. Added details and example for each language .Fix for issue #16906 * few typos and syntax mistakes resolved * Update access-cluster-api.md * removing extra code from haskell clientpull/17013/head^2
parent
6e2683269a
commit
ef602a8bc5
|
@ -156,8 +156,7 @@ with future high-availability support.
|
|||
|
||||
### Programmatic access to the API
|
||||
|
||||
Kubernetes officially supports client libraries for [Go](#go-client) and
|
||||
[Python](#python-client).
|
||||
Kubernetes officially supports client libraries for [Go](#go-client), [Python](#python-client), [Java](#java-client), [dotnet](#dotnet-client), [Javascript](#javascript-client), and [Haskell](#haskell-client). There are other client libraries that are provided and maintained by their authors, not the Kubernetes team. See [client libraries](/docs/reference/using-api/client-libraries/) for accessing the API from other languages and how they authenticate.
|
||||
|
||||
#### Go client
|
||||
|
||||
|
@ -214,9 +213,144 @@ for i in ret.items:
|
|||
print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
|
||||
```
|
||||
|
||||
#### Other languages
|
||||
#### Java client
|
||||
|
||||
There are [client libraries](/docs/reference/using-api/client-libraries/) for accessing the API from other languages. See documentation for other libraries for how they authenticate.
|
||||
* To install the [Java Client](https://github.com/kubernetes-client/java), simply execute :
|
||||
|
||||
```shell
|
||||
# Clone java library
|
||||
git clone --recursive https://github.com/kubernetes-client/java
|
||||
|
||||
# Installing project artifacts, POM etc:
|
||||
cd java
|
||||
mvn install
|
||||
```
|
||||
|
||||
See [https://github.com/kubernetes-client/java/releases](https://github.com/kubernetes-client/java/releases) to see which versions are supported.
|
||||
|
||||
The Java client can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
|
||||
as the kubectl CLI does to locate and authenticate to the API server. See this [example](https://github.com/kubernetes-client/java/blob/master/examples/src/main/java/io/kubernetes/client/examples/KubeConfigFileClientExample.java):
|
||||
|
||||
```java
|
||||
package io.kubernetes.client.examples;
|
||||
|
||||
import io.kubernetes.client.ApiClient;
|
||||
import io.kubernetes.client.ApiException;
|
||||
import io.kubernetes.client.Configuration;
|
||||
import io.kubernetes.client.apis.CoreV1Api;
|
||||
import io.kubernetes.client.models.V1Pod;
|
||||
import io.kubernetes.client.models.V1PodList;
|
||||
import io.kubernetes.client.util.ClientBuilder;
|
||||
import io.kubernetes.client.util.KubeConfig;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* A simple example of how to use the Java API from an application outside a kubernetes cluster
|
||||
*
|
||||
* <p>Easiest way to run this: mvn exec:java
|
||||
* -Dexec.mainClass="io.kubernetes.client.examples.KubeConfigFileClientExample"
|
||||
*
|
||||
*/
|
||||
public class KubeConfigFileClientExample {
|
||||
public static void main(String[] args) throws IOException, ApiException {
|
||||
|
||||
// file path to your KubeConfig
|
||||
String kubeConfigPath = "~/.kube/config";
|
||||
|
||||
// loading the out-of-cluster config, a kubeconfig from file-system
|
||||
ApiClient client =
|
||||
ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath))).build();
|
||||
|
||||
// set the global default api-client to the in-cluster one from above
|
||||
Configuration.setDefaultApiClient(client);
|
||||
|
||||
// the CoreV1Api loads default api-client from global configuration.
|
||||
CoreV1Api api = new CoreV1Api();
|
||||
|
||||
// invokes the CoreV1Api client
|
||||
V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null);
|
||||
System.out.Println("Listing all pods: ");
|
||||
for (V1Pod item : list.getItems()) {
|
||||
System.out.println(item.getMetadata().getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### dotnet client
|
||||
|
||||
To use [dotnet client](https://github.com/kubernetes-client/csharp), run the following command: `dotnet add package KubernetesClient --version 1.6.1` See [dotnet Client Library page](https://github.com/kubernetes-client/csharp) for more installation options. See [https://github.com/kubernetes-client/csharp/releases](https://github.com/kubernetes-client/csharp/releases) to see which versions are supported.
|
||||
|
||||
The dotnet client can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
|
||||
as the kubectl CLI does to locate and authenticate to the API server. See this [example](https://github.com/kubernetes-client/csharp/blob/master/examples/simple/PodList.cs):
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
using k8s;
|
||||
|
||||
namespace simple
|
||||
{
|
||||
internal class PodList
|
||||
{
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
var config = KubernetesClientConfiguration.BuildDefaultConfig();
|
||||
IKubernetes client = new Kubernetes(config);
|
||||
Console.WriteLine("Starting Request!");
|
||||
|
||||
var list = client.ListNamespacedPod("default");
|
||||
foreach (var item in list.Items)
|
||||
{
|
||||
Console.WriteLine(item.Metadata.Name);
|
||||
}
|
||||
if (list.Items.Count == 0)
|
||||
{
|
||||
Console.WriteLine("Empty!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### JavaScript client
|
||||
|
||||
To install [JavaScript client](https://github.com/kubernetes-client/javascript), run the following command: `npm install @kubernetes/client-node`. See [https://github.com/kubernetes-client/javascript/releases](https://github.com/kubernetes-client/javascript/releases) to see which versions are supported.
|
||||
|
||||
The JavaScript client can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
|
||||
as the kubectl CLI does to locate and authenticate to the API server. See this [example](https://github.com/kubernetes-client/javascript/blob/master/examples/example.js):
|
||||
|
||||
```javascript
|
||||
const k8s = require('@kubernetes/client-node');
|
||||
|
||||
const kc = new k8s.KubeConfig();
|
||||
kc.loadFromDefault();
|
||||
|
||||
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
|
||||
|
||||
k8sApi.listNamespacedPod('default').then((res) => {
|
||||
console.log(res.body);
|
||||
});
|
||||
```
|
||||
|
||||
#### Haskell client
|
||||
|
||||
See [https://github.com/kubernetes-client/haskell/releases](https://github.com/kubernetes-client/haskell/releases) to see which versions are supported.
|
||||
|
||||
The [Haskell client](https://github.com/kubernetes-client/haskell) can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
|
||||
as the kubectl CLI does to locate and authenticate to the API server. See this [example](https://github.com/kubernetes-client/haskell/blob/master/kubernetes-client/example/App.hs):
|
||||
|
||||
```haskell
|
||||
exampleWithKubeConfig :: IO ()
|
||||
exampleWithKubeConfig = do
|
||||
oidcCache <- atomically $ newTVar $ Map.fromList []
|
||||
(mgr, kcfg) <- mkKubeClientConfig oidcCache $ KubeConfigFile "/path/to/kubeconfig"
|
||||
dispatchMime
|
||||
mgr
|
||||
kcfg
|
||||
(CoreV1.listPodForAllNamespaces (Accept MimeJSON))
|
||||
>>= print
|
||||
```
|
||||
|
||||
|
||||
### Accessing the API from within a Pod
|
||||
|
|
Loading…
Reference in New Issue