目前官方稳文档没有写,但是demo 里面有,所以就整理出来,其实目前demo里面的
多实例部署用了多个服务的service(使用nodeport 暴露地址,具体使用就是制定ambassador
实例的id 部署的时候使用环境变量,service mapping 的时候指定id (可以指定多个)

具体代码参考 https://github.com/rongfengliang/ambassador-learning

安装ambassador

  • 部署服务

    两个ambassador实例部署在default以及test命名空间

ambassador-no-rbac.yaml
---
apiVersion: v1
kind: Service
metadata:
labels:
service: ambassador-admin
name: ambassador-admin
spec:
type: NodePort
ports:
- name: ambassador-admin
port: 8877
targetPort: 8877
selector:
service: ambassador
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ambassador
spec:
replicas: 3
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
labels:
service: ambassador
spec:
containers:
- name: ambassador
image: quay.io/datawire/ambassador:0.35.1
resources:
limits:
cpu: 1
memory: 400Mi
requests:
cpu: 200m
memory: 100Mi
env:
- name: AMBASSADOR_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: AMBASSADOR_ID
value: ambassador-1
livenessProbe:
httpGet:
path: /ambassador/v0/check_alive
port: 8877
initialDelaySeconds: 30
periodSeconds: 3
readinessProbe:
httpGet:
path: /ambassador/v0/check_ready
port: 8877
initialDelaySeconds: 30
periodSeconds: 3
- name: statsd
image: quay.io/datawire/statsd:0.35.1
restartPolicy: Always ambassador-no-rbac-test.yaml ---
apiVersion: v1
kind: Service
metadata:
labels:
service: ambassador-admin
name: ambassador-admin
namespace: test
spec:
type: NodePort
ports:
- name: ambassador-admin
port: 8877
targetPort: 8877
selector:
service: ambassador
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ambassador
namespace: test
spec:
replicas: 3
template:
metadata:
annotations:
sidecar.istio.io/inject: "false"
labels:
service: ambassador
spec:
containers:
- name: ambassador
image: quay.io/datawire/ambassador:0.35.1
resources:
limits:
cpu: 1
memory: 400Mi
requests:
cpu: 200m
memory: 100Mi
env:
- name: AMBASSADOR_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: AMBASSADOR_ID
value: ambassador-2
livenessProbe:
httpGet:
path: /ambassador/v0/check_alive
port: 8877
initialDelaySeconds: 30
periodSeconds: 3
readinessProbe:
httpGet:
path: /ambassador/v0/check_ready
port: 8877
initialDelaySeconds: 30
periodSeconds: 3
- name: statsd
image: quay.io/datawire/statsd:0.35.1
restartPolicy: Always ambassador-service.yaml
---
apiVersion: v1
kind: Service
metadata:
name: ambassador
spec:
type: NodePort
ports:
- port: 80
selector:
service: ambassador ambassador-service-test.yaml
---
apiVersion: v1
kind: Service
metadata:
name: ambassador
namespace: test
spec:
type: NodePort
ports:
- port: 80
selector:
service: ambassador deploy
kubectl apply -f ambassador-no-rbac.yaml -f ambassador-no-rbac-test.yaml
service
kubectl apply -f ambassador-service.yaml -f ambassador-service-test.yaml
  • 查看状态(default && test namespace 包含组件)
    default

    teset

创建service

创建多个service

  • demo-1 && demo-2
demo-1.yaml
---
apiVersion: v1
kind: Service
metadata:
name: demo1
namespace: test-svc
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: demo_mapping
ambassador_id: ambassador-1
prefix: /demo/
service: demo1
---
apiVersion: ambassador/v0
kind: Mapping
name: joint_1_mapping
ambassador_id:
- ambassador-1
- ambassador-2
prefix: /demo/
headers:
x-demo-mode: joint
service: demo1
---
apiVersion: ambassador/v0
kind: Mapping
name: should_not_appear_1
prefix: /joint/
service: demo1
spec:
selector:
app: demo1
ports:
- port: 80
targetPort: http-api
type: ClusterIP
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: demo1
namespace: test-svc
spec:
replicas: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: demo1
spec:
containers:
- name: demo1
image: dwflynn/demo:1.0.0
imagePullPolicy: Always
ports:
- name: http-api
containerPort: 3000
demo-2.yaml
---
apiVersion: v1
kind: Service
metadata:
name: demo2
namespace: test-svc
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: demo_mapping
ambassador_id: ambassador-2
prefix: /demo/
service: demo2.test-svc
---
apiVersion: ambassador/v0
kind: Mapping
name: joint_2_mapping
ambassador_id: [ "ambassador-1", "ambassador-2" ]
prefix: /demo/
headers:
x-demo-mode: joint
weight: 25
service: demo2.test-svc
---
apiVersion: ambassador/v0
kind: Mapping
name: should_not_appear_2
prefix: /joint/
service: demo2.test-svc
spec:
selector:
app: demo2
ports:
- port: 80
targetPort: http-api
type: ClusterIP
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: demo2
namespace: test-svc
spec:
replicas: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: demo2
spec:
containers:
- name: demo2
image: dwflynn/demo:2.0.0
imagePullPolicy: Always
ports:
- name: http-api
containerPort: 3000 kubectl apply -f demo-1.yaml -f demo-2.yaml
  • 效果

查看注册效果

admin 地址 http://hostip:nodeport/ambassador/v0/diag

  • ambassador-1(default 命名空间 nodeport 30168)

  • ambassador-2(test命名空间 nodeport 30786)

  • 说明

从服务mapping 以及监控界面看到的和服务注册的是一致的

测试

参考资料

https://github.com/datawire/ambassador/tree/v0.32.1/end-to-end/010-multiple-ambassadors
https://github.com/rongfengliang/ambassador-learning

 
 
 
 

ambassador 学习九 多ambassador部署说明的更多相关文章

  1. Maven学习 九 maven热部署

    第一步:配置tomcat的manager-script角色 点击tomcat的默认项目root的欢迎页面的Manager App 刚开始是没有用户名与和密码的,直接点击取消 出现如下的一张图片,图片中 ...

  2. Java学习-032-JavaWeb_001 -- Tomcat环境部署及基本配置

    首先到 Tomcat 官网,下载对应的版本,我本机的系统是 WIN7 64BIT 的,因而我选择的是64bit 的zip包,如下图所示:

  3. ActionBarSherlock学习笔记 第一篇——部署

    ActionBarSherlock学习笔记 第一篇--部署          ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...

  4. OGG学习笔记04-OGG复制部署快速参考

    OGG学习笔记04-OGG复制部署快速参考 源端:Oracle 10.2.0.5 RAC + ASM 节点1 Public IP地址:192.168.1.27 目标端:Oracle 10.2.0.5 ...

  5. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  6. ambassador 学习四 grpc 处理

    实际上都是envoy 的功劳 基本环境安装参考相关文档即可 参考demo proto code syntax = "proto3"; option java_multiple_fi ...

  7. ambassador 学习三 限速处理

    与认证类似ambassador 也是委托给三方的其他服务进行限速处理 基本的环境安装可以参考相关文档,主要还是qotm 服务 官方参考实现的简单限速服务 --- apiVersion: v1 kind ...

  8. ambassador 学习二 认证

    ambassador 可以在请求路由之前进行认证处理,一般的我们可能会使用第三方的认证服务 基本的环境安装可以参考相关文档 安装&&运行qotm 服务 可以参考官方文档,或者https ...

  9. ambassador 学习一基本试用

    安装使用docker for mac Without RBAC 安装ambassador 安装 kubectl apply -f https://getambassador.io/yaml/ambas ...

随机推荐

  1. TED #06# Questioning the universe

    Stephen Hawking: Questioning the universe 1. 第一段: There is nothing bigger or older than the universe ...

  2. Mybatis-plus之RowBounds实现分页查询

    物理分页和逻辑分页 物理分页:直接从数据库中拿出我们需要的数据,例如在Mysql中使用limit. 逻辑分页:从数据库中拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据. 优缺点 物理 ...

  3. Docker 版本升级

    当前系统版本:Centos 7.4 x64 删除老版本docker sudo yum remove docker docker-common docker-selinux docker-engine ...

  4. A8逻辑篇1.点亮一个LED(S5PV210.A8)

    一.虚拟机安装好后,我们用Fedora 双击.vmx文件,将会在虚拟机中打开 相应的生成: 这些文件 二.进入虚拟机页面 等待启动 账号选择其他 用户名:root 密码:111111 设置页面大小: ...

  5. 实时刷新winform中的某一个控件上的文字

    需要注意的是,必须从UI线程,另外启动一个线程才可以. 在新线程调用异步刷新就OK了 Thread thread; private void button1_Click(object sender, ...

  6. UVa 1636 决斗

    https://vjudge.net/problem/UVA-1636 题意: 首先在手枪里随机装了一些子弹,然后抠了一枪,发现没有子弹.你希望下一枪也没有子弹,是应该直接再抠一枪还是随机转一下再抠. ...

  7. Prototype(原型)

    意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性: 当要实例化的类是在运行时刻指定时,例如,通过动态装载:或者为了避免创建一个与产品类层次平行的工厂类层次时:或者当一个 ...

  8. Android之第三方平台实现多平台分享操作

    开发中常常遇到分享操作,当用到多种分享时,如:QQ,微信,微博,短信等,可以借助第三方平台来完成,此博客主要借助mob平台来完成相关操作,当然也可以借助其他平台,如友盟等. 先来看看效果图: 如图看出 ...

  9. 个人知识管理系统Version1.0开发记录(08)

    切入点 前面,我们已经搭建好了web端的一种基本结构,需要进一步定位的主要问题有三点: 1.界面的选择和确定,用extjs做的初步样式,进一步改动为jqueryUI/html,再进一步改变为HTML5 ...

  10. 使用axios 报 name.toUpperCase is not a function

    使用axios 报 name.toUpperCase is not a function 可能是许久没有用vue了,有些生疏,加上尝试之前总结的思路,这次在项目上实现时,碰到的问题.让人有些懵,不知所 ...