😈部署Springboot应用到k8s中
部署好了一直纠结要部署个什么上去玩,简单看了helm、minio、n8n……一堆乱七芭蕉,然后发现好像对应一个业余玩耍选手都暂时还没有很有实际应用的东西,最近工作上看到淘宝开放平台的聚石塔,提供了一站式的k8s图形化使用,然后如果需要的话,日常工作中的springboot就需要上k8s躺一躺了,不废话了,开整👇
1️⃣准备jar,并构建docker image💿
app code的话就不展示了,自己写的小应用还是太菜了,构建出 vc.jar (vegetable chicken)
然后docker的环境的镜像的话,选择的是alpine+openjdk,jar运行只需要jre即可,所以这个也可再缩减
🐒dockerhub上openjdk提供的版本tag还是很多的,但是!没有我想要的11的版本😅😅😅
🥲那就只能自己造个了,使用alpine:latest基底,直接装openjdk
1
apk --no-cache add openjdk11 --repository=http://mirrors.aliyun.com/alpine/edge/community
编辑好了Dockerfile,构建(构建名称”/“前的需要与账号一致,dockerhub的个人镜像接受规则,要不然push不上去)🤡🤡
1
docker build -t sofunty/alpine-openjdk11:1.0.0 .
docker repo的话我就直接用的dockerhub的,push上去的话本地需要先docker login一下
这两个💿是public的,需要的可以直接拿去玩🦆,顺带也加了个8的
🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️🐻❄️
有了环境,就可以构建应用的镜像啦,一个简单的Docekrfile
1
2
3
4
5
6
7
8
9
10
11
12
13FROM sofunty/alpine-openjdk-11:1.0.0
MAINTAINER sofunty "sofunty7@gmail.com"
#app deploy config
ENV APP ./target/vc.jar
ENV YMLCONFIG ./src/main/resources/release/application.yml
ENV PORT 9902
WORKDIR /app
RUN mkdir -p app/config
ADD $APP app.jar
ADD $YMLCONFIG config/application.yml
ENTRYPOINT ["java","-Xms512m","-Xmx512m","-Xmn256m","-Xss256k","-jar","app.jar"]
CMD ["--spring.config.location=/app/config/application.yml"]
EXPOSE $PORT然后docker build一下,这一步就玩啦🤏
2️⃣配置k8s的secret(添加私有镜像使用到的秘钥)
可以看下kubenates的文档🤓secreet
这里我是使用了已经docker login生成的auth json file,生成
1
2base64 -w 0 ~/.docker/config.json
一长串内容然后后创建regcred.yml,把上一步的内容对象放进去
1
2
3
4
5
6
7
8apiVersion: v1
kind: Secret
metadata:
name: regsecret
namespace: default
data:
.dockerconfigjson: 一长串内容
type: kubernetes.io/dockerconfigjson创建
1
kubectl apply -f regcred.yml
🥴然后如果跳过下面这不往下的话,你会发现掉坑里,它没有默认使用你配置的秘钥,所以需要切换下秘钥默认使用项
1
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'
到此,🕵总体进展一大半了
3️⃣创建部署模板
此次部署使用的服务暴露方式是pod➕service➕nodePort的方式,使用kubectl提供的创建构建deployment.yaml
1
2
3kubectl create deployment cv --image=sofunty/cv --replicas=1 --port=9902 --dry-run='none' -o=yaml > deployment.yaml
echo --- >> deployment.yaml
kubectl create service nodeport cv --tcp=31001:9902 --dry-run -o=yaml >> deployment.yaml注意:nodePort可用的开放端口为30000-32767
执行完上面这个后,添加container同一层级的一个配置,指定镜像拉取使用的秘钥
1
2imagePullSecrets:
- name: regcred然后刷新配置(如果不行就kubectl delete -f deployment.yml后再执行apply)
1
kubectl apply -f deployment.yml
此时,查看
🤤
嘿 嘿嘿 嘿嘿嘿
然后应用就起来了,最后访问测试一下

Ending
🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤🤤
暴露了对外的服务,可能还需要加nginx、trefik之类的做代理,毕竟网络是动态公网ip,不是端口直出
下次再试试 service + ingress,下次玩
🌜🌜
- 本文作者: 寒风
- 本文链接: https://blog.sofunty.cn/2022/01/07/k8s-deploy-app-springboot/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!