Open Service Mesh(OSM)是一种轻量级,可扩展的Cloud Native服务网格,它使用户能够统一管理,保护和获得针对高度动态微服务环境的开箱即用的可观察性功能。
wget https://github.com/openservicemesh/osm/releases/download/v0.1.0/osm-v0.1.0-darwin-amd64.tar.gztar xf osm-v0.1.0-darwin-amd64.tar.gz# pre check./darwin-amd64/osm check --pre-install# 查看服务状态kubectl get pods -n osm-systemNAME READY STATUS RESTARTS AGEosm-controller-6cc9f4866c-28hg8 1/1 Running 0 6m3sosm-grafana-58ff65dfb7-tprvl 1/1 Running 0 6m3sosm-prometheus-5756769877-mdmsv 1/1 Running 0 6m3szipkin-6df4b57677-4qkfq 1/1 Running 0 6m3s
接下来我们将会安装一个demo服务
服务调用关系如下
•Bookbuyer和bookthief不断向bookstore发出HTTP GET请求以购买书和访问github.com来验证出口流量。•bookstore是由两个服务器支持的服务:bookstore-v1和bookstore-v2。无论何时出售一本书,它都会向bookstore发出HTTP POST请求以进行补货。•下载代码仓库,进行配置
git clone https://github.com/openservicemesh/osmcd osm修改 .env文件 以下变量export CTR_REGISTRY=openservicemeshexport CTR_TAG=latest
•创建ns
./demo/configure-app-namespaces.sh
•部署demo应用
demo/deploy-apps.sh
•HTTPRouteGroup规则
./demo/deploy-traffic-specs.sh
•TrafficSplit规则
demo/deploy-traffic-split.sh
•TrafficTarget规则
demo/deploy-traffic-target.sh
•配置注入的命名空间,等同于istio的自动注入
demo/join-namespaces.sh
•重启容器
demo/rolling-restart.sh
•zipkin
执行port forward
./scripts/port-forward-zipkin.sh
在浏览器打开http://127.0.0.1:9411/可以看到服务间的调用信息
•grafana
./scripts/port-forward-grafana.sh
通过ingress暴露一个http服务
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: bookstore-v1 namespace: bookstore-ns annotations: kubernetes.io/ingress.class: nginxspec: rules: - host: bookstore-v1.bookstore-ns.svc.cluster.local http: paths: - path: /books-bought backend: serviceName: bookstore-v1 servicePort: 80
暴露一个https服务
apiVersion: extensions/v1beta1kind: Ingressmetadata: name: bookstore-v1 namespace: bookstore-ns annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/configuration-snippet: | proxy_ssl_name "bookstore-v1.bookstore-ns.svc.cluster.local"; nginx.ingress.kubernetes.io/proxy-ssl-secret: "osm-system/osm-ca-bundle" nginx.ingress.kubernetes.io/proxy-ssl-server-name: "on" # optional nginx.ingress.kubernetes.io/proxy-ssl-verify: "on"spec: rules: - host: bookstore-v1.bookstore-ns.svc.cluster.local http: paths: - path: /books-bought backend: serviceName: bookstore-v1 servicePort: 80
获取集群内的CIDR
./scripts/get_mesh_cidr.sh
可以在安装时通过参数指定CIDR范围从而避免出口流量受到sidecar影响
osm install --enable-egress --mesh-cidr "10.244.0.0/16,10.96.0.0/12" --mesh-name='osm'