Ambassador除了支持7层的HTTP,GRPC和Websocket,也可以通过TCPMapping支持4层的TCP连接。
我们先部署一MySQL上游服务,MySQL不对外暴露NodePort,让Ambassador代理对MySQL的访问。
先修改Ambassador的Deployment,将3306 容器端口放开。
vi ambassador-rbac.yaml
kind: Deployment
......
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8443
- name: admin
containerPort: 8877
- name: mysql
containerPort: 3306
kubectl apply -f ambassador-rbac.yaml
修改Ambassador的Service,将3306 端口以NodePort 33306端口放开。
vi ambassador-service.yaml
---
apiVersion: v1
kind: Service
metadata:
labels:
service: ambassador
name: ambssador
spec:
type: NodePort
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
nodePort: 38080
- name: mysql
port: 3306
protocol: TCP
targetPort: 3306
nodePort: 33306
selector:
service: ambassador