我们正在使用fabric8
maven插件来将maven项目构建和部署到kubernetes中。
我不太清楚如何使用fabric8:helm
目标。
我试图获得有关其确切功能的详细信息,但我不太了解:
$ mvn help:describe -Dgoal=helm -DgroupId=io.fabric8 -DartifactId=fabric8-maven-plugin -Ddetail
这是输出:
fabric8:helm
Description: Generates a Helm chart for the kubernetes resources
Implementation: io.fabric8.maven.plugin.mojo.build.HelmMojo
Language: java
Bound to phase: pre-integration-test
Available parameters:
helm
(no description available)
kubernetesManifest (Default:
${basedir}/target/classes/META-INF/fabric8/kubernetes.yml)
User property: fabric8.kubernetesManifest
The generated kubernetes YAML file
kubernetesTemplate (Default:
${basedir}/target/classes/META-INF/fabric8/k8s-template.yml)
User property: fabric8.kubernetesTemplate
The generated kubernetes YAML file
skip (Default: false)
User property: fabric8.skip
(no description available)
...
在我们的项目中,我们在src/main/fabric8
中没有工件。该文件夹的内容为:
tree src/main/fabric8
src/main/fabric8
├── forum-configmap.yaml
├── forum-deployment.yaml
├── forum-route.yaml
└── forum-service.yaml
这些是仅与kubernetes相关的文件。
我在那边找不到任何代码段
答案 0 :(得分:1)
只是为了解决这个问题,我抓取了一个具有Web依赖关系的基本spring boot项目和一个用spring initializr创建的RestController。 fabric8 plugin docs说首先要运行资源目标,所以我进入了项目的基本目录并运行了mvn -B io.fabric8:fabric8-maven-plugin:3.5.41:resource
。在/target/classes/META-INF/fabric8/
下为我的项目生成了kubernetes描述符。
因此,我运行了mvn -B io.fabric8:fabric8-maven-plugin:3.5.41:resource io.fabric8:fabric8-maven-plugin:3.5.41:helm
。刚开始我遇到一个错误:
target/classes/META-INF/fabric8/k8s-template does not exist so cannot make chart <project_name>. Probably you need run 'mvn fabric8:resource' before.
但是描述符确实存在于/target/classes/META-INF/fabric8/kubernetes/
下,所以我只是将该目录重命名为k8s-template
并再次运行。然后,它在/target/fabric8/helm/kubernetes/
目录中为我创建了一个舵图。
所以我跟随the docs literally,然后跑了helm install target/fabric8/helm/kubernetes/
。那抱怨没有Chart.yaml。那时,我意识到我太在乎文档,因此需要运行helm install target/fabric8/helm/kubernetes/<project_name>
。确实确实创建了头盔版本并将我的项目安装到kubernetes。它没有启动,因为我还没有创建任何docker映像。它似乎默认为图像名称<groupId>/<artifactId>:<version/snapshot-number>
。如果我还要运行'build' goal和push目标并且让我的kubernetes可以访问Docker注册表,那么大概就在那里。
因此,简而言之,掌舵目标会生成基本的掌舵表。我相信,如果您的应用程序需要使用注入的URL或凭据访问共享资源(例如,用于数据库,消息代理或身份验证系统),或者您的应用程序公开了多个端口,或者您需要需要initContainers或自定义启动参数。大概您正在尝试自定义这些生成的资源,并通过将文件放在/ src / fabric8 /中来进行自定义。如果您要馈送的是k8s文件,那么我猜它们必须进入/src/fabric8/kubernetes/
才能馈送到预期的/target/
目录中,并且也被命名为{{1} }和<project-name>-deployment.yml
。
我想生成的图表至少是一个起点,并且如果将所有插件都添加到pom并进行所有设置而不是运行单个目标,则体验可能会比我的实验要流畅一些。