# operator **Repository Path**: solarmesh/operator ## Basic Information - **Project Name**: operator - **Description**: solarmesh operator - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-25 - **Last Updated**: 2021-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # operator ## 安装 ### 前提条件 在开始之前,请您检查以下条件是否满足要求: 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 ```bash # OS: linux-amd64 wget http://release.solarmesh.cn/solar/v1.6.1/solar-v1.6.1-linux-amd64.tar.gz tar -xvf solar-v1.6.1-linux-amd64.tar.gz export PATH=$PATH:$PWD/solar/bin/ chmod +x $PWD/solar/bin/solarctl ``` ### 使用solarctl安装solarmesh 使用默认配置安装solarmesh到**主集群**上 ```bash solarctl install solar-mesh ``` 安装solarmesh的网关 ```bash solarctl install traefik --hub registry.cn-shenzhen.aliyuncs.com/solarmesh --tag v1.7 ``` 如果安装成功,可以打开控制页面,通过命令返回的IP可以访问solarmesh。 ```bash kubectl get po -n kube-system -o wide |grep traefik|awk '{print $6}' ``` ### 配置登录账号 设置用于登录SolarMesh的身份验证策略。下面会提到的安装说明 如何设置身份验证策略,anonymous该策略允许任何人无需提供任何凭据即可访问SolarMesh UI。 在控制集群执行以下命令为用户设置用户名和密码 `--from-literal=username= --from-literal=password=` ```bash 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 接管集群 (方法一) ```bash 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 ```bash solarctl operator init --external-ip $ISTIOD_REMOTE_EP ``` 使用operator安装istio,请运行以下命令: 创建namespace ```bash kubectl create ns service-mesh ``` apply SolarOperator 资源 ```yaml kubectl apply -f - < 若没有内部负载均衡,则执行以下命令获取ISTIOD_REMOTE_EP > > `export ISTIOD_REMOTE_EP=$(kubectl get svc -n istio-system istio-ingressgateway |awk '{print $4}'|awk 'NR==2')` 验证 ISTIOD_REMOTE_EP: ```bash echo "ISTIOD_REMOTE_EP is ${ISTIOD_REMOTE_EP}" ``` > 若 ISTIOD_REMOTE_EP不存在,请参考 [kubernetes官方文档](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer) 允许`控制集群`能够访问`业务集群`的 `istio-ingressgateway` 注册业务集群,操作成功后,solarmesh页面将显示集群的服务。 > --kube-config 为添加从集群的kube config文件 ```bash solarctl register --kube-config --name cluster01 # 这里的集群名称与安装istio的时候声明的名称一致 ``` > ⚠️ 主集群也可以注册成为业务集群,kube config文件使用主集群的文件即可 ![solarmesh-install-addcluster](images/solarmesh-install-addcluster.png) ## 使用solarctl接管集群 (方法二) > 如果您的集群包含内部负载平衡器(`LoadBalancer`) 请参照[internal-load-balancer](https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer)后执行以下命令 > ⚠️ 样例仅供参考 详情请见 `参考/solarctl/attach` 字段解释 ```bash solarctl attach --kube-config ~/.kube/config --name cluster01 --set demo ``` > 如果您的集群不包含内部负载平衡器,可以通过 `NodePort` 把流量暴露出去(不建议使用),则需要执行以下命令 > ⚠️ 样例仅供参考 详情请见参考/solarctl/attach字段解释 1. 在远程集群获取 ISTIOD_REMOTE_EP 变量集群接入IP ```bash 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}') ``` 2. 添加集群 ```bash solarctl attach --kube-config ~/.kube/config --name cluster01 --external-ip $ISTIOD_REMOTE_EP --set demo ``` #### 配置跨集群访问 (当 solarctl attach 多个集群时使用) 如果从集群需要互相访问的话, 要在远程集群(通常是每个集群)中调用服务的每个集群,根据DNS实现方式创建以下ConfigMap,或更新现有的ConfigMap: ##### kubedns ```yaml apiVersion: v1 kind: ConfigMap metadata: name: kube-dns namespace: kube-system data: stubDomains: | {"global": ["$(kubectl get svc -n istio-system istiocoredns -o jsonpath={.spec.clusterIP})"]} ``` ##### CoreDNS(> = 1.4.0) ```yaml apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | .:53 { errors health ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream fallthrough in-addr.arpa ip6.arpa } prometheus :9153 forward . /etc/resolv.conf cache 30 loop reload loadbalance } global:53 { errors cache 30 forward . $(kubectl get svc -n istio-system istiocoredns -o jsonpath={.spec.clusterIP}):53 } ``` ### 使用solarctl安装示例项目 使用solarctl安装bookinfo示例项目 ```bash solarctl install bookinfo ``` 使用solarctl为bookinfo示例项目注入流量 > ⚠️ 由于安装bookinfo过程中使用到了gw、vs资源,则需要给bookinfo注入sidecar,注入方法见 `接管服务` ```bash solarctl load bookinfo ``` ### 如何卸载solarmesh? > ⚠️ uninstall命令会卸载掉整个solarmesh 暂无 #### 官网 http://solarmesh.cn/