This is an automated email from the ASF dual-hosted git repository.
shenlin pushed a commit to branch feat/runtime-manager-backup
in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git
The following commit(s) were added to refs/heads/feat/runtime-manager-backup by
this push:
new c1c8676 feat:support run on k8s integration with framework.
c1c8676 is described below
commit c1c86762b7579289a61b83cc1663acef47b9a41c
Author: 2011shenlin <[email protected]>
AuthorDate: Sun Sep 22 15:04:28 2024 +0800
feat:support run on k8s integration with framework.
---
adapter/runtime-on-k8s/pom.xml | 11 +++++++
.../runtime/manager/k8s/api/KubectlService.java | 19 +++++++-----
.../k8s/config/K8SRuntimeConfiguration.java | 34 ++++++++++++++++++++++
.../repository/WorkerInstanceRepositoryOnK8S.java | 6 ++++
.../src/test/resources/application.properties | 4 ++-
start/pom.xml | 9 ++++++
6 files changed, 75 insertions(+), 8 deletions(-)
diff --git a/adapter/runtime-on-k8s/pom.xml b/adapter/runtime-on-k8s/pom.xml
index b0a1241..a9163a8 100644
--- a/adapter/runtime-on-k8s/pom.xml
+++ b/adapter/runtime-on-k8s/pom.xml
@@ -31,6 +31,11 @@
</properties>
<dependencies>
+ <dependency>
+ <groupId>org.jetbrains.kotlin</groupId>
+ <artifactId>kotlin-stdlib</artifactId>
+ <version>1.2.41</version>
+ </dependency>
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
@@ -47,6 +52,12 @@
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-eventbridge-adapter-runtime-manager</artifactId>
<version>1.0.0</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>rocketmq-client</artifactId>
+ <groupId>org.apache.rocketmq</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<!-- test dependencies -->
diff --git
a/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/api/KubectlService.java
b/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/api/KubectlService.java
index 1caed04..2222995 100644
---
a/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/api/KubectlService.java
+++
b/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/api/KubectlService.java
@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
+
import io.fabric8.kubernetes.client.Config;
@Slf4j
@@ -64,7 +65,11 @@ public class KubectlService implements AutoCloseable {
@PostConstruct
public void initClient() {
- client = getKubernetesClient();
+ try {
+ client = getKubernetesClient();
+ } catch (Throwable e) {
+ log.error("init kubectl client failed.",e);
+ }
}
public KubernetesClient getClient() {
@@ -98,17 +103,17 @@ public class KubectlService implements AutoCloseable {
Config config = null;
if (StringUtils.isNotBlank(accessKey) &&
StringUtils.isNotBlank(secretKey)) {
config = new ConfigBuilder()
- .withMasterUrl(apiServer)
- .withApiVersion(apiVersion)
- .build();
+ .withMasterUrl(apiServer)
+ .withApiVersion(apiVersion)
+ .build();
config.setUsername(accessKey);
config.setPassword(secretKey);
log.info("use ak and sk connect to api server.");
} else if (StringUtils.isNotBlank(oauthToken)) {
config = new ConfigBuilder()
- .withMasterUrl(apiServer)
- .withApiVersion(apiVersion)
- .build();
+ .withMasterUrl(apiServer)
+ .withApiVersion(apiVersion)
+ .build();
config.setTrustCerts(true);
config.setOauthToken(oauthToken);
log.info("use auth token connect to api server.");
diff --git
a/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/config/K8SRuntimeConfiguration.java
b/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/config/K8SRuntimeConfiguration.java
new file mode 100644
index 0000000..b93e526
--- /dev/null
+++
b/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/config/K8SRuntimeConfiguration.java
@@ -0,0 +1,34 @@
+/*
+ * 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.rocketmq.eventbridge.adapter.runtime.manager.k8s.config;
+
+import
org.apache.rocketmq.eventbridge.adapter.runtime.manager.k8s.api.K8SDeploymentService;
+import
org.apache.rocketmq.eventbridge.adapter.runtime.manager.k8s.repository.WorkerInstanceRepositoryOnK8S;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class K8SRuntimeConfiguration {
+
+ @Bean(name = "workerInstanceRepositoryOnK8S")
+ public WorkerInstanceRepositoryOnK8S
workerInstanceRepositoryOnK8S(@Qualifier("k8SDeploymentService")
K8SDeploymentService k8SDeploymentService, @Qualifier("deploySpecTemplateSpec")
DeploySpecTemplateSpec deploySpecTemplateSpec,
@Qualifier("k8SNameSpaceService")
org.apache.rocketmq.eventbridge.adapter.runtime.manager.k8s.api.K8SNameSpaceService
k8SNameSpaceService) {
+ return new WorkerInstanceRepositoryOnK8S(k8SDeploymentService,
deploySpecTemplateSpec, k8SNameSpaceService);
+ }
+
+}
\ No newline at end of file
diff --git
a/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/repository/WorkerInstanceRepositoryOnK8S.java
b/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/repository/WorkerInstanceRepositoryOnK8S.java
index cde8ea7..9176198 100644
---
a/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/repository/WorkerInstanceRepositoryOnK8S.java
+++
b/adapter/runtime-on-k8s/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/manager/k8s/repository/WorkerInstanceRepositoryOnK8S.java
@@ -92,6 +92,12 @@ public class WorkerInstanceRepositoryOnK8S implements
WorkerInstanceRepository {
@Autowired
private K8SNameSpaceService k8SNameSpaceService;
+ public WorkerInstanceRepositoryOnK8S(K8SDeploymentService
k8SDeploymentService, DeploySpecTemplateSpec deploySpecTemplateSpec,
K8SNameSpaceService k8SNameSpaceService) {
+ this.k8SDeploymentService = k8SDeploymentService;
+ this.deploySpecTemplateSpec = deploySpecTemplateSpec;
+ this.k8SNameSpaceService = k8SNameSpaceService;
+ }
+
@Override
public boolean applyWorkerInstance(String name, String image,
WorkerResource resources, Map<String, Object> environments) {
diff --git a/adapter/runtime-on-k8s/src/test/resources/application.properties
b/adapter/runtime-on-k8s/src/test/resources/application.properties
index 87076bc..3de532a 100644
--- a/adapter/runtime-on-k8s/src/test/resources/application.properties
+++ b/adapter/runtime-on-k8s/src/test/resources/application.properties
@@ -13,4 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-kubernates.api.server=https://kubernetes.docker.internal:6443
+#kubernates.api.server=https://kubernetes.docker.internal:6443
+
+#kubernates.kube.config=~/.kube/apache-rocketmq-eventbridge.config
\ No newline at end of file
diff --git a/start/pom.xml b/start/pom.xml
index 063b238..98a9340 100644
--- a/start/pom.xml
+++ b/start/pom.xml
@@ -106,6 +106,15 @@
<version>1.0.0</version>
</dependency>
</dependencies>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <artifactId>okhttp</artifactId>
+ <groupId>com.squareup.okhttp3</groupId>
+ <version>3.12.12</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
<build>
<finalName>rocketmq-eventbridge</finalName>