Offline

安装 #

前提条件 #

在开始之前,请您检查以下条件是否满足要求:

  1. 您需要一个标准Kubernetes集群来部署solarmesh,如果还没有Kubernetes集群可以使用,可以使用kind来安装一个Kubernetes的测试集群。
  2. 集群须运行Istio支持的Kubernetes版本。对于Istio 1.6,它们是Kubernetes 1.15 ~ 1.18
  3. 确保您的Kubernetes群集具有足够的资源。如果您尝试使用我们的演示应用程序的所有功能,推荐 8 CPUs 和 16 GiB RAM,最低要求是 6 CPUs 和 8 GiB RAM

完成前提条件之后,您可以通过 solarctl 工具在单个群集上安装solarmesh,也可以在多群集环境中部署solarmesh。

获取solarctl #

# OS: linux-amd64
wget http://release.solarmesh.cn/solar/v1.7.1/solar-v1.7.1-linux-amd64.tar.gz
tar -xvf solar-v1.7.1-linux-amd64.tar.gz
export PATH=$PATH:$PWD/solar/bin/
chmod +x $PWD/solar/bin/solarctl

使用solarctl安装solarmesh #

下载离线包

wget http://release.solarmesh.cn/solar/v1.7.1/solarmesh-v1.7.1-image-offline.tar.gz

load镜像

docker load -i solarmesh-v1.7.1-image-offline.tar.gz

下载完成镜像之后你需要将镜像同步到内网的docker registry 仓库

设置一个环境变量

export DOCKER_HUB=localhost:5000/solarmesh

执行同步脚本 sync_docker_image.sh ,在solarctl解压目录执行

$ ./solar/sync_docker_image.sh

The push refers to repository [localhost:5000/solarmesh/networking-agent]
bac5bdbac8f2: Pushed
e506dbc622b5: Pushed
43be4c6fad56: Pushed
3fc64803ca2d: Pushed
v1.7.1: digest: sha256:461b982a699cfe79fc0c40c177328e781f7b61efb95419e486990b6219f44958 size: 1376
The push refers to repository [localhost:5000/solarmesh/solar-graph]
3f76d555740b: Pushed
137c857aaafc: Pushed
44f3a664dede: Pushed
3fc64803ca2d: Mounted from solarmesh/networking-agent

使用默认配置安装solarmesh到主集群

solarctl install solar-mesh --hub $DOCKER_HUB # 例 solarctl install solar-mesh --hub localhost:5000/solarmesh

配置登录账号 #

设置用于登录SolarMesh的身份验证策略。下面会提到的安装说明 如何设置身份验证策略,anonymous该策略允许任何人无需提供任何凭据即可访问SolarMesh UI。

在控制集群执行以下命令为用户设置用户名和密码 --from-literal=username=<username> --from-literal=password=<password>

kubectl create secret generic admin --from-literal=username=admin --from-literal=password=admin -n service-mesh
kubectl label secret admin app=solar-controller -n service-mesh

使用 solar-operator 接管集群 #

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}')

安装 solar-operator

solarctl operator init --hub $DOCKER_HUB --external-ip $ISTIOD_REMOTE_EP

使用operator安装istio,请运行以下命令:

创建namespace

kubectl create ns service-mesh

apply SolarOperator 资源

kubectl apply -f - <<EOF
apiVersion: install.solar.io/v1alpha1
kind: SolarOperator
metadata:
  namespace: service-mesh
  name: cluster01 # 记住这里的集群名称
spec:
  namespace: service-mesh
  profile: default
  hub: $DOCKER_HUB # 例 localhost:5000/solarmesh
  addonComponents:
    alertmanager:
      configReloaderImage: $DOCKER_HUB/configmap-reload:v0.0.1 # 例 localhost:5000/solarmesh/configmap-reload:v0.0.1
    prometheusOperator:
      configReloaderImage: $DOCKER_HUB/configmap-reload:v0.0.1
      prometheusConfigReloader: $DOCKER_HUB/prometheus-config-reloader:v0.38.1
EOF

查看 solar-operator 的日志

kubectl 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  : ✔

注册业务集群 #

ISTIOD_REMOTE_EP 是根据之前选择的远程控制平面配置选项设置环境变量。

若集群有内部负载均衡(Internal Load Balancer),在远程集群执行以下命令获取ISTIOD_REMOTE_EP

export ISTIOD_REMOTE_EP=$(kubectl get svc -n istio-system --context=${MAIN_CLUSTER_CTX} istiod -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

若没有内部负载均衡,则执行以下命令获取ISTIOD_REMOTE_EP

export ISTIOD_REMOTE_EP=$(kubectl get svc -n istio-system istio-ingressgateway |awk ‘{print $4}'|awk ‘NR==2’)

验证 ISTIOD_REMOTE_EP:

echo "ISTIOD_REMOTE_EP is ${ISTIOD_REMOTE_EP}" 

若 ISTIOD_REMOTE_EP不存在,请参考 kubernetes官方文档 允许控制集群能够访问业务集群istio-ingressgateway

注册业务集群,操作成功后,solarmesh页面将显示集群的服务。

–kube-config 为添加从集群的kube config文件

solarctl register --kube-config <path/to/config> --name cluster01 # 这里的集群名称与安装istio的时候声明的名称一致

⚠️ 主集群也可以注册成为业务集群,kube config文件使用主集群的文件即可

&hellip;