Install Ambassador Edge Stack(@DOKS)

下記サイトを参考に、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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です