on
[ServiceMesh] Emissary Ingress/Linkerd
[ServiceMesh] Emissary Ingress/Linkerd
Helm
NS 변경시 오류가 발생했었슴다
helm repo add datawire https://app.getambassador.io helm repo update helm pull datawire/emissary-ingress --untar kubectl create ns emissary helm upgrade emissary -f values.yaml ./ -n emissary
Values.yaml
##1 클라이언트가 진입할 수 있는 LB를 생성하는부분으로 80, 443, 8877의 리스너를 생성한다.
##2 Emissary Ingress(pod)에 Linkerd Service Mesh 통신 구성(클라이언트가 들어오는 Inboud는 스킵 설정)한다.
##3 Mapping(routing)에서 사용될 resolver를 생성
##4 Emissary Ingress의 리스너를 생성(80, 443) / 해당 리소스가 없을때 통신이 안됬었다.
1번과 매칭되는거 같음(8877은 왜 되는건지 의문이다..)
## 1 148 service: 149 type: LoadBalancer 150 # Note that target http ports need to match your ambassador configurations service_port, 151 # https://www.getambassador.io/reference/modules/#the-ambassador-module 152 ports: 153 - name: http 154 port: 80 155 targetPort: 8080 156 # protocol: TCP 157 # nodePort: 30080 158 # hostPort: 80 159 - name: https 160 port: 443 161 targetPort: 8443 162 #/ambassador/v0/diag/ 173 - name: admin 174 port: 8877 175 targetPort: 8877 183 annotations: 184 service.beta.kubernetes.io/aws-load-balancer-name: 이름 185 service.beta.kubernetes.io/aws-load-balancer-type: 타입 186 service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing 187 service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true 188 service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: true ## 2 274 podAnnotations: 275 config.linkerd.io/skip-inbound-ports: 80,443,8877 276 linkerd.io/inject: enabled ## 3 337 resolvers: # +doc-gen:break 338 endpoint: 339 create: true 340 name: endpoint ## 4 413 createDefaultListeners: true
ResourceMonitor
프로메테우스 스택에서 서비스 모니터를 통해 Emissary Ingress 메트릭을 수집하는 설정하게해주는 리소스이다.
# Helm > template/Prometheus-stack-svc-mon.yaml apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: ambassador-monitor namespace: prometheus-stack 네임스페이스 명 labels: release: prometheus-stack spec: namespaceSelector: matchNames: - emissary selector: matchLabels: service: ambassador-admin endpoints: - path: /metrics port: ambassador-admin
APP/Mapping
데이터가 들어올 실제 APP으로 Emissary Ingress를 통해 들어온 데이터를 APP쪽으로 전달하게 해주는 설정이다.
apiVersion: getambassador.io/v3alpha1 kind: Mapping metadata: name: spring-boot spec: hostname: "*" prefix: /springboot # https://www.getambassador.io/docs/emissary/latest/topics/using/intro-mappings/ # [scheme://][service][.namespace][:port] service: http://springboot-svc-clusterip.springboot-canary:7070 #https://www.getambassador.io/docs/emissary/latest/topics/running/resolvers/ resolver: endpoint # https://www.getambassador.io/docs/emissary/latest/topics/running/load-balancer/ load_balancer: policy: round_robin
Admin/Grafana/Linkerd
Admin(8877) Page
Emissary의 설정 정보들을 확인할 수 있다.
Grafana Dashboard(4698)
프로메테우스 스택에서 수집한 리소스를 확인할 수 있다.
Linkerd Dashboard
Emissary Ingress를 통해 데이터가 APP쪽으로 인입되는것을 확인할 수 있다.
from http://ekwkqk12.tistory.com/50 by ccl(A) rewrite - 2021-12-11 13:01:33