下記サイトを参考に、DigitalOceanのManaged k8sでAmbassador Edge Stackを導入してみる。
How to Install and Configure Ingress using Ambassador(DigitalOcean)
Helm Repo追加
repo追加
helm repo add datawire https://www.getambassador.io
helm search repo datawire/amb
追加されたrepo確認
NAME CHART VERSION APP VERSION DESCRIPTION
datawire/ambassador 6.9.3 1.14.2 A Helm chart for Datawire Ambassador
datawire/ambassador-operator 0.3.0 v1.3.0 A Helm chart for Kubernetes
AESインストール
chartファイル作成
# Deployment replica count
#
replicaCount: 2
# Resource requests/limits
resources:
limits:
cpu: 600m
memory: 600Mi
requests:
cpu: 200m
memory: 200Mi
AESインストール
helm install ambassador datawire/ambassador --version "6.9.3" --namespace ambassador --create-namespace -f ./ambassador-values-v6.9.3.yaml
各種ステータスをチェック
helm list -n ambassador
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ambassador ambassador 1 2021-12-19 19:48:11.480931 +0900 JST deployed ambassador-6.9.3 1.14.2
doctl compute load-balancer list --format IP,ID,Name,Status
IP ID Name Status
144.126.243.169 43fc2e56-c5ba-4caf-87ce-4dfce109ae4b a360bd7c9ef63463e9f5dd72eff92e28 active
kubectl -n ambassador get svc ambassador
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ambassador LoadBalancer 10.245.116.42 144.126.243.169 80:30912/TCP,443:31660/TCP 6m6s
[AES CRD]Host/Mappingリソース追加
EXTERNAL-IP(load-balancerのIPアドレス)に割り当てられたIPアドレスを当該ゾーンのAレコードに登録しておく。
Hostリソース追加
manifestファイル作成
---
apiVersion: getambassador.io/v2
kind: Host
metadata:
name: dok8s
namespace: ambassador
spec:
hostname: dok8s.net
acmeProvider:
email: example@dok8s.net
tlsSecret:
name: dok8s-tls2-cert
---
apiVersion: getambassador.io/v2
kind: TLSContext
metadata:
name: tls
namespace: ambassador
spec:
secret: dok8s-tls2-cert
hosts:
- dok8s.net
alpn_protocols: h2
manifest適用
kubectl apply -f amb-host.yaml
確認
kubectl -n ambassador get host dok8s ✘ 1
NAME HOSTNAME STATE PHASE COMPLETED PHASE PENDING AGE
dok8s dok8s.net Ready 3d16h
Mappingリソース追加
manifestファイル作成
---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
name: dok8s-nginx
namespace: ambassador
spec:
prefix: /
host: dok8s.net
service: http://dok8s-nginx.dok8s
manifest適用
kubectl apply -f amb-map.yaml
確認
kubectl -n ambassador get mapping dok8s
NAME SOURCE HOST SOURCE PREFIX DEST SERVICE STATE REASON
dok8s dok8s.net / http://dok8s-nginx.dok8s
Proxy Protocol有効化
DigitalOcean Load-BalancerのProxy Protocol設定を有効化するため、
AES LoadBalancerにannotationを追加する。
kubectl -n ambassador annotate svc ambassador "service.beta.kubernetes.io/do-loadbalancer-enable-proxy-protocol=true"
AESのProxy Protocol設定を有効化する。
manifest作成
---
apiVersion: getambassador.io/v2
kind: Module
metadata:
name: ambassador
namespace: ambassador
spec:
config:
use_proxy_proto: true
manifest適用
kubectl apply -f aes_proxy_module.yaml