springboot開發微服務框架一般使用springcloud全家桶,而整個項目都是容器化的,通過k8s進行編排,而k8s自己也有服務發現機制,所以我們也可以拋棄springcloud里的eureka,而直接使用k8s自己的服務。 添加組件 註意點 1. application.name與k8s的 ...
springboot開發微服務框架一般使用springcloud全家桶,而整個項目都是容器化的,通過k8s進行編排,而k8s自己也有服務發現機制,所以我們也可以拋棄springcloud里的eureka,而直接使用k8s自己的服務。
# 添加組件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
<version>0.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes</artifactId>
<version>0.3.0.RELEASE</version>
</dependency>
註意點
- application.name與k8s的服務名相同,即feign里的服務名稱
- 必須要開啟@EnableDiscoveryClient註解
- springcloud的配置中心需要和項目在一個namespace里,即k8s的clusterIp不能跨namespace,如果是多個namespace需要用nodeport模式
- 使用feign時,它的服務同樣需要是同一個namespace下的
spring:
application:
name: hello-world-service
cloud:
config:
uri: http://config-server-service #集群內部的埠,需要是一個namespace里的,目前配置中心的埠為80
fail-fast: true
# 添加k8s里用戶許可權
預設情況下,進行k8s服務調用里會出現用戶許可權的錯誤Message: Forbidden!Configured service account doesn't have access.
這時需要為k8s賬號角色添加許可權
kubectl create clusterrolebinding permissive-binding \
--clusterrole=cluster-admin \
--user=admin \
--user=kubelet \
--group=system:serviceaccounts