Skip to content

dropwizard/dropwizard-kubernetes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dropwizard-kubernetes

Build Status Coverage Status Maven Central

Provides easy integration for Dropwizard applications with the Fabric8 Kubernetes API client.

This bundle comes with out-of-the-box support for:

For more information on the Kubernetes API, take a look at the official documentation here: https://kubernetes.io/docs/reference/#api-reference

Dropwizard Version Support Matrix

dropwizard-kubernetes Dropwizard v1.3.x Dropwizard v2.0.x Dropwizard v2.1.x Dropwizard v3.0.x Dropwizard v4.0.x
v1.3.x
v1.4.x
v1.5.x
v3.0.x
v4.0.x

Usage

Add dependency on library.

Maven:

<dependency>
  <groupId>io.dropwizard.modules</groupId>
  <artifactId>dropwizard-kubernetes</artifactId>
  <version>${dropwizard-kubernetes.version}</version>
</dependency>

Gradle:

compile "io.dropwizard.modules:dropwizard-kubernetes:$dropwizardKubernetesVersion"

Usage

In your application's Configuration class, add a KubernetesClientFactory object:

public class ExampleConfiguration extends Configuration {
    ...

    @Valid
    @NotNull
    @JsonProperty("kubernetes-client")
    private KubernetesClientFactory kubernetesClientFactory;

    public KubernetesClientFactory getKubernetesClientFactory() {
        return kubernetesClientFactory;
    }

    public void setKubernetesClientFactory(final KubernetesClientFactory kubernetesClientFactory) {
        this.kubernetesClientFactory = kubernetesClientFactory;
    }
}

Add a KubernetesClientBundle to the Boostrap object in your initialize method:

private final KubernetesClientBundle<ExampleConfiguration> kubernetesClient = new KubernetesClientBundle<ExampleConfiguration>() {
    @Override
    public KubernetesClientFactory getKubernetesClientFactory(ExampleConfiguration configuration) {
        return configuration.getKubernetesClientFactory();
    }
};

@Override
public void initialize(Bootstrap<ExampleConfiguration> bootstrap) {
    bootstrap.addBundle(kubernetesClient);
}

@Override
public void run(ExampleConfiguration config, Environment environment) {
    final KubernetesAPIThing kubernetesAPIThing = new KubernetesAPIThing(kubernetesClient.getKubernetesClient());
    environment.jersey().register(new KubernetesAPIThingResource(kubernetesAPIThing));
}

Configure your factory in your config.yml file:

kubernetes-client:
  name: my-k8s-usecase
  config:
    masterUrl: https://localhost:443
    apiVersion: v1
    namespace: default
    currentContext: my-context
    userAgent: generic-crud-app
  requestConfig:
    watchReconnectInterval: 3s
    watchReconnectLimit: 25
    connectionTimeout: 10s
    requestTimeout: 4s
    rollingTimeout: 5s
    scaleTimeout: 6s
    webSocketTimeout: 3s
    webSocketPingInterval: 10s
    loggingInterval: 20s
  httpClient:
    followRedirects: false
    followSslRedirects: false
    proxy:
      url: "https://127.0.0.1:6379"
      username: admin
      password: hunter2
    security:
      trustCerts: true
      caCert:
        type: string
        caCert: abc123def456
      trustStore: src/test/resources/truststore.p12
      trustStorePassword: changeit
    interceptors:
      - type: backwards-compatibility
      - type: oauth
        oAuthToken:
          type: string
          token: 123abc456def

Support

Please file bug reports and feature requests in GitHub issues.