>백엔드 개발 >Golang >Kubernetes 및 Istio를 사용하여 Beego에서 서비스 메시 구현

Kubernetes 및 Istio를 사용하여 Beego에서 서비스 메시 구현

王林
王林원래의
2023-06-22 10:20:16752검색

최근 몇 년 동안 Kubernetes와 Istio는 클라우드 네이티브 애플리케이션으로 전환하는 데 없어서는 안 될 두 가지 도구가 되었습니다. Kubernetes는 사용자가 컨테이너화된 애플리케이션을 자동으로 배포, 확장 및 관리하는 데 도움이 되는 컨테이너 오케스트레이션 도구인 반면, Istio는 사용자가 마이크로서비스 아키텍처를 더 잘 관리하고 모니터링할 수 있도록 지원하는 서비스 메시입니다. 이 글에서는 Beego 프레임워크에서 Kubernetes와 Istio를 사용하여 서비스 메시를 구현하는 방법을 소개합니다.

먼저 Kubernetes에 Beego 애플리케이션을 배포해야 합니다. 편의를 위해 Minikube를 사용하여 로컬 Kubernetes 클러스터를 실행합니다. Minikube와 Kubernetes 클라이언트를 설치한 후 다음 명령을 사용하여 클러스터를 시작할 수 있습니다.

minikube start

그런 다음 Beego 애플리케이션을 배포하기 위한 Kubernetes 배포를 생성해야 합니다. 다음 YAML 파일을 사용하여 배포를 정의할 수 있습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: beego-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: beego-app
  template:
    metadata:
      labels:
        app: beego-app
    spec:
      containers:
      - name: beego-app
        image: my-beego-app-image
        ports:
        - containerPort: 8080

이 YAML 파일에서는 Beego 애플리케이션을 실행하기 위한 "beego-app"이라는 배포를 정의합니다. 이 배포는 컨테이너에서 실행되고 포트 8080에서 서비스를 노출합니다.

다음으로 Kubernetes 클러스터 외부에서 Beego 애플리케이션에 액세스하기 위한 Kubernetes 서비스를 생성해야 합니다. 다음 YAML 파일을 사용하여 서비스를 정의할 수 있습니다.

apiVersion: v1
kind: Service
metadata:
  name: beego-app-service
spec:
  selector:
    app: beego-app
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 8080
  type: NodePort

이 YAML 파일에서는 Beego 배포를 가리키고 포트 80을 컨테이너 포트 8080에 매핑하는 "beego-app-service"라는 서비스를 정의합니다. 또한 서비스 유형을 NodePort로 지정했습니다. 이는 Kubernetes가 서비스에 액세스하기 위해 노드 IP와 노드 포트를 할당한다는 의미입니다.

이제 다음 명령을 사용하여 배포 및 서비스를 생성할 수 있습니다.

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

이 단계를 완료하면 이제 Kubernetes 클러스터 외부에서 Beego 애플리케이션에 액세스할 수 있습니다. 그러나 클러스터 내에서 서비스 검색 및 로드 밸런싱도 구현해야 합니다.

여기서 Istio가 사용됩니다. Istio를 사용하면 내부 서비스 간의 통신 및 로드 밸런싱을 쉽게 구현할 수 있습니다. Kubernetes 클러스터에 Istio를 설치한 후 다음 명령을 사용하여 Istio 자동 삽입을 활성화할 수 있습니다.

kubectl label namespace default istio-injection=enabled

그런 다음 In에서 다음 YAML 파일을 사용하여 HTTP 요청을 Beego 애플리케이션으로 라우팅하는 Istio 가상 서비스를 정의할 수 있습니다.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: beego-app-virtual-service
spec:
  hosts:
  - "*"
  gateways:
  - istio-system/ingressgateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: beego-app-service.default.svc.cluster.local
        port:
          number: 80

이 YAML 파일에서 HTTP 요청을 이전에 만든 "beego-app-service" 서비스로 라우팅하고 이를 포트 80에 매핑하는 "beego-app-virtual-service"라는 가상 서비스를 정의합니다.

가상 서비스가 활성화되면 이제 클러스터 내부의 Beego 애플리케이션에 액세스할 수 있습니다. 그러나 서비스 메시를 더 잘 관리하기 위해 Istio의 모니터링 및 추적 기능을 사용할 수도 있습니다. 예를 들어, 다음 YAML 파일을 사용하여 Istio DestinationRule을 정의하여 들어오고 나가는 모든 트래픽에 대한 추적 및 지표를 활성화할 수 있습니다.

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: beego-app-destination-rule
spec:
  host: beego-app-service.default.svc.cluster.local
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
    portLevelSettings:
    - port:
        number: 80
      tls:
        mode: ISTIO_MUTUAL
    connectionPool:
      http:
        http1MaxPendingRequests: 100
        maxRequestsPerConnection: 5
      tcp:
        maxConnections: 1000
    outlierDetection:
      consecutiveErrors: 5
      interval: 5s
      baseEjectionTime: 30s
      maxEjectionPercent: 50

이 YAML 파일에서는 "beego-app-destination- rule"이라는 Istio DestinationRule을 정의합니다. Istio의 트래픽 제어 및 오류 감지 정책을 정의하는 데 사용됩니다.

Kubernetes와 Istio를 사용하여 서비스 메시를 구현하면 마이크로서비스 아키텍처를 더 효과적으로 관리하고 모니터링할 수 있습니다. 이 게시물에서는 Beego 프레임워크 내에서 Kubernetes 및 Istio를 사용하여 애플리케이션을 배포하고 관리하는 방법을 다루었습니다.

위 내용은 Kubernetes 및 Istio를 사용하여 Beego에서 서비스 메시 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.