You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@heron.apache.org by ni...@apache.org on 2020/06/29 08:38:43 UTC

[incubator-heron] branch nicknezis/k8s-service created (now 703a365)

This is an automated email from the ASF dual-hosted git repository.

nicknezis pushed a change to branch nicknezis/k8s-service
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git.


      at 703a365  Updates to Kubernetes scheduler

This branch includes the following new commits:

     new 703a365  Updates to Kubernetes scheduler

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-heron] 01/01: Updates to Kubernetes scheduler

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicknezis pushed a commit to branch nicknezis/k8s-service
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git

commit 703a36572c7a8387bc61c89e1b11ebf53f0e55bd
Author: Nicholas Nezis <ni...@gmail.com>
AuthorDate: Mon Jun 29 04:37:42 2020 -0400

    Updates to Kubernetes scheduler
---
 WORKSPACE                                          |   3 +-
 heron/executor/src/python/heron_executor.py        |   7 +-
 .../scheduler/kubernetes/KubernetesCompat.java     |  79 ------
 .../scheduler/kubernetes/KubernetesScheduler.java  |   2 +-
 .../{AppsV1Controller.java => V1Controller.java}   | 103 ++++---
 maven_install.json                                 | 312 ++++++++++++---------
 third_party/java/BUILD                             |   4 +-
 7 files changed, 252 insertions(+), 258 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 41cb1db..efacf86 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -54,7 +54,7 @@ jetty_version = "9.4.6.v20170531"
 
 jersey_version = "2.25.1"
 
-kubernetes_client_version = "7.0.0"
+kubernetes_client_version = "8.0.0"
 
 load("@rules_jvm_external//:defs.bzl", "maven_install")
 load("@rules_jvm_external//:specs.bzl", "maven")
