kubernetes部署springboot项目使用configmap尝试

网友投稿 310 2022-09-12

kubernetes部署springboot项目使用configmap尝试

背景:

1. kubernetes部署springboot项目使用configmap

1. 将用到的参数变量化

2. 生成jar包并构建docker image

FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/game-1.0-SNAPSHOT.jar game-1.0-SNAPSHOT.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/game-1.0-SNAPSHOT.jar"]

docker build -t ccr.ccs.tencentyun.com/xxxx/xxxx:0.2 . docker push ccr.ccs.tencentyun.com/xxxx/xxxx:0.2

3. 生成configmap文件

cat spring-boot.yaml

apiVersion: v1 kind: ConfigMap metadata: name: spring-config data: dev-config.json: '{ "redis.database.host": "xxxx", "redis.database.port": "xxxx", "redis.database.password": "xxxx", "mysql.database.url": "jdbc:mysql://xxxx:3306/xxxx", "mysql.database.username": "xxxx", "mysql.database.password": "xxxxx", "cloud.nacos.server-addr": "http://xxxx:8848", "cloud.nacos.discovery.server-addr": "http://xxxx:8848" }'

kubectl apply -f spring-config.yaml -n qa

4. 部署springboot 服务

cat test.yaml

apiVersion: apps/v1 kind: Deployment metadata: name: pvp-test spec: replicas: 1 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app: pvp-test template: metadata: labels: app: pvp-test spec: containers: - name: pvp-test image: ccr.ccs.tencentyun.com/xxxx/xxxx:0.2 env: - name: SPRING_PROFILES_ACTIVE value: "qa" - name: SPRING_APPLICATION_JSON valueFrom: configMapKeyRef: name: spring-config key: dev-config.json envFrom: - configMapRef: name: deploy ports: - containerPort: 8001 name: game-http - containerPort: 8011 name: game-tcp resources: requests: memory: "512M" cpu: "500m" limits: memory: "512M" cpu: "500m" imagePullSecrets: - name: tencent --- apiVersion: v1 kind: Service metadata: name: pvp-test labels: app: pvp-test spec: ports: - port: 8001 name: game-http targetPort: 8001 - port: 8011 name: game-tcp targetPort: 8011 selector: app: pvp-test

kubectl apply -f 2.yaml -n qa

注: imagePullSecrets为下载image的秘钥。如果你是公开的仓库可以忽略。我的仓库用的腾讯云的个人版。秘钥自己创建名字就叫tencent了.测试时候比较仓库 配置文件都起名 1 2 这样的yaml文件了见谅

5. 查看部署结果与nacos注册状况

kubectl get pods -n qa kubectl logs -f pvp-test-7f49fcdb9-dsjlz -n qa

6. 关于报错:

字面上的意思吧?User "system:serviceaccount:qa:default" cannot get resource "configmaps" in API group "" in the namespace "qa".这里算是RBAC clusterrole rolebinding的一个复习吧。 cat configmap-get.yaml

kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: qa name: configmap-get rules: - apiGroups: [""] resources: ["configmap"] verbs: ["get"]

与serviceaccount:qa:default绑定

kubectl create clusterrolebinding configmap-get-configmap --clusterrole=configmap-get --serviceaccount=qa:default

杀死容器继续查看新的容器 的log

kubectl delete pods pvp-test-7f49fcdb9-dsjlz -n qa kubectl logs -f pvp-test-7f49fcdb9-ck9m6 -n qa

kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: qa name: configmap-get rules: - apiGroups: [""] resources: ["configmaps"] verbs: ["get"]

apply 重新部署clusterrole。删除旧pod重新查看日志:

kubectl apply -f configmap-get.yaml kubectl delete pods pvp-test-7f49fcdb9-ck9m6 -n qa

后记:

今天复习了好几个知识点......

configmap clusterrole rolebinding

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:minikube与kubectl版本不一致问题
下一篇:魅族争议文案引众怒,官方道歉还要营销,活该“凉凉”?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~