Ambassador 部署過程和簡(jiǎn)單使用

簡(jiǎn)介

Ambassador是一個(gè)開源的基于Envoy構(gòu)建的 Kubernetes + 7 層負(fù)載均衡器的網(wǎng)關(guān),也叫Emissary-Ingress。相對(duì)于Envoy,Ambassador的部署和使用更加方便。
本節(jié)以最新版本為例,講述整個(gè)部署過程和簡(jiǎn)單使用,具體詳細(xì)的資料請(qǐng)參考官網(wǎng)

部署Ambassador

Ambassador 可以通過四種方式部署,選擇其中一種方式即可

1、Helm 3

# Add the Repo:
helm repo add datawire https://www.getambassador.io
 
# Create Namespace and Install:
kubectl create namespace ambassador && \
helm install ambassador --namespace ambassador datawire/ambassador && \
kubectl -n ambassador wait --for condition=available --timeout=90s deploy -lproduct=aes

2、Helm 2

# Add the Repo:
helm repo add datawire https://www.getambassador.io
 
# Create Namespace and Install:
kubectl create namespace ambassador && \
helm install --name ambassador --namespace ambassador datawire/ambassador && \
kubectl -n ambassador wait --for condition=available --timeout=90s deploy -lproduct=aes

3、kubernetes YAML

kubectl apply -f https://www.getambassador.io/yaml/aes-crds.yaml && \
kubectl wait --for condition=established --timeout=90s crd -lproduct=aes && \
kubectl apply -f https://www.getambassador.io/yaml/aes.yaml && \
kubectl -n ambassador wait --for condition=available --timeout=90s deploy -lproduct=aes

4、Quick CLI Install

# macOS:
sudo curl -fL https://metriton.datawire.io/downloads/darwin/edgectl \
   -o /usr/local/bin/edgectl &&
sudo chmod a+x /usr/local/bin/edgectl &&
edgectl install
 
# Linux:
sudo curl -fL https://metriton.datawire.io/downloads/linux/edgectl \
   -o /usr/local/bin/edgectl &&
sudo chmod a+x /usr/local/bin/edgectl &&
edgectl install
 
# Windows:
# Download here - https://metriton.datawire.io/downloads/windows/edgectl.exe

部署后,通過命令 kubectl get all -n ambassador查看完成情況,當(dāng)命名空間ambassador內(nèi)的所有pod為Running時(shí),則為部署成功(如下)。
將service/ambassador和service/ambassador-admin的TYPE修改為NodePort,便于后續(xù)測(cè)試

[root@master-1 ~]# kubectl get all -n ambassador
NAME                                     READY   STATUS    RESTARTS   AGE
pod/ambassador-96bd85767-pjzkf           1/1     Running   93         48d
pod/ambassador-96bd85767-tp5sj           1/1     Running   91         48d
pod/ambassador-agent-68d647d7cf-9wqsq    1/1     Running   12         48d
pod/ambassador-agent-68d647d7cf-bghdb    1/1     Running   12         48d
pod/ambassador-redis-584cd89b45-g99tr    1/1     Running   12         48d
pod/ambassador-redis-584cd89b45-wrrs8    1/1     Running   12         48d
pod/quote-856df6d5b7-phgkt               1/1     Running   12         48d
pod/tomcat-deployment-7db86c59b7-d9txn   1/1     Running   13         48d
pod/tomcat-deployment-7db86c59b7-lhqqn   1/1     Running   13         48d
pod/tomcat-deployment-7db86c59b7-w4vm8   1/1     Running   12         48d

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
service/ambassador         NodePort    10.110.95.198   <none>        80:30067/TCP,443:31058/TCP      48d
service/ambassador-admin   NodePort    10.108.4.84     <none>        8877:31523/TCP,8005:30654/TCP   48d
service/ambassador-redis   ClusterIP   10.109.47.222   <none>        6379/TCP                        48d
service/quote              ClusterIP   10.107.83.40    <none>        80/TCP                          48d
service/tomcat-service     ClusterIP   10.108.198.15   <none>        8080/TCP                        47d

NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ambassador          2/2     2            2           48d
deployment.apps/ambassador-agent    2/2     2            2           48d
deployment.apps/ambassador-redis    2/2     2            2           48d
deployment.apps/quote               1/1     1            1           48d
deployment.apps/tomcat-deployment   3/3     3            3           48d

NAME                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/ambassador-96bd85767           2         2         2       48d
replicaset.apps/ambassador-agent-68d647d7cf    2         2         2       48d
replicaset.apps/ambassador-redis-584cd89b45    2         2         2       48d
replicaset.apps/quote-856df6d5b7               1         1         1       48d
replicaset.apps/tomcat-deployment-7db86c59b7   3         3         3       48d

通過hostIP+service/ambassador-admin的port在瀏覽器中訪問,可以看到ambassador的管理頁面,例如本次測(cè)試的hostIP+port為http://192.168.163.104:31523/,瀏覽器中輸入,看到如下頁面,可以看到Ambassador 的版本、ID等相關(guān)信息,以及已經(jīng)部署的路由URL。


Ambassador.png

Ambassador.png

部署Route

Ambassador部署Route很靈活,可以通過服務(wù)名稱,IP、域名三種方式,特別方便。

1、通過服務(wù)名稱部署Route
我已經(jīng)在k8s部署了名為tomcat-service的服務(wù),下面來部署路由,YAML文件如下:

apiVersion: getambassador.io/v2
kind: Mapping
metadata:
    name: tomcat
spec:
    prefix: /tomcat/
    service: tomcat-service:8080

通過kubectl apply -f 部署后,在瀏覽器中可以通過hostIP+service/ambassador的port+prefix訪問,如本測(cè)試為https://192.168.163.104:31058/tomcat/,可以看到已經(jīng)路由到了tomcat

tomcat.png

2、通過IP部署Route
我已經(jīng)啟動(dòng)了nginx,其IP為192.168.211.92,下面來部署路由,YAML文件如下:

apiVersion: getambassador.io/v2
kind: Mapping
metadata:
    name: nginx
spec:
    prefix: /nginx/
    service: 192.168.211.92
    host_rewrite: 192.168.211.92

通過kubectl apply -f 部署后,在瀏覽器中可以通過hostIP+service/ambassador的port+prefix訪問,如本測(cè)試為https://192.168.163.104:31058/nginx/

nginx.png

3、通過域名部署Route
下面來部署一個(gè)baidu.com的路由,YAML文件如下:

apiVersion: getambassador.io/v2
kind: Mapping
metadata:
    name: baidu
spec:
    prefix: /baidu/
    service: https://www.baidu.com
    host_rewrite: www.baidu.com

通過kubectl apply -f 部署后,在瀏覽器中可以通過hostIP+service/ambassador的port+prefix訪問,如本測(cè)試為https://192.168.163.104:31058/baidu/

baidu.png

可以看出已經(jīng)順利訪問到百度。

Ambassador的部署和基礎(chǔ)使用已經(jīng)講完了,如果想了解更多內(nèi)容,建議訪問官網(wǎng),github或者gitee。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容