AKS(Azure Kubernetes Service)에서 Open Service Mesh와 통합
OSM(Open Service Mesh) 추가 기능은 오픈 소스 프로젝트뿐만 아니라 Azure에서 제공하는 기능과 통합됩니다.
참고 항목
CNCF(클라우드 네이티브 컴퓨팅 재단)에서 OSM(Open Service Mesh) OSM(Open Service Mesh)의 사용을 중지함에 따라 OSM 구성을 식별하고 그에 상응하는 Istio 구성으로 마이그레이션하는 것이 좋습니다. OSM에서 Istio로 마이그레이션하는 방법에 대한 자세한 내용은 Istio로 OSM(Open Service Mesh) 구성 마이그레이션 지침을 참조하세요.
Important
오픈 소스 프로젝트와의 통합은 AKS 지원 정책에서 다루지 않습니다.
수신
수신을 사용하면 메시 외부의 트래픽을 메시 내의 서비스로 라우팅할 수 있습니다. OSM을 사용하면 메시에서 작동하도록 대부분의 수신 솔루션을 구성할 수 있지만 OSM은 다음 솔루션 중 하나에서 가장 잘 작동합니다.
참고 항목
현재 AGIC(Azure Gateway 수신 컨트롤러)는 HTTP 백 엔드에서만 작동합니다. AGIC를 사용하도록 OSM을 구성하는 경우 AGIC는 HTTPS 및 mTLS와 같은 다른 백 엔드에 사용되지 않습니다.
HTTP 수신에 대한 OSM 추가 기능을 통해 AGIC(Azure Gateway 수신 컨트롤러) 사용
Important
AGIC(Azure Gateway 수신 컨트롤러)는 HTTPS 수신용으로 구성할 수 없습니다.
네임스페이스 만들기 및 애플리케이션 서비스 배포
AGIC 수신 컨트롤러 설치.
kubectl create ns
명령을 사용하여 애플리케이션 서비스에 대한 네임스페이스를 만듭니다.kubectl create ns httpbin
osm namespace add
OSM CLI 명령을 사용하여 메시에 네임스페이스를 추가합니다.osm namespace add httpbin
kubectl apply
명령을 사용하여 네임스페이스에 애플리케이션 서비스를 배포합니다.export RELEASE_BRANCH=release-v1.2 kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm-docs/$RELEASE_BRANCH/manifests/samples/httpbin/httpbin.yaml -n httpbin
kubectl get pods
명령을 사용하여 Pod가 가동되는지 확인하고 envoy 사이드카를 삽입합니다.kubectl get pods -n httpbin
출력은 다음 예제 출력과 비슷하게 됩니다.
NAME READY STATUS RESTARTS AGE httpbin-7c6464475-9wrr8 2/2 Running 0 6d20h
kubectl get svc
명령을 사용하여 서비스의 세부 정보를 나열합니다.kubectl get svc -n httpbin
출력은 다음 예제 출력과 비슷하게 됩니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin ClusterIP 10.0.92.135 <none> 14001/TCP 6d20h
수신 구성 배포 및 애플리케이션 서비스에 대한 액세스 확인
외부 클라이언트가
14001
포트에서httpbin
서비스에 액세스할 수 있도록kubectl apply
명령을 사용하여Ingress
및IngressBackend
구성을 배포합니다.kubectl apply -f <<EOF apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: httpbin namespace: httpbin annotations: kubernetes.io/ingress.class: azure/application-gateway spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: httpbin port: number: 14001 --- kind: IngressBackend apiVersion: policy.openservicemesh.io/v1alpha1 metadata: name: httpbin namespace: httpbin spec: backends: - name: httpbin port: number: 14001 # targetPort of httpbin service protocol: http sources: - kind: IPRange name: 10.0.0.0/8 EOF
kubectl get ingress
명령을 사용하여Ingress
개체가 성공적으로 배포되었는지 확인하고 외부 IP 주소를 기록해 둡니다.kubectl get ingress -n httpbin
출력은 다음 예제 출력과 비슷하게 됩니다.
NAME CLASS HOSTS ADDRESS PORTS AGE httpbin <none> * 20.85.173.179 80 6d20h
kubectl get ingressbackend
명령을 사용하여IngressBackend
개체가 성공적으로 배포되었는지 확인합니다.kubectl get ingressbackend -n httpbin
출력은 다음 예제 출력과 비슷하게 됩니다.
NAME STATUS httpbin committed
수신 서비스의 외부 IP 주소 및 다음
curl
명령을 사용하여httpbin
서비스에 액세스할 수 있는지 확인합니다.curl -sI http://<external-ip>/get
status 200
의 응답을 받는지 확인합니다.
메트릭 관찰 가능성
메트릭의 관찰 가능성을 통해 메시의 메트릭과 메시의 배포를 볼 수 있습니다. OSM을 사용하면 메트릭 관찰 가능성을 위해 Prometheus 및 Grafana를 사용할 수 있지만 이러한 통합은 AKS 지원 정책이 적용되지 않습니다.
OSM을 Azure Monitor와 통합할 수도 있습니다.
메시에서 메트릭을 사용하도록 설정하여 Azure Monitor와 통합하려면 다음 필수 구성 요소가 있는지 확인합니다.
- 클러스터에서 Azure Monitor 사용
- AKS 클러스터에 대해 OSM 추가 기능을 사용하도록 설정합니다.
- 메시에 애플리케이션 네임스페이스를 온보딩합니다.
osm metrics enable
명령을 사용하여 메시의 네임스페이스에 대한 메트릭을 사용하도록 설정합니다.osm metrics enable --namespace myappnamespace
Azure Monitor에서 네임스페이스를 모니터링할 수 있도록 하는
kube-system
네임스페이스에 ConfigMap을 만듭니다. 예를 들어 다음 콘텐츠로monitor-configmap.yaml
을 만들어myappnamespace
를 모니터링합니다.kind: ConfigMap apiVersion: v1 data: schema-version: v1 config-version: ver1 osm-metric-collection-configuration: |- # OSM metric collection settings [osm_metric_collection_configuration] [osm_metric_collection_configuration.settings] # Namespaces to monitor monitor_namespaces = ["myappnamespace"] metadata: name: container-azm-ms-osmconfig namespace: kube-system
kubectl apply
명령을 사용하여 ConfigMap을 적용합니다.kubectl apply -f monitor-configmap.yaml
Azure Portal로 이동하고 AKS 클러스터를 선택합니다.
모니터링에서 로그를 선택합니다.
모니터링 섹션에서
InsightsMetrics
테이블을 쿼리하여 활성화된 네임스페이스의 메트릭을 봅니다. 예를 들어 다음 쿼리는 default 네임스페이스에 대한 envoy 메트릭을 보여 줍니다.InsightsMetrics | where Name contains "envoy" | extend t=parse_json(Tags) | where t.namespace == "default"
자동화 및 개발자 도구
OSM은 특정 자동화 프로젝트 및 개발자 도구와 통합하여 운영자와 개발자가 애플리케이션을 빌드하고 릴리스할 수 있도록 도와줍니다. 예를 들어 OSM은 프로그레시브 전달을 위해 Flagger와 통합되고 애플리케이션을 빌드하기 위해 Dapr과 통합됩니다. OSM과 Flagger 및 Dapr의 통합은 AKS 지원 정책이 적용되지 않습니다.
외부 기관
외부 권한 부여를 사용하면 HTTP 요청의 권한 부여를 외부 서비스로 오프로드할 수 있습니다. OSM은 OPA(Open Policy Agent)와 통합하여 외부 권한 부여를 사용할 수 있지만 해당 통합은 AKS 지원 정책이 적용되지 않습니다.
인증서 관리
OSM에는 AKS 클러스터에서 작동하는 데 사용하는 여러 유형의 인증서가 있습니다. OSM에는 기본적으로 사용되는 Tresor라는 자체 인증서 관리자가 포함되어 있습니다. 또는 OSM을 사용하면 Hashicorp Vault 및 cert-manager와 통합할 수 있지만 이러한 통합은 AKS 지원 정책이 적용되지 않습니다.
다음 단계
이 문서에서는 Azure 및 일부 오픈 소스 프로젝트에서 제공하는 기능과 OSM(Open Service Mesh) 추가 기능 통합에 대해 설명했습니다. OSM에 대한 자세한 내용은 AKS의 OSM 정보를 참조하세요.
Azure Kubernetes Service