寒风

  • 主页

k8s应用部署

阅读数:次 2022-01-07
字数统计: 857字   |   阅读时长≈ 3分

😈部署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
    13
    FROM 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
    2
    base64 -w 0 ~/.docker/config.json
    一长串内容

    然后后创建regcred.yml,把上一步的内容对象放进去

    1
    2
    3
    4
    5
    6
    7
    8
    apiVersion: 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
    3
    kubectl 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
    2
    imagePullSecrets:
    - 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 许可协议。转载请注明出处!
  • k8s
  • CentOS Stream release 8
  • k8s v1.22.4
  • deplay
  • springboot

扫一扫,分享到微信

k8s搭建
© 2020-2022 寒风
GitHub:hexo-theme-yilia-plus by Litten
本站总访问量次 | 本站访客数人