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 수신용으로 구성할 수 없습니다.

네임스페이스 만들기 및 애플리케이션 서비스 배포

  1. AGIC 수신 컨트롤러 설치.

  2. kubectl create ns 명령을 사용하여 애플리케이션 서비스에 대한 네임스페이스를 만듭니다.

    kubectl create ns httpbin
    
  3. osm namespace add OSM CLI 명령을 사용하여 메시에 네임스페이스를 추가합니다.

    osm namespace add httpbin
    
  4. 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
    
  5. kubectl get pods 명령을 사용하여 Pod가 가동되는지 확인하고 envoy 사이드카를 삽입합니다.

    kubectl get pods -n httpbin
    

    출력은 다음 예제 출력과 비슷하게 됩니다.

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. 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
    

수신 구성 배포 및 애플리케이션 서비스에 대한 액세스 확인

  1. 외부 클라이언트가 14001 포트에서 httpbin 서비스에 액세스할 수 있도록 kubectl apply 명령을 사용하여 IngressIngressBackend 구성을 배포합니다.

    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
    
  2. kubectl get ingress 명령을 사용하여 Ingress 개체가 성공적으로 배포되었는지 확인하고 외부 IP 주소를 기록해 둡니다.

    kubectl get ingress -n httpbin
    

    출력은 다음 예제 출력과 비슷하게 됩니다.

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. kubectl get ingressbackend 명령을 사용하여 IngressBackend 개체가 성공적으로 배포되었는지 확인합니다.

    kubectl get ingressbackend -n httpbin
    

    출력은 다음 예제 출력과 비슷하게 됩니다.

    NAME      STATUS
    httpbin   committed
    
  4. 수신 서비스의 외부 IP 주소 및 다음 curl 명령을 사용하여 httpbin 서비스에 액세스할 수 있는지 확인합니다.

    curl -sI http://<external-ip>/get
    
  5. status 200의 응답을 받는지 확인합니다.

메트릭 관찰 가능성

메트릭의 관찰 가능성을 통해 메시의 메트릭과 메시의 배포를 볼 수 있습니다. OSM을 사용하면 메트릭 관찰 가능성을 위해 Prometheus 및 Grafana를 사용할 수 있지만 이러한 통합은 AKS 지원 정책이 적용되지 않습니다.

OSM을 Azure Monitor와 통합할 수도 있습니다.

메시에서 메트릭을 사용하도록 설정하여 Azure Monitor와 통합하려면 다음 필수 구성 요소가 있는지 확인합니다.

  • 클러스터에서 Azure Monitor 사용
  • AKS 클러스터에 대해 OSM 추가 기능을 사용하도록 설정합니다.
  • 메시에 애플리케이션 네임스페이스를 온보딩합니다.
  1. osm metrics enable 명령을 사용하여 메시의 네임스페이스에 대한 메트릭을 사용하도록 설정합니다.

    osm metrics enable --namespace myappnamespace
    
  2. 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
    
  3. kubectl apply 명령을 사용하여 ConfigMap을 적용합니다.

    kubectl apply -f monitor-configmap.yaml
    
  4. Azure Portal로 이동하고 AKS 클러스터를 선택합니다.

  5. 모니터링에서 로그를 선택합니다.

  6. 모니터링 섹션에서 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 Vaultcert-manager와 통합할 수 있지만 이러한 통합은 AKS 지원 정책이 적용되지 않습니다.

다음 단계

이 문서에서는 Azure 및 일부 오픈 소스 프로젝트에서 제공하는 기능과 OSM(Open Service Mesh) 추가 기능 통합에 대해 설명했습니다. OSM에 대한 자세한 내용은 AKS의 OSM 정보를 참조하세요.