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:44 UTC

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

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",
     ],
 )