首先说说什么是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文件中
c.运行protobuf:compile taget文件夹能找到生成的java文件,然后考到src/main/java 如图:
4.起飞,在main函数调用Tiller的service方法,前提helm以及k8s都已有环境。如下是起飞main方法: