SolarMesh 集成 OpenShift #
前置条件 #
版本 #
集群须运行Istio支持的Kubernetes版本。对于SolarMesh-v1.10.3,我们需要Kubernetes 1.18 ~ 1.21,对标OpenShift OCP 4.5 ~ 4.8
安装SolarMesh管理集群 #
若离线安装,请参考
kubernetes离线安装
获取离线安装包
SolarMesh的管理集群安装与kubernetes版本一致,请参考 kubernetes安装/管理集群的安装
设置权限 #
默认情况下,OpenShift 不允许使用用户ID 1337 运行的容器。在安装前请设置权限,允许 istio 能使用 1337 UID,SolarMesh 也会安装 prometheus,也需要设置权限。
# 创建ns istio-system 和 monitoring
$ oc create ns istio-system
$ oc create ns monitoring
$ oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
$ oc adm policy add-scc-to-group anyuid system:serviceaccounts:monitoring
开始安装 #
使用 solar-operator 接管集群 #
安装 solar-operator
solarctl operator init
⚠
mesh
配置指网格名称,服务接入sidecar之后,使用了同一网格名称的网络是互通的,安装后可在SolarOperator
资源中更改⚠
network
网络的名称,详情见 the-kubernetes-network-model⚠ SolarOperator会默认在monitoring下安装prometheus,若集群中相应位置存在prometheus,请参考
参考/solaroperator 配置详解
关掉prometheus安装。⚠ SolarOperator会默认安装istio,若集群中已存在istio,请在安装solarmesh前将其卸载。
oc apply -f - <<EOF
apiVersion: install.solar.io/v1alpha1
kind: SolarOperator
metadata:
namespace: solar-operator
name: cluster01 # 记住这里的集群名称
spec:
namespace: service-mesh
profile: openshift
mesh: mesh01 # 同一个mesh
network: network1 # 网络的名称
EOF
查看 solar-operator 的日志 #
oc logs -f -n solar-operator -l app=solar-operator
如果看到 install solar mesh : ✔ 则代表 SolarMesh 安装完成
not ready :[Deployment/service-mesh/solar-graph]
2021-02-19T08:18:29.848376Z info not ready :[Deployment/service-mesh/solar-graph]
not ready :[Deployment/service-mesh/solar-graph]
2021-02-19T08:18:31.851434Z info not ready :[Deployment/service-mesh/solar-graph]
not ready :[Deployment/service-mesh/solar-graph]
2021-02-19T08:18:33.864782Z info not ready :[Deployment/service-mesh/solar-graph]
not ready :[Deployment/service-mesh/solar-graph]
2021-02-19T08:18:35.858885Z info not ready :[Deployment/service-mesh/solar-graph]
install SolarGraph : ✔
install solar mesh : ✔
安装istio成功后,查询网关的EXTERNAL-IP
,若集群内有LoadBalancer
则会自动生成一个vip
,否则需要为istio-eastwestgateway
和istio-ingressgateway
设置EXTERNAL-IP
,可以选择一个节点的node-ip
作为EXTERNAL-IP
。
$ oc get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-eastwestgateway LoadBalancer 172.30.109.230 <pending> 15021:30279/TCP,15443:32054/TCP,15012:31201/TCP,15017:32374/TCP 23s
istio-ingressgateway LoadBalancer 172.30.125.90 <pending> 80:32186/TCP,443:32184/TCP,9090:32133/TCP,20001:30387/TCP,7575:31077/TCP,9080:31864/TCP,3000:31556/TCP,16686:30318/TCP 60s
istiod ClusterIP 172.30.63.116 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 12m
安装完成后,为入口网关公开 OpenShift 路由。
oc -n istio-system expose svc/istio-ingressgateway --port=http2
给solarmesh中的solar-controller
创建一个router,使页面能访问当前服务
oc apply -f - << EOF
apiVersion: route.openshift.io/v1
kind: Route
metadata:
labels:
app: solar-controller
name: solar-controller
namespace: service-mesh
spec:
host: <HOST> # solarmesh.demo.local
port:
targetPort: 8080
to:
kind: Service
name: solar-controller
weight: 100
wildcardPolicy: None
EOF
现在我们通过浏览器访问页面http://<HOST>