검색

2.15. 게이트웨이 마이그레이션

download PDF

네트워크 관리자로서 수신 및 송신 게이트웨이를 배포하는 기본 방법은 게이트웨이 삽입을 사용하여 Deployment 리소스를 사용하는 것입니다.

2.15.1. 게이트웨이 마이그레이션 정보

Red Hat OpenShift Service Mesh 2.x에서 Service Mesh Operator는 기본적으로 컨트롤 플레인 네임스페이스에 수신 및 송신 게이트웨이를 생성합니다. ServiceMeshControlPlane 리소스에서 추가 게이트웨이를 정의할 수 있습니다.

게이트웨이 삽입을 사용하여 배포 리소스로 수신 및 송신 게이트웨이를 배포하면 유연성 및 제어가 향상됩니다. 이 배포 접근 방식은 컨트롤 플레인 리소스가 아닌 해당 애플리케이션과 함께 게이트웨이를 관리할 수 있기 때문에 더 나은 방법입니다. 따라서 기본 게이트웨이를 비활성화하고, Service Mesh Control Plane 선언에서 벗어나 게이트웨이 삽입을 사용해야 합니다.

2.15.2. SMCP 정의 게이트웨이에서 게이트웨이 삽입으로 마이그레이션

다음 절차에서는 ServiceMeshControlPlane 리소스에 정의된 게이트웨이에서 게이트웨이 주입을 사용하여 관리되는 게이트웨이로 제로 다운타임으로 마이그레이션하는 방법을 설명합니다. 이 마이그레이션은 기존 게이트웨이 서비스 오브젝트를 사용하여 게이트웨이 주입을 사용하여 생성된 새 게이트웨이 배포를 대상으로 합니다.

사전 요구 사항

  • cluster-admin으로 OpenShift Container Platform 웹 콘솔에 로그인되어 있습니다.
  • Red Hat OpenShift Service Mesh Operator가 설치되어 있어야 합니다.
  • ServiceMeshControlPlane 리소스를 배포해야 하며 구성에 수신 게이트웨이가 있습니다.

프로세스

  1. 게이트웨이 삽입을 사용하도록 구성된 새 수신 게이트웨이를 만듭니다.

    참고

    이 절차에서는 ServiceMeshControlPlane 리소스에 정의된 기본 수신 게이트웨이 배포에서 게이트웨이 삽입으로 마이그레이션됩니다. SMCP에 구성된 추가 수신 게이트웨이에서 마이그레이션하도록 절차를 수정할 수 있습니다.

    게이트웨이 삽입이 있는 수신 게이트웨이 리소스의 예

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: istio-ingressgateway-canary
      namespace: istio-system 1
    spec:
      selector:
        matchLabels:
          app: istio-ingressgateway
          istio: ingressgateway
      template:
        metadata:
          annotations:
            inject.istio.io/templates: gateway
          labels: 2
            app: istio-ingressgateway
            istio: ingressgateway
            sidecar.istio.io/inject: "true"
        spec:
          containers:
            - name: istio-proxy
              image: auto
          serviceAccountName: istio-ingressgateway
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: istio-ingressgateway
      namespace: istio-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: secret-reader
      namespace: istio-system
    rules:
      - apiGroups: [""]
        resources: ["secrets"]
        verbs: ["get", "watch", "list"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: istio-ingressgateway-secret-reader
      namespace: istio-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: secret-reader
    subjects:
      - kind: ServiceAccount
        name: istio-ingressgateway
    ---
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy 3
    metadata:
      name: gatewayingress
      namespace: istio-system
    spec:
      podSelector:
        matchLabels:
          istio: ingressgateway
      ingress:
        - {}
      policyTypes:
        - Ingress

    1
    게이트웨이 삽입 배포 및 모든 지원 리소스는 SMCP 정의 게이트웨이와 동일한 네임스페이스에 배포해야 합니다.
    2
    Pod 템플릿에 지정된 라벨에 기존 SMCP 정의 게이트웨이와 연결된 Service 오브젝트에 지정된 모든 라벨 선택기가 포함되어 있는지 확인합니다.
    3
    클러스터 외부에서 새 게이트웨이에 대한 액세스 권한을 부여합니다. 이 액세스는 ServiceMeshControlPlane 리소스의 spec.security.manageNetworkPolicy 가 기본 설정인 true 로 설정될 때마다 필요합니다.
  2. 새 게이트웨이 배포가 요청을 성공적으로 처리하고 있는지 확인합니다.

    ServiceMeshControlPlane 리소스에서 액세스 로깅이 구성된 경우 새 게이트웨이 배포의 액세스 로그를 확인하여 동작을 확인합니다.

  3. 이전 배포를 축소하고 새 배포를 확장합니다.

    다음 단계를 수행하여 이전 게이트웨이 배포에서 새 게이트웨이 배포로 트래픽을 점진적으로 변경합니다.

    1. 다음 명령을 실행하여 새 게이트웨이 배포의 복제본 수를 늘립니다.

      $ oc scale -n istio-system deployment/<new_gateway_deployment> --replicas <new_number_of_replicas>
    2. 다음 명령을 실행하여 이전 게이트웨이 배포의 복제본 수를 줄입니다.

      $ oc scale -n istio-system deployment/<old_gateway_deployment> --replicas <new_number_of_replicas>
    3. 이전 두 명령을 실행하여 반복합니다. 새 게이트웨이 배포의 복제본 수를 늘리고 이전 게이트웨이 배포의 복제본 수를 줄입니다. 새 게이트웨이 배포에서 gateway Service 오브젝트에 대한 모든 트래픽을 처리할 때까지 계속 반복합니다.
  4. 다음 명령을 실행하여 gateway Service 오브젝트에서 app.kubernetes.io/managed-by 레이블을 제거합니다.

    $ oc label service -n istio-system istio-ingressgateway app.kubernetes.io/managed-by-

    라벨을 제거하면 ServiceMeshControlPlane 리소스에서 게이트웨이가 비활성화될 때 서비스가 삭제되지 않습니다.

  5. 다음 명령을 실행하여 gateway Service 오브젝트에서 ownerReferences 오브젝트를 제거합니다.

    $ oc patch service -n istio-system istio-ingressgateway --type='json' -p='[{"op": "remove", "path": "/metadata/ownerReferences"}]'

    이 오브젝트를 제거하면 ServiceMeshControlPlane 리소스가 삭제될 때 서비스가 가비지 수집되지 않습니다.

  6. 다음 명령을 실행하여 ServiceMeshControlPlane 리소스에서 관리하는 이전 게이트웨이 배포를 비활성화합니다.

    $ oc patch smcp -n istio-system <smcp_name> --type='json' -p='[{"op": "replace", "path": "/spec/gateways/ingress/enabled", "value": false}]'
    참고

    이전 수신 게이트웨이 Service 개체가 비활성화되면 삭제되지 않습니다. 이 Service 오브젝트를 파일에 저장하고 새 게이트웨이 삽입 리소스와 함께 관리할 수 있습니다.

2.15.3. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.