ambassador 学习九 多ambassador部署说明
目前官方稳文档没有写,但是demo 里面有,所以就整理出来,其实目前demo里面的
多实例部署用了多个服务的service(使用nodeport 暴露地址,具体使用就是制定ambassador
实例的id 部署的时候使用环境变量,service mapping 的时候指定id (可以指定多个)
安装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部署说明的更多相关文章
- Maven学习 九 maven热部署
第一步:配置tomcat的manager-script角色 点击tomcat的默认项目root的欢迎页面的Manager App 刚开始是没有用户名与和密码的,直接点击取消 出现如下的一张图片,图片中 ...
- Java学习-032-JavaWeb_001 -- Tomcat环境部署及基本配置
首先到 Tomcat 官网,下载对应的版本,我本机的系统是 WIN7 64BIT 的,因而我选择的是64bit 的zip包,如下图所示:
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- 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 ...
- Docker学习-Kubernetes - 集群部署
Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...
- ambassador 学习四 grpc 处理
实际上都是envoy 的功劳 基本环境安装参考相关文档即可 参考demo proto code syntax = "proto3"; option java_multiple_fi ...
- ambassador 学习三 限速处理
与认证类似ambassador 也是委托给三方的其他服务进行限速处理 基本的环境安装可以参考相关文档,主要还是qotm 服务 官方参考实现的简单限速服务 --- apiVersion: v1 kind ...
- ambassador 学习二 认证
ambassador 可以在请求路由之前进行认证处理,一般的我们可能会使用第三方的认证服务 基本的环境安装可以参考相关文档 安装&&运行qotm 服务 可以参考官方文档,或者https ...
- ambassador 学习一基本试用
安装使用docker for mac Without RBAC 安装ambassador 安装 kubectl apply -f https://getambassador.io/yaml/ambas ...
随机推荐
- jQuery源码分析--Event模块(3)
最后剩下了事件的手动触发了.jQuery提供了两个函数trigger和triggerHandler来手动触发事件,可以触发原生事件和自定义的事件.这个触发不单只会触发有jQuery绑定事件,而且也会触 ...
- JavaScript高级内容笔记:原型链、继承、执行上下文、作用域链、闭包
最近在系统的学习JS深层次内容,并稍微整理了一下,作为备忘和后期复习,这里分享给大家,希望对大家有所帮助.如有错误请留言指正,tks. 了解这些问题,我先一步步来看,先从稍微浅显内容说起,然后引出这些 ...
- Linux学习笔记之Linux计划任务Crontab
0x00 cron 简介 cron 是 UNIX, SOLARIS,LINUX 下的一个十分有用的工具.通过 cron 脚本能使计划任务定期地在系统后台自动运行. 0x01 cron 命令 cront ...
- P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
P1879 [USACO06NOV]玉米田Corn Fields 状压dp水题 看到$n,m<=12$,肯定是状压鸭 先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了 #include& ...
- 利用HTML中map标签实现整张图片带有可点击区域的图像映射:
实现效果说明:一整张背景图片,实现图标区域出现链接,可点击跳转到指定页面. <div class="brand"> <img src="images/b ...
- 使用 if 表达式
由于 if 本质上是一个原函数,它的返回值就是满足条件分支表达式的值,因此,if 表达式也可以用作内联函数.我们以 check_positive( )为例进行说明.尽管条件表达式中不另写 return ...
- ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
程序连接orarle报ORA-12505错误 一.异常{ ORA-12505, TNS:listener does not currently know of SID given in connect ...
- hdu5015矩阵快速幂
参考博客:http://blog.csdn.net/rowanhaoa/article/details/39343769 反正递推关系式推了一个多小时没搞出来...太弱了 真是愧对数学系这一专业了.. ...
- 牛客网——G大水题
链接:https://www.nowcoder.net/acm/contest/75/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- Git标签(版本)管理
列出当前所有的标签 git tag 可以搜索特定的标签,例如你只想看稳定版相关的 git tag -l "*.stable" 给当前commit打标签(设定版本) gi ...

