安装 #
前提条件 #
在开始之前,请您检查以下条件是否满足要求:
- 您需要一个标准Kubernetes集群来部署solarmesh,如果还没有Kubernetes集群可以使用,可以使用kind来安装一个Kubernetes的测试集群。
- 集群须运行Istio支持的Kubernetes版本。对于Istio 1.6,它们是Kubernetes 1.15 ~ 1.18。
- 确保您的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文件使用主集群的文件即可