Office Install

业务集群的安装 #

业务集群受管理集群的控制,执行管理集群下发的任务。

前置条件 #

  1. 环境准备

安装solar-operator #

solar-operator 是SolarMesh 的安装组件,它执行安装和状态的协调。

⚠️ 若集群内存在内部负载均衡(Internal Load Balancer),直接初始化solar-operator即可

solarctl operator init

若集群内没有内部负载均衡(Internal Load Balancer),使用以下命令获取ISTIOD_REMOTE_EP

export ISTIOD_REMOTE_EP=$(kubectl get nodes|awk '{print $1}' |awk 'NR==2'|xargs -n 1 kubectl get nodes  -o jsonpath='{.status.addresses[0].address}')

通过ISTIOD_REMOTE_EP初始化solar-operator

solarctl operator init --external-ip $ISTIOD_REMOTE_EP --eastwest-external-ip $ISTIOD_REMOTE_EP 

安装业务端组件 #

创建namespace

kubectl create ns service-mesh

设置集群名称以及当前集群istio版本。

kubectl apply -f - <<EOF
apiVersion: install.solar.io/v1alpha1
kind: SolarOperator
metadata:
  name: cluster01 # 集群名称
  namespace: solar-operator
spec:
  istioVersion: "1.13"  ## 对应您Istio的安装版本
  profile: default
EOF

检查组件状态:

$ kubectl get po -A -w
NAMESPACE              NAME                                               READY   STATUS    RESTARTS   AGE
service-mesh           networking-agent-d79988595-58tbs                   3/3     Running   0          52s
service-mesh           networking-agent-d79988595-nzfg5                   3/3     Running   0          2m46s
solar-operator         solar-operator-78d69dc876-sl7rl                    1/1     Running   0          7m20

以上安装过程是默认安装,如果特殊场景安装需要,您可以查看自定义安装 ,或许能帮助到您。

配置SolarMesh #

Ok,现在我们的solarmesh已经安装好了,现在只要做一些小的配置,就可以玩转它了。

修改 istio-ingressgateway service的端口,增加以下配置,以支撑 solarmesh 正常运行:

$ kubectl edit svc istio-ingressgateway -n istio-system

  - name: promethues
    port: 9090
    protocol: TCP
    targetPort: 9090
  - name: kiali
    port: 20001
    protocol: TCP
    targetPort: 20001
  - name: networking-agent
    port: 7575
    protocol: TCP
    targetPort: 7575
  - name: grafana
    port: 3000
    protocol: TCP
    targetPort: 3000
  - name: jaeger
    port: 16686
    protocol: TCP
    targetPort: 16686

修改 istio-ingressgateway deployment的端口,增加一下配置(注意,加入的位置是在 name: istio-proxy 的下面):

$ kubectl edit deployment istio-ingressgateway -n istio-system

        - containerPort: 9090
          protocol: TCP
        - containerPort: 20001
          protocol: TCP
        - containerPort: 7575
          protocol: TCP
        - containerPort: 9080
          protocol: TCP
        - containerPort: 3000
          protocol: TCP
        - containerPort: 16686
          protocol: TCP

安装附件 #

  1. 安装kiali、promethues、es

SolarMesh 默认的访问 istio-system namespace 中的 kiali、prometheus 作为它拓扑图、监控指标的数据来源,所以您需要在业务集群中安装这些组件。

在接口流量中,数据将存储在es中,所以我们也需要安装es。

这些组件,我们在 SolarMesh 的安装包中,提供了简易安装,您可以用来测试。

$ pwd
/root/solar/manifests/addon
$ ls
es  kiali  kube-shortcut  prometheus

安装后,我们检查下组件的状态:

$ kubectl get po -A 
NAMESPACE              NAME                                               READY   STATUS              RESTARTS   AGE
es                     elasticsearch-546d5c6cf4-kjljx                     1/1     Running             0          6m48s
istio-system           kiali-78466f49d-mzrr2                              1/1     Running             0          6m41s
istio-system           prometheus-57b5d547bd-dplgc                        2/2     Running             0          6m35s
  1. 安装kube-shortcut

kube-shortcut 是SolarMesh的功能扩展组件,它使用helm安装, charts 包在安装包中,执行安装命令如下:

$ kubectl create ns kube-shortcut-system

# 区别在 addon 目录下执行
$ helm install kube-shortcut kube-shortcut -n kube-shortcut-system

# 功能初始化
$ kubectl apply -f kube-shortcut/files/solarmesh.yaml

安装后,我们检查下组件的状态:

$ kubectl get po -n kube-shortcut-system
NAME                                               READY   STATUS    RESTARTS   AGE
kube-shortcut-controller-manager-67d5d59f6-hq7nd   2/2     Running   0          2m39s
  1. 安装grafana、jaeger

SolarMesh 使用grafana做告警以及监控面板,使用jaeger做链路追踪。 安装命令如下:

# cluster01 对应 安装istio时设置的集群名称
$ solarctl install grafana --name cluster01

$ solarctl install jaeger --name cluster01

检查组件状态:

$ kubectl get po -n service-mesh
NAME                                READY   STATUS    RESTARTS   AGE
grafana-5d5ff44cd6-8wdj9            1/1     Running   0          1m
jaeger-5447b6ddcc-z4ng7             1/1     Running   0          1m

现在,业务集群的安装步骤已经全部完成了,我们下一步是进行业务集群的注册,使管理集群能发现集群。

卸载SolarMesh #

如果需要卸载SolarMesh,请参考solarctl uninstall命令

➜  ~ solarctl uninstall -h
The remove subcommand installs, removes and shows the status of the operator controller.

Usage:
  solarctl uninstall [command]

Available Commands:
  cluster     Commands related to solarmesh manifests
  istio       Uninstall Istio from a cluster
  solarmesh   The manifest command generates and diffs solarmesh manifests.

Flags:
  -h, --help   help for uninstall

Use "solarctl uninstall [command] --help" for more information about a command.

卸载SolarMesh的业务服务 #

solarctl uninstall cluster