최근 몇 년 동안 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!