KubeSphere 从 3.2.0 版本开始便新增了 “动态加载应用商店” 的功能,合作伙伴可申请将应用的 Helm Chart 集成到 KubeSphere 应用商店,相关的 Pull Request 被合并后,KubeSphere 应用商店即可动态加载应用,不再受到 KubeSphere 版本的限制
IDEA下Docker推送镜像到阿里云容器镜像
在Kubesphere上部署应用
Kubesphere下的Springboot发布并使用外部配置文件
本篇环境实践环境为:kubesphere + 阿里云镜像仓库 + gitlab (公有云代码仓库)

# 在集群设置面板,编辑ks-installer --> cluster-configuration.yaml
devops:
enabled: true # 将“false”更改为“true”。
# 开启应用商店
openpitrix:
store:
enabled: true
devops:
enabled: true
jenkinsJavaOpts_MaxRAM: 8g
jenkinsJavaOpts_Xms: 8192m
jenkinsJavaOpts_Xmx: 8192m
jenkinsMemoryLim: 2Gi
jenkinsMemoryReq: 8192Mi
jenkinsVolumeSize: 8Gi

您需要创建一个企业空间、一个 DevOps 项目和一个用户 (project-regular),需要邀请该用户至 DevOps 项目中并赋予 operator 角色。
一般为一个企业空间就是对应不同的业务线, 一个业务线下面有不同的项目,这个“项目”通常我们实际应用中会划分为不同的环境,比如dev开发环境,prod生产环境等等。



| 凭证 ID | 类型 | 用途 |
|---|---|---|
| demo-kubeconfig | kubeconfig | Kubernetes |
| gitlab-id | 用户名和密码 | gitlab 代码仓库 |
| dockerhub-id | 用户名和密码 | Docker Hub |


在高级设置页面,点击添加,添加以下三个字符串参数。这些参数将用于流水线的 Docker 命令。添加完成后,点击创建。
| 参数类型 | 名称 | 值 | 描述信息 | 备注 |
|---|---|---|---|---|
| 字符串 | REGISTRY | docker.io | ||
| 字符串 | DOCKERHUB_NAMESPACE | Docker ID | ||
| 字符串 | APP_NAME | devops-sample |
创建的流水线会显示在列表中。然后点击编辑,选择相应的类型(笔者这里选择自定义流水线)

在图形编辑面板上,从类型下拉列表中选择 node,从 Label 下拉列表中选择 maven。
请点击左侧的加号图标来添加阶段。点击添加步骤上方的文本框,然后在右侧的名称字段中为该阶段设置名称(例如 Checkout SCM)。

点击添加步骤。在列表中选择 git,以从 GitHub 拉取示例代码。在弹出的对话框中,填写必需的字段。点击确定完成操作。
URL:输入 Git 仓库地址 https://gitlab.com/yanggc/java-framework.git。请注意,这里是示例地址,您需要使用您自己的仓库地址。
凭证 ID:本教程中无需输入凭证 ID (有凭证选择相应的凭证)。
分支:如果您将其留空,则默认为 master 分支。请输入 sonarqube,或者如果您不需要代码分析阶段,请将其留空。

第一阶段设置完成。
点击前一个阶段右侧的加号图标添加一个新的阶段,以构建并推送镜像至 Docker Hub。将其命名为 Build and Push。

点击任务下的添加步骤,选择指定容器,将其命名为 maven,然后点击确定。

点击 maven 容器下的添加嵌套步骤添加一个嵌套步骤。在列表中选择 shell 并在弹出窗口中输入以下命令,点击确定完成操作。
mvn -Dmaven.test.skip=true clean package

docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER .

凭证名称:选择您创建的 Docker Hub 凭证,例如 dockerhub-id。
密码变量:输入 DOCKER_PASSWORD。
用户名变量:输入 DOCKER_USERNAME。

echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER


