Openshift

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-eastwestgatewayistio-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>