k8s

Spring cloud kubernetes 下的config Map

Posted by zjh on December 8, 2021

前言

上文讲了关于在kubernetes下如何服务发现和负载均衡,本文将通过例子介绍在kubernetes下的configmap如何在springboot项目中使用

1.项目搭建

  • 依赖:这里其实引入spring-cloud-starter-kubernetes-configmap就够了
     implementation 'org.springframework.cloud:spring-cloud-starter-kubernetes-all:1.1.2.RELEASE'
    
  • 配置: ``` server: port: 30000 spring: application: name: service-provider cloud: kubernetes: reload: enabled: true mode: event strategy: shutdown config: enableApi: true enabled: true sources: - name: ${spring.application.name} namespace: ${spring.profiles.active}

logging: level: org.springframework.cloud.gateway: debug org.springframework.cloud.loadbalancer: debug

- 接口:

@Value(“${test}:defualt”) private String value; @SneakyThrows @GetMapping(“/provider-hello”) public String sayHello(HttpServletRequest request){

    System.out.println("======收到服务调用请求=====");
    return String.format("config-value: %s\n--------------%s!", value,"hello world");
}  ``` - 编译、打包 ``` ./gradlew build

docker build -t service-proivder:1.0 .


## 2、配置configmap
- 创建configmap

kubectl create configmap service-privider

- 配置一个自定义变量在configmap内

kind: ConfigMap apiVersion: v1 metadata: name: service-provider namespace: default uid: 3f218bdb-4ba6-41fc-adcf-54148b5b0c71 resourceVersion: ‘119857’ creationTimestamp: ‘2021-12-06T13:43:42Z’ data: application-dev.yml: ‘test: 222222222’

- 查看下当前的配置文件

kubectl describe configmaps service-provider ``` 在这里插入图片描述

3、测试

  • 访问接口 在这里插入图片描述

    4、结果

    访问成功!

  • 大致原理:
    • Spring Kubernetes Config 通过指定读取当前服务名一致的configmap,将data下的值通过key:value的形式塞到profile里面去,就能被访问了