首页 > 解决方案 > 缺少 maven-kubernetes-plugin 中的“选择器”

问题描述

我正在尝试生成所有 Kubernetes 配置作为项目构建的一部分,但生成的文件不包含服务和部署的“选择器”元素。尽管检查了他们的文档,但我仍然无法弄清楚如何添加它。

这是我的插件配置

            <plugin>
                <groupId>org.eclipse.jkube</groupId>
                <artifactId>kubernetes-maven-plugin</artifactId>
                <version>1.3.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>resource</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <detail>true</detail>
                    <kubernetesManifest>${project.build.directory}/kubernetes</kubernetesManifest>
                    <buildStrategy>docker</buildStrategy>
                    <recreate>true</recreate>
                    <verbose>true</verbose>
                    <targetDir>${project.parent.basedir}/generated-kube-configs/${profile}/${project.artifactId}</targetDir>
                    <images>
                        <image>
                            <name>hammadkdar/${project.artifactId}:${project.version}</name>
                            <build>
                                <from>openjdk:11-jre-slim</from>
                                <assembly>
                                    <targetDir>/opt/usr/app</targetDir>
                                </assembly>
                                <cmd>java -jar /opt/usr/app/${project.artifactId}-${project.version}.jar</cmd>
                                <tags>
                                    <tag>${project.version}</tag>
                                </tags>
                                <ports>
                                    <port>${port}</port>
                                </ports>
                            </build>
                        </image>
                    </images>
                    <resources>
                        <labels>
                            <all>
                                <property>
                                    <name>app</name>
                                    <value>${project.artifactId}</value>
                                </property>
                                <property>
                                    <name>version</name>
                                    <value>${project.version}</value>
                                </property>
                            </all>
                        </labels>
                        <services>
                            <service>
                                <name>${project.artifactId}</name>
                                <type>NodePort</type>
                                <ports>
                                    <port>
                                        <name>http</name>
                                        <nodePort>${nodePort}</nodePort>
                                        <port>${port}</port>
                                        <targetPort>${port}</targetPort>
                                        <protocol>tcp</protocol>
                                    </port>
                                </ports>
                            </service>
                        </services>
                        <configMap>
                            <name>${project.artifactId}</name>
                            <entries>
                                <entry>
                                    <name>spring.profiles.active</name>
                                    <value>${profile}</value>
                                </entry>
                                <entry>
                                    <file>${project.basedir}/src/main/resources/application-${profile}.properties</file>
                                </entry>
                            </entries>
                        </configMap>
                        <liveness>
                            <getUrl>http://${project.artifactId}:${port}/actuator/health</getUrl>
                            <tcpPort>${port}</tcpPort>
                            <initialDelaySeconds>20</initialDelaySeconds>
                            <timeoutSeconds>3</timeoutSeconds>
                        </liveness>
                        <readiness>
                            <getUrl>http://${project.artifactId}:${port}/actuator/health</getUrl>
                            <tcpPort>${port}</tcpPort>
                            <initialDelaySeconds>20</initialDelaySeconds>
                            <timeoutSeconds>3</timeoutSeconds>
                        </readiness>
                    </resources>
                    <enricher>
                        <excludes>
                            <exclude>jkube-git</exclude>
                            <exclude>jkube-maven-issue-mgmt</exclude>
                            <exclude>jkube-project-label</exclude>
                            <exclude>jkube-healthcheck-spring-boot</exclude>
                        </excludes>r
                    </enricher>
                </configuration>
            </plugin>

该文档缺少任何名为 selector 的配置值,这里是他们官方页面的链接:在此处输入链接描述

从上面可以看出,我非常接近实现我开始的目标。目前只添加了“资源”目标,但可以添加构建,显然还有其他生成容器,生成 kubernetes yml 配置,然后将容器作为构建的一部分自动推送到某个注册表。

我需要更多的眼睛来搜索,或者插件人可能会遇到这个并分享他们的意见。

标签: kubernetesmaven-3

解决方案


推荐阅读