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>

Reply via email to