Ere*_*esh 5 spring-boot kubernetes minikube configmap spring-cloud-kubernetes
我在 Minikube 中玩 Kubernetes。我能够将 Spring Boot 示例应用程序部署到 Kubernetes 中。
\n\n我正在探索 Kubernetes configMap。我可以使用 Spring Cloud Starter 成功运行 Spring Boot 应用程序,并从配置映射中选择属性键。到这里我就成功了。
\n\n我当前面临的问题是 configmap 重新加载。
\n\n这是我的配置图:
\n\n配置映射.yaml
\n\n apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: minikube-sample\n namespace: default\ndata:\n app.data.name: name\n application.yml: |-\n app:\n data:\n test: test\nRun Code Online (Sandbox Code Playgroud)\n\nbootstrap.yaml
\n\nmanagement:\n endpoint:\n health:\n enabled: true\n info:\n enabled: true\n restart:\n enabled: true\nspring:\n application:\n name: minikube-sample\n cloud:\n kubernetes:\n config:\n enabled: true\n name: ${spring.application.name}\n namespace: default\n reload:\n enabled: true\nRun Code Online (Sandbox Code Playgroud)\n\n家庭控制器:
\n\npackage com.minikube.sample.rest.controller;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.minikube.sample.properties.PropertiesConfig;\nimport lombok.Getter;\nimport lombok.Setter;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Lookup;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * @author Gorantla, Eresh\n * @created 06-12-2018\n */\n@RestController\n@RequestMapping("/home")\npublic class HomeResource {\n\n @Autowired\n PropertiesConfig config;\n\n @GetMapping("/data")\n public ResponseEntity<ResponseData> getData() {\n ResponseData responseData = new ResponseData();\n responseData.setId(1);\n responseData.setName(config.getName());\n responseData.setPlace("Hyderabad");\n responseData.setValue(config.getTest());\n return new ResponseEntity<>(responseData, HttpStatus.OK);\n }\n\n @Getter\n @Setter\n public class ResponseData {\n private String name;\n private Integer id;\n private String place;\n private String value;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n部署.yaml
\n\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: minikube-sample\n namespace: default\nspec:\n selector:\n matchLabels:\n app: minikube-sample\n\n replicas: 1\n template:\n metadata:\n labels:\n app: minikube-sample\n spec:\n containers:\n - name: minikube-sample\n image: minikube-sample:latest\n imagePullPolicy: Never\n ports:\n - containerPort: 8080\n env:\n - name: env.namespace\n value: default\n volumeMounts:\n - name: config\n mountPath: /config\n volumes:\n - name: config\n configMap:\n name: minikube-sample\nRun Code Online (Sandbox Code Playgroud)\n\n我使用 @ConfigurationProperties 重新加载属性。
\n\n依赖关系
\n\n <dependency>\n <groupId>org.springframework.cloud</groupId>\n <artifactId>spring-cloud-starter-kubernetes</artifactId>\n <version>1.1.0.RELEASE</version>\n </dependency>\n\n <dependency>\n <groupId>org.springframework.cloud</groupId>\n <artifactId>spring-cloud-starter-kubernetes-config</artifactId>\n <version>1.1.0.RELEASE</version>\n </dependency>\nRun Code Online (Sandbox Code Playgroud)\n\n我做了什么 ?\n我已经阅读了 Spring Cloud 文档。 “需要服务帐户上的查看角色才能侦听配置映射更改。” \n然后我通过以下命令创建了集群视图角色
\n\nC:\\Users\\eresh.gorantla\\apps\\minikube-sample\\src\\main\\fabric8 (master -> origin)\n\xce\xbb kubectl create clusterrolebinding minikube-sample --clusterrole=view --serviceaccount=default:minikube --namespace=default\nclusterrolebinding.rbac.authorization.k8s.io/minikube-sample created\nRun Code Online (Sandbox Code Playgroud)\n\n但是,当我更新 kubernetes 中的 configmap 时,属性不会立即重新加载。\n我怀疑集群角色绑定中出现问题。\n请说出你的想法。任何帮助表示赞赏。
\n部署尚未serviceAccountName配置,因此它使用default服务帐户。然而,问题中的命令 - - 适用于命名空间中kubectl create clusterrolebinding ... --serviceaccount=default:minikube...指定的帐户。minikubedefault
此外,当命名空间可以工作clusterrolebinding时,创建可能“太多” 。rolebinding
对于default命名空间 ( metadata.namespace: default) 的部署,这应该创建一个适当的rolebinding权限来向帐户授予只读权限default:
kubectl create rolebinding default-sa-view \
--clusterrole=view \
--serviceaccount=default:default \
--namespace=default
Run Code Online (Sandbox Code Playgroud)
有关参考,请参阅使用 RBAC 授权。
| 归档时间: |
|
| 查看次数: |
5469 次 |
| 最近记录: |