Kubernetes helm API 客户端文件生成和远程调用

首先说说什么是helm,引用helm原话“The Kubernetes Package Manager”—— k8s的包管理器。

2.为何要用helm?or 用helm有什么好处?

用过k8s的人都知道,k8s的replicationcontroller、service、pod 这些的创建都需要一个配置的yaml文件,而如果你的环境比较繁琐时你会有很多yaml,如果你想修改某个值且这个值用的地方很多那么问题就来了,真心显得比较麻烦。如果你要更新部署呢?那么就更是麻烦了,而helm可以帮你解决这些麻烦。还有一个优点是helm 已经有很多开源应用的库。

For 想了解更多的同学们:这里有两个连接 一个是k8s的 一个是helm的网站。k8s:点击打开链接  helm github:点击打开链接

3. 使用maven gRPC插件生成helm (Till) 客户端sdk(实际是一堆Java 文件)

a、建立maven 项目配置maven gRPC 插件,配置如下:

<project xmlns="" xmlns:xsi=""
  xsi:schemaLocation=" ">
  <modelVersion>4.0.0</modelVersion>
  <groupId>chinacloud.com.cn</groupId>
  <artifactId>grpc</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>grpc Maven Webapp</name>
  <url></url>

<properties>
    <grpc.version>1.0.3</grpc.version>
  </properties>

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- gRPC -->
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-netty</artifactId>
      <version>${grpc.version}</version>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-protobuf</artifactId>
      <version>${grpc.version}</version>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-stub</artifactId>
      <version>${grpc.version}</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>grpc</finalName>
    <extensions>
      <extension>
        <groupId>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <version>1.4.1.Final</version>
      </extension>
    </extensions>

<plugins>
      <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build
        itself. -->
      <plugin>
        <groupId>org.eclipse.m2e</groupId>
        <artifactId>lifecycle-mapping</artifactId>
        <version>1.0.0</version>
        <configuration>
          <lifecycleMappingMetadata>
            <pluginExecutions>
              <pluginExecution>
                <pluginExecutionFilter>
                  <groupId>
                    org.apache.maven.plugins
                  </groupId>
                  <artifactId>
                    maven-compiler-plugin
                  </artifactId>
                  <versionRange>
                    [2.5.1,)
                  </versionRange>
                  <goals>
                    <goal>compile</goal>
                  </goals>
                </pluginExecutionFilter>
                <action>
                  <ignore></ignore>
                </action>
              </pluginExecution>
            </pluginExecutions>
          </lifecycleMappingMetadata>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.xolstice.maven.plugins</groupId>
        <artifactId>protobuf-maven-plugin</artifactId>
        <version>0.5.0</version>
        <configuration>
          <protocArtifact>com.google.protobuf:protoc:3.0.2:exe:${os.detected.classifier}</protocArtifact>
          <pluginId>grpc-java</pluginId>
          <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>compile-custom</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

b.在helm 官网 找到Tiller 的hapi proto文件用来生成java 代码,同时把这些文件放在src/main/proto文件中

Kubernetes helm API 客户端文件生成和远程调用



c.运行protobuf:compile taget文件夹能找到生成的java文件,然后考到src/main/java 如图:

Kubernetes helm API 客户端文件生成和远程调用


4.起飞,在main函数调用Tiller的service方法,前提helm以及k8s都已有环境。如下是起飞main方法:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b0bcf3daa84f9e7e587839e1f80d0faf.html