@@ -81,7 +81,6 @@ maven_install(
         "org.apache.httpcomponents:httpclient:" + http_client_version,
         "org.apache.httpcomponents:httpmime:" + http_client_version,
         "com.google.apis:google-api-services-storage:v1-rev108-1.22.0",
-        "io.kubernetes:client-java:7.0.0",
         "com.microsoft.dhalion:dhalion:0.2.3",
         "org.objenesis:objenesis:2.1",
         "org.ow2.asm:asm-all:5.1",
diff --git a/heron/executor/src/python/heron_executor.py b/heron/executor/src/python/heron_executor.py
index 674c3fc..7b75b68 100755
--- a/heron/executor/src/python/heron_executor.py
+++ b/heron/executor/src/python/heron_executor.py
@@ -140,6 +140,9 @@ def log_pid_for_process(process_name, pid):
 def is_docker_environment():
   return os.path.isfile('/.dockerenv')
 
+def is_kubernetes_environment():
+  return 'POD_NAME' in os.environ
+
 def stdout_log_fn(cmd):
   """Simple function callback that is used to log the streaming output of a subprocess command
   :param cmd: the name of the command which will be added to the log line
@@ -229,7 +232,9 @@ class HeronExecutor(object):
     # Needed for Docker environments since the hostname of a docker container is the container's
     # id within docker, rather than the host's hostname. NOTE: this 'HOST' env variable is not
     # guaranteed to be set in all Docker executor environments (outside of Marathon)
-    if is_docker_environment():
+    if is_kubernetes_environment():
+        self.master_host = socket.getfqdn()
+    elif is_docker_environment():
       self.master_host = os.environ.get('HOST') if 'HOST' in os.environ else socket.gethostname()
     else:
       self.master_host = socket.gethostname()
diff --git a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/KubernetesCompat.java b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/KubernetesCompat.java
deleted file mode 100644
index 9ce5fba..0000000
--- a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/KubernetesCompat.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.heron.scheduler.kubernetes;
-
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.heron.scheduler.TopologyRuntimeManagementException;
-
-import io.kubernetes.client.openapi.ApiClient;
-import io.kubernetes.client.openapi.ApiException;
-import io.kubernetes.client.openapi.Configuration;
-import io.kubernetes.client.openapi.apis.CoreV1Api;
-
-import okhttp3.Response;
-
-public class KubernetesCompat {
-
-  private static final Logger LOG = Logger.getLogger(KubernetesCompat.class.getName());
-
-  boolean killTopology(String kubernetesUri, String topology, String namespace) {
-    CoreV1Api coreClient;
-    try {
-      final ApiClient apiClient = io.kubernetes.client.util.Config.defaultClient();
-      Configuration.setDefaultApiClient(apiClient);
-      coreClient = new CoreV1Api(apiClient);
-    } catch (IOException e) {
-      LOG.log(Level.SEVERE, "Failed to setup Kubernetes client" + e);
-      throw new RuntimeException(e);
-    }
-
-    // old version deployed topologies as naked pods
-    try {
-      final String labelSelector = KubernetesConstants.LABEL_TOPOLOGY + "=" + topology;
-      final Response response =
-          coreClient.deleteCollectionNamespacedPodCall(namespace, null, null, null, null, null,
-          null, labelSelector, null, null,
-          KubernetesConstants.DELETE_OPTIONS_PROPAGATION_POLICY,
-          null, null, null, null, null).execute();
-
-      if (response.isSuccessful()) {
-        LOG.log(Level.INFO, "Pods for the Job [" + topology
-            + "] in namespace [" + namespace + "] are deleted.");
-        return true;
-      } else {
-        LOG.log(Level.SEVERE, "Error when deleting the Pods of the job ["
-            + topology + "]: in namespace [" + namespace + "]");
-        LOG.log(Level.SEVERE, "Error killing topology message: " + response.message());
-        KubernetesUtils.logResponseBodyIfPresent(LOG, response);
-        throw new TopologyRuntimeManagementException(
-            KubernetesUtils.errorMessageFromResponse(response));
-      }
-    } catch (IOException | ApiException e) {
-      LOG.log(Level.SEVERE, "Error killing topology " + e.getMessage());
-      if (e instanceof ApiException) {
-        LOG.log(Level.SEVERE, "Error details:\n" +  ((ApiException) e).getResponseBody());
-      }
-      return false;
-    }
-  }
-}
diff --git a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/KubernetesScheduler.java b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/KubernetesScheduler.java
index 71545be..c35c87d 100644
--- a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/KubernetesScheduler.java
+++ b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/KubernetesScheduler.java
@@ -50,7 +50,7 @@ public class KubernetesScheduler implements IScheduler, IScalable {
   private UpdateTopologyManager updateTopologyManager;
 
   protected KubernetesController getController() {
-    return new AppsV1Controller(configuration, runtimeConfiguration);
+    return new V1Controller(configuration, runtimeConfiguration);
   }
 
   @Override
diff --git a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/AppsV1Controller.java b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
similarity index 86%
rename from heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/AppsV1Controller.java
rename to heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
index 8724034..30200284 100644
--- a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/AppsV1Controller.java
+++ b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
@@ -32,6 +32,9 @@ import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
+import com.sun.tools.javac.util.Log;
+import io.kubernetes.client.openapi.apis.CoreV1Api;
+import io.kubernetes.client.openapi.models.*;
 import org.apache.heron.api.utils.TopologyUtils;
 import org.apache.heron.scheduler.TopologyRuntimeManagementException;
 import org.apache.heron.scheduler.TopologySubmissionException;
@@ -48,39 +51,26 @@ import io.kubernetes.client.openapi.ApiClient;
 import io.kubernetes.client.openapi.ApiException;
 import io.kubernetes.client.openapi.Configuration;
 import io.kubernetes.client.openapi.apis.AppsV1Api;
-import io.kubernetes.client.openapi.models.V1Container;
-import io.kubernetes.client.openapi.models.V1ContainerPort;
-import io.kubernetes.client.openapi.models.V1EnvVar;
-import io.kubernetes.client.openapi.models.V1EnvVarSource;
-import io.kubernetes.client.openapi.models.V1LabelSelector;
-import io.kubernetes.client.openapi.models.V1ObjectFieldSelector;
-import io.kubernetes.client.openapi.models.V1ObjectMeta;
-import io.kubernetes.client.openapi.models.V1PodSpec;
-import io.kubernetes.client.openapi.models.V1PodTemplateSpec;
-import io.kubernetes.client.openapi.models.V1ResourceRequirements;
-import io.kubernetes.client.openapi.models.V1StatefulSet;
-import io.kubernetes.client.openapi.models.V1StatefulSetSpec;
-import io.kubernetes.client.openapi.models.V1Toleration;
-import io.kubernetes.client.openapi.models.V1Volume;
-import io.kubernetes.client.openapi.models.V1VolumeMount;
 
 import okhttp3.Response;
 
-public class AppsV1Controller extends KubernetesController {
+public class V1Controller extends KubernetesController {
 
   private static final Logger LOG =
-      Logger.getLogger(AppsV1Controller.class.getName());
+      Logger.getLogger(V1Controller.class.getName());
 
   private static final String ENV_SHARD_ID = "SHARD_ID";
 
   private final AppsV1Api appsClient;
+  private final CoreV1Api coreClient;
 
-  AppsV1Controller(Config configuration, Config runtimeConfiguration) {
+  V1Controller(Config configuration, Config runtimeConfiguration) {
     super(configuration, runtimeConfiguration);
     try {
       final ApiClient apiClient = io.kubernetes.client.util.Config.defaultClient();
       Configuration.setDefaultApiClient(apiClient);
       appsClient = new AppsV1Api(apiClient);
+      coreClient = new CoreV1Api(apiClient);
     } catch (IOException e) {
       LOG.log(Level.SEVERE, "Failed to setup Kubernetes client" + e);
       throw new RuntimeException(e);
@@ -96,6 +86,16 @@ public class AppsV1Controller extends KubernetesController {
 
     final Resource containerResource = getContainerResource(packingPlan);
 
+    final V1Service topologyService = createTopologyyService();
+    try {
+      final V1Service response =
+          coreClient.createNamespacedService(getNamespace(), topologyService, null,
+              null, null);
+    } catch (ApiException e) {
+      KubernetesUtils.logExceptionWithDetails(LOG, "Error creating topology service", e);
+      throw new TopologySubmissionException(e.getMessage());
+    }
+
     // find the max number of instances in a container so we can open
     // enough ports if remote debugging is enabled.
     int numberOfInstances = 0;
@@ -118,11 +118,9 @@ public class AppsV1Controller extends KubernetesController {
 
   @Override
   boolean killTopology() {
-    return
-        isStatefulSet()
-        ? deleteStatefulSet()
-        :
-        new KubernetesCompat().killTopology(getKubernetesUri(), getTopologyName(), getNamespace());
+    deleteStatefulSet();
+    deleteService();
+    return true;
   }
 
   @Override
@@ -199,6 +197,31 @@ public class AppsV1Controller extends KubernetesController {
         null, null, null);
   }
 
+  boolean deleteService() {
+    try {
+      final Response response = coreClient.deleteNamespacedServiceCall(getTopologyName(),
+          getNamespace(), null, null, 0, null,
+          KubernetesConstants.DELETE_OPTIONS_PROPAGATION_POLICY, null, null).execute();
+
+      if (response.isSuccessful()) {
+        LOG.log(Level.INFO, "Headless Service for the Job [" + getTopologyName()
+            + "] in namespace [" + getNamespace() + "] is deleted.");
+        return true;
+      } else {
+        LOG.log(Level.SEVERE, "Error when deleting the Service of the job ["
+            + getTopologyName() + "] in namespace [" + getNamespace() + "]");
+        LOG.log(Level.SEVERE, "Error killing topoogy message:" + response.message());
+        KubernetesUtils.logResponseBodyIfPresent(LOG, response);
+
+        throw new TopologyRuntimeManagementException(
+            KubernetesUtils.errorMessageFromResponse(response));
+      }
+    } catch (IOException | ApiException e) {
+      KubernetesUtils.logExceptionWithDetails(LOG, "Error deleting topology service", e);
+      return false;
+    }
+  }
+
   boolean deleteStatefulSet() {
     try {
       final Response response = appsClient.deleteNamespacedStatefulSetCall(getTopologyName(),
@@ -211,7 +234,7 @@ public class AppsV1Controller extends KubernetesController {
         return true;
       } else {
         LOG.log(Level.SEVERE, "Error when deleting the StatefulSet of the job ["
-            + getTopologyName() + "]: in namespace [" + getNamespace() + "]");
+            + getTopologyName() + "] in namespace [" + getNamespace() + "]");
         LOG.log(Level.SEVERE, "Error killing topology message: " + response.message());
         KubernetesUtils.logResponseBodyIfPresent(LOG, response);
 
@@ -224,18 +247,6 @@ public class AppsV1Controller extends KubernetesController {
     }
   }
 
-  boolean isStatefulSet() {
-    try {
-      final V1StatefulSet response =
-          appsClient.readNamespacedStatefulSet(getTopologyName(), getNamespace(),
-              null, null, null);
-      return response.getKind().equals("StatefulSet");
-    } catch (ApiException e) {
-      LOG.warning("isStatefulSet check " +  e.getMessage());
-    }
-    return false;
-  }
-
   protected List<String> getExecutorCommand(String containerId) {
     final Map<ExecutorPort, String> ports =
         KubernetesConstants.EXECUTOR_PORTS.entrySet()
@@ -262,6 +273,26 @@ public class AppsV1Controller extends KubernetesController {
     return String.format("%s=${POD_NAME##*-} && echo shardId=${%s}", ENV_SHARD_ID, ENV_SHARD_ID);
   }
 
+  private V1Service createTopologyyService() {
+    final String topologyName = getTopologyName();
+    final Config runtimeConfiguration = getRuntimeConfiguration();
+
+    final V1Service service = new V1Service();
+
+    // setup service metadata
+    final V1ObjectMeta objectMeta = new V1ObjectMeta();
+    objectMeta.name(topologyName);
+    service.setMetadata(objectMeta);
+
+    // create the headless service
+    final V1ServiceSpec serviceSpec = new V1ServiceSpec();
+    serviceSpec.clusterIP("None");
+    serviceSpec.setSelector(getMatchLabels(topologyName));
+
+    service.setSpec(serviceSpec);
+
+    return service;
+  }
 
   private V1StatefulSet createStatefulSet(Resource containerResource, int numberOfInstances) {
     final String topologyName = getTopologyName();
diff --git a/maven_install.json b/maven_install.json
index 699c990..e357628 100644
--- a/maven_install.json
+++ b/maven_install.json
@@ -1,6 +1,6 @@
 {
     "dependency_tree": {
-        "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": -512671146,
+        "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": 194489527,
         "conflict_resolution": {},
         "dependencies": [
             {
@@ -2204,20 +2204,20 @@
                 "url": "https://jcenter.bintray.com/io/gsonfire/gson-fire/1.8.3/gson-fire-1.8.3-sources.jar"
             },
             {
-                "coord": "io.kubernetes:client-java-api:7.0.0",
+                "coord": "io.kubernetes:client-java-api:8.0.0",
                 "dependencies": [
                     "io.swagger:swagger-annotations:1.5.22",
                     "joda-time:joda-time:2.9.3",
                     "com.squareup.okhttp3:okhttp:3.14.3",
                     "com.google.code.findbugs:jsr305:3.0.2",
-                    "io.sundr:resourcecify-annotations:0.19.2",
-                    "io.sundr:sundr-core:0.19.2",
+                    "io.sundr:sundr-core:0.21.0",
                     "org.apache.commons:commons-lang3:3.7",
+                    "io.sundr:builder-annotations:0.21.0",
+                    "io.sundr:sundr-codegen:0.21.0",
                     "com.squareup.okhttp3:logging-interceptor:3.14.3",
-                    "io.sundr:sundr-codegen:0.19.2",
                     "org.joda:joda-convert:1.2",
+                    "io.sundr:resourcecify-annotations:0.21.0",
                     "javax.annotation:javax.annotation-api:1.3.2",
-                    "io.sundr:builder-annotations:0.19.2",
                     "com.google.code.gson:gson:2.8.2",
                     "com.squareup.okio:okio:1.17.2",
                     "io.gsonfire:gson-fire:1.8.3"
@@ -2228,36 +2228,36 @@
                     "com.squareup.okhttp3:okhttp:3.14.3",
                     "com.google.code.findbugs:jsr305:3.0.2",
                     "org.apache.commons:commons-lang3:3.7",
+                    "io.sundr:builder-annotations:0.21.0",
                     "com.squareup.okhttp3:logging-interceptor:3.14.3",
                     "org.joda:joda-convert:1.2",
                     "javax.annotation:javax.annotation-api:1.3.2",
-                    "io.sundr:builder-annotations:0.19.2",
                     "com.google.code.gson:gson:2.8.2",
                     "io.gsonfire:gson-fire:1.8.3"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0.jar",
+                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0.jar",
-                    "https://maven.google.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0.jar",
-                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0.jar"
+                    "https://jcenter.bintray.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0.jar",
+                    "https://maven.google.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0.jar",
+                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0.jar"
                 ],
-                "sha256": "8affdb062e736f0aab64e5c1f0ba738d33bd04082f75437262aa024181c693d8",
-                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0.jar"
+                "sha256": "9f182ac8aebb00e800e0688a66fa7c21df0499a5a976d22e68c9af8d9a0b1c9c",
+                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0.jar"
             },
             {
-                "coord": "io.kubernetes:client-java-api:jar:sources:7.0.0",
+                "coord": "io.kubernetes:client-java-api:jar:sources:8.0.0",
                 "dependencies": [
-                    "io.sundr:resourcecify-annotations:jar:sources:0.19.2",
                     "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
                     "joda-time:joda-time:jar:sources:2.9.3",
-                    "io.sundr:builder-annotations:jar:sources:0.19.2",
-                    "io.sundr:sundr-codegen:jar:sources:0.19.2",
+                    "io.sundr:resourcecify-annotations:jar:sources:0.21.0",
+                    "io.sundr:sundr-codegen:jar:sources:0.21.0",
                     "org.apache.commons:commons-lang3:jar:sources:3.7",
                     "com.google.code.gson:gson:jar:sources:2.8.2",
                     "org.joda:joda-convert:jar:sources:1.2",
                     "com.squareup.okhttp3:logging-interceptor:jar:sources:3.14.3",
-                    "io.sundr:sundr-core:jar:sources:0.19.2",
                     "io.gsonfire:gson-fire:jar:sources:1.8.3",
+                    "io.sundr:sundr-core:jar:sources:0.21.0",
+                    "io.sundr:builder-annotations:jar:sources:0.21.0",
                     "io.swagger:swagger-annotations:jar:sources:1.5.22",
                     "com.squareup.okhttp3:okhttp:jar:sources:3.14.3",
                     "javax.annotation:javax.annotation-api:jar:sources:1.3.2",
@@ -2266,89 +2266,90 @@
                 "directDependencies": [
                     "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
                     "joda-time:joda-time:jar:sources:2.9.3",
-                    "io.sundr:builder-annotations:jar:sources:0.19.2",
                     "org.apache.commons:commons-lang3:jar:sources:3.7",
                     "com.google.code.gson:gson:jar:sources:2.8.2",
                     "org.joda:joda-convert:jar:sources:1.2",
                     "com.squareup.okhttp3:logging-interceptor:jar:sources:3.14.3",
                     "io.gsonfire:gson-fire:jar:sources:1.8.3",
+                    "io.sundr:builder-annotations:jar:sources:0.21.0",
                     "io.swagger:swagger-annotations:jar:sources:1.5.22",
                     "com.squareup.okhttp3:okhttp:jar:sources:3.14.3",
                     "javax.annotation:javax.annotation-api:jar:sources:1.3.2"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0-sources.jar",
+                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0-sources.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0-sources.jar",
-                    "https://maven.google.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0-sources.jar",
-                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0-sources.jar"
+                    "https://jcenter.bintray.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0-sources.jar",
+                    "https://maven.google.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0-sources.jar",
+                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0-sources.jar"
                 ],
-                "sha256": "09476d45d87c3a6e86e020994fc035b4c8f85b3858130f99a812e9baff7f242b",
-                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-api/7.0.0/client-java-api-7.0.0-sources.jar"
+                "sha256": "d22b31f794ed5a75abdbc8ab7632f2bf49a68d4ef290aa88395f2f6749e3ef4f",
+                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-api/8.0.0/client-java-api-8.0.0-sources.jar"
             },
             {
-                "coord": "io.kubernetes:client-java-proto:7.0.0",
+                "coord": "io.kubernetes:client-java-proto:8.0.0",
                 "dependencies": [
                     "com.google.protobuf:protobuf-java:3.4.0"
                 ],
                 "directDependencies": [
                     "com.google.protobuf:protobuf-java:3.4.0"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0.jar",
+                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0.jar",
-                    "https://maven.google.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0.jar",
-                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0.jar"
+                    "https://jcenter.bintray.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0.jar",
+                    "https://maven.google.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0.jar",
+                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0.jar"
                 ],
-                "sha256": "ac8f632f87b522dbdfbf0b93bcb70e0c72965c9b603f90b3f96294c9b20c90a1",
-                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0.jar"
+                "sha256": "730860866481f3dac5771bb774cdd0a1a4a8e2aa6d8b15d533875d71564623be",
+                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0.jar"
             },
             {
-                "coord": "io.kubernetes:client-java-proto:jar:sources:7.0.0",
+                "coord": "io.kubernetes:client-java-proto:jar:sources:8.0.0",
                 "dependencies": [
                     "com.google.protobuf:protobuf-java:jar:sources:3.4.0"
                 ],
                 "directDependencies": [
                     "com.google.protobuf:protobuf-java:jar:sources:3.4.0"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0-sources.jar",
+                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0-sources.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0-sources.jar",
-                    "https://maven.google.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0-sources.jar",
-                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0-sources.jar"
+                    "https://jcenter.bintray.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0-sources.jar",
+                    "https://maven.google.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0-sources.jar",
+                    "https://repo1.maven.org/maven2/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0-sources.jar"
                 ],
-                "sha256": "639c7a4810d8ab62568fae2bddd7c417777be40fa7d4ef57206f5b0a4cb36e28",
-                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-proto/7.0.0/client-java-proto-7.0.0-sources.jar"
+                "sha256": "c97699e7ce794d3ef9eb80310ce2d2003978d823877c0e35a03732649ad8f396",
+                "url": "https://jcenter.bintray.com/io/kubernetes/client-java-proto/8.0.0/client-java-proto-8.0.0-sources.jar"
             },
             {
-                "coord": "io.kubernetes:client-java:7.0.0",
+                "coord": "io.kubernetes:client-java:8.0.0",
                 "dependencies": [
                     "io.swagger:swagger-annotations:1.5.22",
                     "joda-time:joda-time:2.9.3",
                     "org.yaml:snakeyaml:1.15",
                     "com.squareup.okhttp3:okhttp:3.14.3",
                     "com.google.code.findbugs:jsr305:3.0.2",
-                    "io.sundr:resourcecify-annotations:0.19.2",
+                    "io.sundr:sundr-core:0.21.0",
                     "org.slf4j:slf4j-api:1.7.30",
                     "org.apache.commons:commons-compress:1.14",
-                    "io.sundr:sundr-core:0.19.2",
                     "commons-codec:commons-codec:1.11",
                     "org.bouncycastle:bcpkix-jdk15on:1.61",
                     "org.apache.commons:commons-lang3:3.7",
-                    "io.kubernetes:client-java-api:7.0.0",
+                    "io.sundr:builder-annotations:0.21.0",
                     "org.apache.commons:commons-collections4:4.1",
+                    "io.sundr:sundr-codegen:0.21.0",
                     "com.google.protobuf:protobuf-java:3.4.0",
                     "com.squareup.okhttp3:logging-interceptor:3.14.3",
                     "com.google.guava:guava:18.0",
-                    "io.sundr:sundr-codegen:0.19.2",
                     "org.joda:joda-convert:1.2",
+                    "io.sundr:resourcecify-annotations:0.21.0",
+                    "io.kubernetes:client-java-api:8.0.0",
                     "javax.annotation:javax.annotation-api:1.3.2",
-                    "io.sundr:builder-annotations:0.19.2",
                     "com.google.code.gson:gson:2.8.2",
                     "org.bouncycastle:bcprov-ext-jdk15on:1.61",
                     "com.squareup.okio:okio:1.17.2",
                     "org.bouncycastle:bcprov-jdk15on:jar:1.61",
                     "io.gsonfire:gson-fire:1.8.3",
-                    "io.kubernetes:client-java-proto:7.0.0"
+                    "io.kubernetes:client-java-proto:8.0.0",
+                    "org.bitbucket.b_c:jose4j:0.7.0"
                 ],
                 "directDependencies": [
                     "org.yaml:snakeyaml:1.15",
@@ -2357,47 +2358,49 @@
                     "commons-codec:commons-codec:1.11",
                     "org.bouncycastle:bcpkix-jdk15on:1.61",
                     "org.apache.commons:commons-lang3:3.7",
-                    "io.kubernetes:client-java-api:7.0.0",
                     "org.apache.commons:commons-collections4:4.1",
                     "com.google.protobuf:protobuf-java:3.4.0",
                     "com.google.guava:guava:18.0",
+                    "io.kubernetes:client-java-api:8.0.0",
                     "org.bouncycastle:bcprov-ext-jdk15on:1.61",
-                    "io.kubernetes:client-java-proto:7.0.0"
+                    "io.kubernetes:client-java-proto:8.0.0",
+                    "org.bitbucket.b_c:jose4j:0.7.0"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0.jar",
+                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0.jar",
-                    "https://maven.google.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0.jar",
-                    "https://repo1.maven.org/maven2/io/kubernetes/client-java/7.0.0/client-java-7.0.0.jar"
+                    "https://jcenter.bintray.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0.jar",
+                    "https://maven.google.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0.jar",
+                    "https://repo1.maven.org/maven2/io/kubernetes/client-java/8.0.0/client-java-8.0.0.jar"
                 ],
-                "sha256": "a25aa34c70b088cade3fea315c05cace896f7164c94ee41e94268197cb2fe7dc",
-                "url": "https://jcenter.bintray.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0.jar"
+                "sha256": "3680962144c792ce2cfbe49e3cafc432a1e17c55417e6b40afc1a0a0ecbf42e2",
+                "url": "https://jcenter.bintray.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0.jar"
             },
             {
-                "coord": "io.kubernetes:client-java:jar:sources:7.0.0",
+                "coord": "io.kubernetes:client-java:jar:sources:8.0.0",
                 "dependencies": [
-                    "io.sundr:resourcecify-annotations:jar:sources:0.19.2",
                     "com.google.code.findbugs:jsr305:jar:sources:3.0.2",
                     "joda-time:joda-time:jar:sources:2.9.3",
-                    "io.sundr:builder-annotations:jar:sources:0.19.2",
-                    "io.kubernetes:client-java-api:jar:sources:7.0.0",
+                    "io.sundr:resourcecify-annotations:jar:sources:0.21.0",
+                    "io.sundr:sundr-codegen:jar:sources:0.21.0",
+                    "io.kubernetes:client-java-proto:jar:sources:8.0.0",
                     "org.slf4j:slf4j-api:jar:sources:1.7.30",
                     "org.yaml:snakeyaml:jar:sources:1.15",
-                    "io.sundr:sundr-codegen:jar:sources:0.19.2",
                     "org.apache.commons:commons-lang3:jar:sources:3.7",
                     "com.google.guava:guava:jar:sources:18.0",
-                    "io.kubernetes:client-java-proto:jar:sources:7.0.0",
                     "org.apache.commons:commons-compress:jar:sources:1.14",
                     "com.google.code.gson:gson:jar:sources:2.8.2",
                     "org.bouncycastle:bcpkix-jdk15on:jar:sources:1.61",
                     "org.joda:joda-convert:jar:sources:1.2",
                     "com.squareup.okhttp3:logging-interceptor:jar:sources:3.14.3",
-                    "io.sundr:sundr-core:jar:sources:0.19.2",
+                    "org.bitbucket.b_c:jose4j:jar:sources:0.7.0",
                     "io.gsonfire:gson-fire:jar:sources:1.8.3",
+                    "io.sundr:sundr-core:jar:sources:0.21.0",
                     "commons-codec:commons-codec:jar:sources:1.11",
+                    "io.kubernetes:client-java-api:jar:sources:8.0.0",
                     "org.apache.commons:commons-collections4:jar:sources:4.1",
                     "org.bouncycastle:bcprov-ext-jdk15on:jar:sources:1.61",
                     "com.google.protobuf:protobuf-java:jar:sources:3.4.0",
+                    "io.sundr:builder-annotations:jar:sources:0.21.0",
                     "org.bouncycastle:bcprov-jdk15on:jar:sources:1.61",
                     "io.swagger:swagger-annotations:jar:sources:1.5.22",
                     "com.squareup.okhttp3:okhttp:jar:sources:3.14.3",
@@ -2405,27 +2408,28 @@
                     "com.squareup.okio:okio:jar:sources:1.17.2"
                 ],
                 "directDependencies": [
-                    "io.kubernetes:client-java-api:jar:sources:7.0.0",
+                    "io.kubernetes:client-java-proto:jar:sources:8.0.0",
                     "org.slf4j:slf4j-api:jar:sources:1.7.30",
                     "org.yaml:snakeyaml:jar:sources:1.15",
                     "org.apache.commons:commons-lang3:jar:sources:3.7",
                     "com.google.guava:guava:jar:sources:18.0",
-                    "io.kubernetes:client-java-proto:jar:sources:7.0.0",
                     "org.apache.commons:commons-compress:jar:sources:1.14",
                     "org.bouncycastle:bcpkix-jdk15on:jar:sources:1.61",
+                    "org.bitbucket.b_c:jose4j:jar:sources:0.7.0",
                     "commons-codec:commons-codec:jar:sources:1.11",
+                    "io.kubernetes:client-java-api:jar:sources:8.0.0",
                     "org.apache.commons:commons-collections4:jar:sources:4.1",
                     "org.bouncycastle:bcprov-ext-jdk15on:jar:sources:1.61",
                     "com.google.protobuf:protobuf-java:jar:sources:3.4.0"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0-sources.jar",
+                "file": "v1/https/jcenter.bintray.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0-sources.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0-sources.jar",
-                    "https://maven.google.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0-sources.jar",
-                    "https://repo1.maven.org/maven2/io/kubernetes/client-java/7.0.0/client-java-7.0.0-sources.jar"
+                    "https://jcenter.bintray.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0-sources.jar",
+                    "https://maven.google.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0-sources.jar",
+                    "https://repo1.maven.org/maven2/io/kubernetes/client-java/8.0.0/client-java-8.0.0-sources.jar"
                 ],
-                "sha256": "4b901cf00ed9ef9bc0bde52c9246cf7e759d8b872fe4425833c5b0fc15bd6f67",
-                "url": "https://jcenter.bintray.com/io/kubernetes/client-java/7.0.0/client-java-7.0.0-sources.jar"
+                "sha256": "078bd7dcf01001b81ea7ddd52644459c8360a8e1c21dcbb3b43c7e869bf4f920",
+                "url": "https://jcenter.bintray.com/io/kubernetes/client-java/8.0.0/client-java-8.0.0-sources.jar"
             },
             {
                 "coord": "io.netty:netty-all:4.1.22.Final",
@@ -2506,148 +2510,148 @@
                 "url": "https://jcenter.bintray.com/io/netty/netty/3.10.6.Final/netty-3.10.6.Final-sources.jar"
             },
             {
-                "coord": "io.sundr:builder-annotations:0.19.2",
+                "coord": "io.sundr:builder-annotations:0.21.0",
                 "dependencies": [
-                    "io.sundr:sundr-core:0.19.2",
-                    "io.sundr:resourcecify-annotations:0.19.2",
-                    "io.sundr:sundr-codegen:0.19.2"
+                    "io.sundr:sundr-codegen:0.21.0",
+                    "io.sundr:sundr-core:0.21.0",
+                    "io.sundr:resourcecify-annotations:0.21.0"
                 ],
                 "directDependencies": [
-                    "io.sundr:resourcecify-annotations:0.19.2",
-                    "io.sundr:sundr-codegen:0.19.2",
-                    "io.sundr:sundr-core:0.19.2"
+                    "io.sundr:resourcecify-annotations:0.21.0",
+                    "io.sundr:sundr-codegen:0.21.0",
+                    "io.sundr:sundr-core:0.21.0"
                 ],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2.jar",
-                    "https://maven.google.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2.jar"
+                    "https://jcenter.bintray.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0.jar",
+                    "https://maven.google.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0.jar"
                 ],
-                "sha256": "a0483c5d51b4c90d1245911a4a97ac398087aea7f4518d51fcadbfa02987f6ad",
-                "url": "https://jcenter.bintray.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2.jar"
+                "sha256": "ff8aff3afbdc4d5cc98cea05bb84bf864b98faed29b481e1f70d984482b4f605",
+                "url": "https://jcenter.bintray.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0.jar"
             },
             {
-                "coord": "io.sundr:builder-annotations:jar:sources:0.19.2",
+                "coord": "io.sundr:builder-annotations:jar:sources:0.21.0",
                 "dependencies": [
-                    "io.sundr:sundr-core:jar:sources:0.19.2",
-                    "io.sundr:resourcecify-annotations:jar:sources:0.19.2",
-                    "io.sundr:sundr-codegen:jar:sources:0.19.2"
+                    "io.sundr:sundr-core:jar:sources:0.21.0",
+                    "io.sundr:resourcecify-annotations:jar:sources:0.21.0",
+                    "io.sundr:sundr-codegen:jar:sources:0.21.0"
                 ],
                 "directDependencies": [
-                    "io.sundr:resourcecify-annotations:jar:sources:0.19.2",
-                    "io.sundr:sundr-codegen:jar:sources:0.19.2",
-                    "io.sundr:sundr-core:jar:sources:0.19.2"
+                    "io.sundr:resourcecify-annotations:jar:sources:0.21.0",
+                    "io.sundr:sundr-codegen:jar:sources:0.21.0",
+                    "io.sundr:sundr-core:jar:sources:0.21.0"
                 ],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2-sources.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0-sources.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2-sources.jar",
-                    "https://maven.google.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2-sources.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2-sources.jar"
+                    "https://jcenter.bintray.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0-sources.jar",
+                    "https://maven.google.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0-sources.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0-sources.jar"
                 ],
-                "sha256": "7fa9bd12f8a07cabdbc2139caf16da2ee0f1aa7cbe79887d32fc9639fc2afadf",
-                "url": "https://jcenter.bintray.com/io/sundr/builder-annotations/0.19.2/builder-annotations-0.19.2-sources.jar"
+                "sha256": "d6c50f681dd37d3909f0f2ce7171a336e75b3b23f119a359bf038498925db066",
+                "url": "https://jcenter.bintray.com/io/sundr/builder-annotations/0.21.0/builder-annotations-0.21.0-sources.jar"
             },
             {
-                "coord": "io.sundr:resourcecify-annotations:0.19.2",
+                "coord": "io.sundr:resourcecify-annotations:0.21.0",
                 "dependencies": [],
                 "directDependencies": [],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2.jar",
-                    "https://maven.google.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2.jar"
+                    "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0.jar",
+                    "https://maven.google.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0.jar"
                 ],
-                "sha256": "d1875bd9d01e9af67258abdf9cad9596b238f8269b82191c6e2f4f0beec0430d",
-                "url": "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2.jar"
+                "sha256": "bfb03d80456f76c1e32b11bd7ded59ab46bf26c0079bd37cff8093d4386d1081",
+                "url": "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0.jar"
             },
             {
-                "coord": "io.sundr:resourcecify-annotations:jar:sources:0.19.2",
+                "coord": "io.sundr:resourcecify-annotations:jar:sources:0.21.0",
                 "dependencies": [],
                 "directDependencies": [],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2-sources.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0-sources.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2-sources.jar",
-                    "https://maven.google.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2-sources.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2-sources.jar"
+                    "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0-sources.jar",
+                    "https://maven.google.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0-sources.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0-sources.jar"
                 ],
-                "sha256": "ca068a5a0d2d86d6f70a707c92f7ee218d85d69b8d98a2b523aa1c42d2f7ac21",
-                "url": "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.19.2/resourcecify-annotations-0.19.2-sources.jar"
+                "sha256": "5f565f8299f4cc021b0b1efd93d7d411b6d45bab5e76637afa1099f563457541",
+                "url": "https://jcenter.bintray.com/io/sundr/resourcecify-annotations/0.21.0/resourcecify-annotations-0.21.0-sources.jar"
             },
             {
-                "coord": "io.sundr:sundr-codegen:0.19.2",
+                "coord": "io.sundr:sundr-codegen:0.21.0",
                 "dependencies": [],
                 "directDependencies": [],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2.jar",
-                    "https://maven.google.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2.jar"
+                    "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0.jar",
+                    "https://maven.google.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0.jar"
                 ],
-                "sha256": "ede82207d5f3727ebfb4489bdb0e2d1cfc43bba355118494ab1e00d31ee50da3",
-                "url": "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2.jar"
+                "sha256": "3dd7902f10b8c308d1d0217c5bfe1248365c60d8fdcda15639cad69209ecd8cb",
+                "url": "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0.jar"
             },
             {
-                "coord": "io.sundr:sundr-codegen:jar:sources:0.19.2",
+                "coord": "io.sundr:sundr-codegen:jar:sources:0.21.0",
                 "dependencies": [],
                 "directDependencies": [],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2-sources.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0-sources.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2-sources.jar",
-                    "https://maven.google.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2-sources.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2-sources.jar"
+                    "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0-sources.jar",
+                    "https://maven.google.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0-sources.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0-sources.jar"
                 ],
-                "sha256": "3fbe1591da58f354c4b715105d52f3fb58e324bf7a559b69a005e0ba8c551f00",
-                "url": "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.19.2/sundr-codegen-0.19.2-sources.jar"
+                "sha256": "db4e56cf990124c490ced8157c615df1abb30ff21bc55b95ded8dc7e29f870b5",
+                "url": "https://jcenter.bintray.com/io/sundr/sundr-codegen/0.21.0/sundr-codegen-0.21.0-sources.jar"
             },
             {
-                "coord": "io.sundr:sundr-core:0.19.2",
+                "coord": "io.sundr:sundr-core:0.21.0",
                 "dependencies": [],
                 "directDependencies": [],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2.jar",
-                    "https://maven.google.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2.jar"
+                    "https://jcenter.bintray.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0.jar",
+                    "https://maven.google.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0.jar"
                 ],
-                "sha256": "1d2677342e669f7d693a6dbe32a9ddad3217ee503058fd8414fcbb5523810eb8",
-                "url": "https://jcenter.bintray.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2.jar"
+                "sha256": "8c6a6dd85479d192f6acff660faee04d2857613d10afa97bdfba44f04178f2ad",
+                "url": "https://jcenter.bintray.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0.jar"
             },
             {
-                "coord": "io.sundr:sundr-core:jar:sources:0.19.2",
+                "coord": "io.sundr:sundr-core:jar:sources:0.21.0",
                 "dependencies": [],
                 "directDependencies": [],
                 "exclusions": [
                     "com.sun:tools"
                 ],
-                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2-sources.jar",
+                "file": "v1/https/jcenter.bintray.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0-sources.jar",
                 "mirror_urls": [
-                    "https://jcenter.bintray.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2-sources.jar",
-                    "https://maven.google.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2-sources.jar",
-                    "https://repo1.maven.org/maven2/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2-sources.jar"
+                    "https://jcenter.bintray.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0-sources.jar",
+                    "https://maven.google.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0-sources.jar",
+                    "https://repo1.maven.org/maven2/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0-sources.jar"
                 ],
-                "sha256": "26ecfe115cce2513affcf64e7baf65b16f65758415853ee849ab047fff78c4ac",
-                "url": "https://jcenter.bintray.com/io/sundr/sundr-core/0.19.2/sundr-core-0.19.2-sources.jar"
+                "sha256": "1ef356fb62aee8b203d10d48e199ffe532560e976f867e6088a463380c3a538b",
+                "url": "https://jcenter.bintray.com/io/sundr/sundr-core/0.21.0/sundr-core-0.21.0-sources.jar"
             },
             {
                 "coord": "io.swagger:swagger-annotations:1.5.22",
@@ -6018,6 +6022,40 @@
                 "url": "https://jcenter.bintray.com/org/asynchttpclient/netty-resolver/2.0.31/netty-resolver-2.0.31-sources.jar"
             },
             {
+                "coord": "org.bitbucket.b_c:jose4j:0.7.0",
+                "dependencies": [
+                    "org.slf4j:slf4j-api:1.7.30"
+                ],
+                "directDependencies": [
+                    "org.slf4j:slf4j-api:1.7.30"
+                ],
+                "file": "v1/https/jcenter.bintray.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0.jar",
+                "mirror_urls": [
+                    "https://jcenter.bintray.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0.jar",
+                    "https://maven.google.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0.jar",
+                    "https://repo1.maven.org/maven2/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0.jar"
+                ],
+                "sha256": "eb14f69c0395d4a106c6c46fe6dff080c4608ccabc99b1f03933d374383d9bbe",
+                "url": "https://jcenter.bintray.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0.jar"
+            },
+            {
+                "coord": "org.bitbucket.b_c:jose4j:jar:sources:0.7.0",
+                "dependencies": [
+                    "org.slf4j:slf4j-api:jar:sources:1.7.30"
+                ],
+                "directDependencies": [
+                    "org.slf4j:slf4j-api:jar:sources:1.7.30"
+                ],
+                "file": "v1/https/jcenter.bintray.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0-sources.jar",
+                "mirror_urls": [
+                    "https://jcenter.bintray.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0-sources.jar",
+                    "https://maven.google.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0-sources.jar",
+                    "https://repo1.maven.org/maven2/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0-sources.jar"
+                ],
+                "sha256": "8d04c27bbda1dc9eeb860a389fe3ddb50d29b0ae85a04526b97792220c2ab283",
+                "url": "https://jcenter.bintray.com/org/bitbucket/b_c/jose4j/0.7.0/jose4j-0.7.0-sources.jar"
+            },
+            {
                 "coord": "org.bouncycastle:bcpkix-jdk15on:1.61",
                 "dependencies": [
                     "org.bouncycastle:bcprov-jdk15on:jar:1.61"
diff --git a/third_party/java/BUILD b/third_party/java/BUILD
index 04c221d..8d1331e 100644
--- a/third_party/java/BUILD
+++ b/third_party/java/BUILD
@@ -227,10 +227,10 @@ java_library(
     name = "apache-pulsar-client",
     srcs = ["Empty.java"],
     exports = [
-        "@maven//:org_apache_pulsar_pulsar_client_shaded",
+        "@maven//:org_apache_pulsar_pulsar_client",
     ],
     deps = [
-        "@maven//:org_apache_pulsar_pulsar_client_shaded",
+        "@maven//:org_apache_pulsar_pulsar_client",
     ],
 )