目前官方稳文档没有写,但是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. hdu1700 Points on Cycle

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1700 题目: Points on Cycle Time Limit: 1000/1000 MS ...

  2. Learning to Rank之RankNet算法简介

    排序一直是信息检索的核心问题之一, Learning to Rank(简称LTR)用机器学习的思想来解决排序问题(关于Learning to Rank的简介请见我的博文Learning to Rank ...

  3. SQL学习笔记三之MySQL表操作

    阅读目录 一 存储引擎介绍 二 表介绍 三 创建表 四 查看表结构 五 数据类型 六 表完整性约束 七 修改表ALTER TABLE 八 复制表 九 删除表 一 存储引擎介绍 存储引擎即表类型,mys ...

  4. vim删除某一列

    step1.按键盘上的Esc按键进入vi的命令行模式 step2.点击Ctrl和v按键 step3.按上下左右键选中要删除的内容 step4.按d即可删除选中的列

  5. Python学习札记(四十一) IO 1

    参考:IO NOTE A.Pre 1.IO在计算机中指Input/Output,也就是输入和输出. 2.IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但 ...

  6. HDU 1503 Advanced Fruits(LCS+记录路径)

    http://acm.hdu.edu.cn/showproblem.php?pid=1503 题意: 给出两个串,现在要确定一个尽量短的串,使得该串的子串包含了题目所给的两个串. 思路: 这道题目就是 ...

  7. R语言画图小结

    本文以1950年到2010年期间我国的火灾统计数据为例,数据如下所示: (0)加载数据 data<-read.csv("E:\\MyDocument\\p\\Data\\1950~20 ...

  8. 关联规则&Apriori算法

    2017-12-02 14:27:18 一.术语 Items:项,简记I Transaction:所有项的一个非空子集,简记T Dataset:Transaction的一个集合,简记D 关联规则: 一 ...

  9. 递归--练习11--noi9273 PKU2506Tiling

    递归--练习11--noi9273 PKU2506Tiling 一.心得 25 a[i]%=10;(高精度时) 26 这里错了,花了好久改好 27 28 29 int* f(int n){ 30 if ...

  10. 雷林鹏分享:Ruby CGI Sessions

    Ruby CGI Sessions CGI::Session 可以为用户和CGI环境保存持久的会话状态,会话使用后需要关闭,这样可以保证数据写入到存储当中,当会话完成后,你需要删除该数据. #!/us ...