选中 Artifacts 阶段,点击任务下的添加步骤,选择保存制品。在弹出的对话框中输入 target/*.jar,用于设置 Jenkins 中制品的保存路径。点击确定完成操作。

点击 Artifacts 阶段右侧的加号图标添加最后一个阶段,将其命名为 Deploy to Dev。该阶段用于将资源部署至您的开发环境(即 kubesphere-sample-dev 项目)。
点击 Deploy to Dev 阶段下的添加步骤。在列表中选择指定容器,将其命名为 maven 然后点击确定。

点击 maven 容器步骤下的添加嵌套步骤。在列表中选择添加凭证,在弹出的对话框中填写以下字段,然后点击确定。
凭证名称:选择您创建的 kubeconfig 凭证,例如 demo-kubeconfig。
kubeconfig 变量:输入 KUBECONFIG_CONTENT。
mkdir ~/.kube
echo "$KUBECONFIG_CONTENT" > ~/.kube/config
envsubst < deploy/dev-ol/devops-sample-svc.yaml | kubectl apply -f -
envsubst < deploy/dev-ol/devops-sample.yaml | kubectl apply -f -

待您完成上述步骤,请在右下角点击保存。随后,您可以看到该流水线有完整的工作流,并且每个阶段也清晰列示。当您用图形编辑面板定义流水线时,KubeSphere 会自动创建相应的 Jenkinsfile。点击编辑 Jenkinsfile 查看该 Jenkinsfile。
您需要手动运行使用图形编辑面板创建的流水线。点击运行,您可以在弹出的对话框中看到步骤 3 中已定义的三个字符串参数。点击确定来运行流水线。


笔者自用精简版😊
| 构建参数类型 | 名称 | 默认值 | 描述 |
|---|---|---|---|
| 字符串 | REGISTRY | registry.cn-beijing.aliyuncs.com | docker 仓库服务主机 (局域网就写你的ip) |
| 字符串 | DOCKERHUB_NAMESPACE | oxygen | 你的docker命名空间名称 |
| 字符串 | APP_NAME | demo | 你的项目名称 |
| 字符串 | BRANCH_NAME | boot270-docker | 分支名 |


# 名称
checkout-scm
# 填写git代码地址
名称 docker-maker
任务–> 指定容器(名称填写:maven) --> shell脚本
mvn -Dmaven.test.skip=true clean package -am -pl [你的项目名称]
–> shell脚本 (制作镜像制品)
# 这里注意 -t后面是
# $REGISTRY 镜像服务地址
# $DOCKERHUB_NAMESPACE镜像服务命名空间
# $APP_NAME镜像 项目名称
# $BRANCH_NAME 镜像 分支名称
# 记得后面有个点“.”
docker build -f [你的项目的名称]/Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$BRANCH_NAME .
–> 添加凭证(制作镜像制品仓库账号校验)

# 选择对应的凭证ID
# 密码变量
DOCKER_PASSWORD
# 用户名变量
DOCKER_USERNAME
–> shell 脚本(登录Docker制品库脚本)
echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin
–> shell 脚本(推送到Docker制品库脚本)
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$BRANCH_NAME

到这里就已经可以发布镜像到目标Docker制品库了,但是没有重新发布工作负载, 为了是打包镜像制品和服务重新发布进行区分开来,打包之后可以手动进行重新发布服务即可
点击 Artifacts 阶段右侧的加号图标添加最后一个阶段,将其命名为 Deploy to Dev。该阶段用于将资源部署至您的开发环境(即 kubesphere-sample-dev 项目)。
点击 Deploy to Dev 阶段下的添加步骤。在列表中选择指定容器,将其命名为 maven 然后点击确定。

点击 maven 容器步骤下的添加嵌套步骤。在列表中选择添加凭证,在弹出的对话框中填写以下字段,然后点击确定。
凭证名称:选择您创建的 kubeconfig 凭证,例如 demo-kubeconfig。
kubeconfig 变量:输入 KUBECONFIG_CONTENT。
mkdir ~/.kube
echo "$KUBECONFIG_CONTENT" > ~/.kube/config
envsubst < deploy/dev-ol/devops-sample-svc.yaml | kubectl apply -f -
envsubst < deploy/dev-ol/devops-sample.yaml | kubectl apply -f -
待您完成上述步骤,请在右下角点击保存。随后,您可以看到该流水线有完整的工作流,并且每个阶段也清晰列示。当您用图形编辑面板定义流水线时,KubeSphere 会自动创建相应的 Jenkinsfile。点击编辑 Jenkinsfile 查看该 Jenkinsfile。