Go&Kubernetes: 빠르게 발전하는 Golang 마이크로 서비스

원격 렌더링 및 Golang으로 클라우드 개발 환경 구축


Kubernetes는 하나의 서비스에서 수천 개의 서비스까지 모든 규모로 마이크로 서비스 프로그램을 배치하고 확장할 수 있는 용기 배열 플랫폼입니다.Kubernetes의 힘을 방출하는 것은 일반적으로 처음 보기보다 더 복잡하다. 응용 프로그램 개발자의 학습 곡선은 특히 가파르다.무엇을 해야 할지 아는 것은 성공의 절반에 불과하다. 그리고 가장 좋은 도구를 선택해서 이 일을 완성해야 한다.그렇다면 고 개발자는 어떻게 Kubernetes에서 신속하고 효과적인 개발 작업 흐름을 만듭니까?
Kubernetes에서 효율적인 개발 작업 흐름을 만들 때 응용 프로그램 개발자는 두 가지 독특한 도전에 직면한다.
  • 의 대부분 개발 작업 흐름은 로컬 개발에 최적화되었고 Kubernetes 응용 프로그램의 디자인은 클라우드 컴퓨팅에 대한 것이다.
  • Kubernetes 응용 프로그램이 복잡한 마이크로 서비스 체계 구조로 변함에 따라 개발 환경도 더욱 복잡해졌다. 왜냐하면 모든 마이크로 서비스에 추가 의존항이 증가했기 때문이다.이러한 서비스는 전형적인 로컬 개발 환경에서 사용할 수 있는 자원보다 더 많은 자원을 필요로 하기 곧 시작할 것이다.
  • 이 강좌에서 Kubernetes에 개발 환경을 설정하고 Golang 마이크로 서비스를 변경할 것입니다.일반적으로 로컬에서 개발하려면 용기를 구축하고 등록표를 전송하며 배치해야 코드 변경의 효과를 볼 수 있습니다.대신 Telepresence을 사용하여 변경 내용을 즉시 확인할 수 있습니다.

    1단계: 샘플 Microservices 어플리케이션 배포


    우리의 예시에 따르면, 우리는 자원 집약형 자바 서비스와 대형 데이터 저장소 사이에서 실행되는 Go 서비스에 대해 코드 변경을 진행할 것이다.먼저 3개의 서비스로 구성된 샘플 마이크로서비스 애플리케이션을 구축합니다.
  • Very Large Java Service: Java로 작성된 메모리 집약형 서비스로 어플리케이션
  • 에 프런트엔드 그래픽 및 웹 페이지 생성
  • DataProcessingService: 두 서비스 간의 정보 요청을 관리하는 Golang 서비스입니다.
  • VeryLargeDataStore: Edgey Corp 스토어의 샘플 데이터를 포함하는 대규모 데이터 스토리지 서비스
  • 참고: VeryLarge 서비스를 VeryLarge 서비스라고 부르는 이유는 로컬 환경에 CPU와 RAM이 충분하지 않거나 개발자마다 추가 비용을 지불하고 싶지 않을 수 있다는 사실을 강조하기 위해서입니다.

    이 구조도에서 사용자의 요청이 입구 컨트롤러를 통해 저희 서비스로 연결되는 것을 알 수 있습니다.간단하게 보기 위해서 본 강좌에서 우리는 deploying an ingress controller의 절차를 건너뛸 것이다.원격 렌더링을 사용하여 직접 설치할 준비가 되어 있고 포털 컨트롤러를 설치하는 간단한 방법이 필요한 경우 Ambassador Edge Stack을 살펴보면 K8s Initializer을 손쉽게 구성할 수 있습니다.
    Kubernetes 클러스터에 예제 애플리케이션을 배치합니다.
        kubectl apply -f [https://raw.githubusercontent.com/datawire/edgey-corp-go/main/k8s-config/edgey-corp-web-app-no-mapping.yaml](https://raw.githubusercontent.com/datawire/edgey-corp-go/main/k8s-config/edgey-corp-web-app-no-mapping.yaml)
    

    2단계: 현지 바둑 개발 환경 설정

    DataProcessingService 서비스를 편집할 수 있는 로컬 개발 환경이 필요합니다.위의 아키텍처에서 보듯이 DataProcessingServiceVeryLargeJavaServiceVeryLargeDataStore에 모두 의존하므로 이 서비스를 변경하기 위해 다른 서비스와 상호 작용해야 합니다.우리 시작합시다!
  • 은 GitHub 에서 이 애플리케이션의 저장소를 복제합니다.
  •     git clone [https://github.com/datawire/edgey-corp-go.git](https://github.com/datawire/edgey-corp-go.git)
    
  • 디렉토리를 DataProcessing Service로 변경
  •     cd edgey-corp-go/DataProcessingService
    
  • Go 서버를 시작합니다.
  •     go build main.go && ./main
    
  • 서비스 실행 보기
  •     10:23:41 app | Welcome to the DataProcessingGoService!
    
  • 은 다른 터미널 창에서curl localhost: 3000/color에서 서비스가 파란색으로 되돌아오는지 확인합니다.
  •     $ curl localhost:3000/color
    
        “blue”
    

    3단계: 원격으로 신속한 발전


    컨테이너 이미지가 구축되고 저장소로 전송되며 Kubernetes 클러스터에 배치될 때까지 기다리지 않고Telepresence를 사용합니다.원격으로 로컬 개발과 Kubernetes 그룹 사이에 양방향 네트워크 연결을 만들어서 fast, efficient Kubernetes development을 지원합니다.
  • 다운로드 원격 방문 감상(~60MB):
  •     # Mac OS X
        sudo curl -fL [https://app.getambassador.io/download/tel2/darwin/amd64/latest/telepresence](https://app.getambassador.io/download/tel2/darwin/amd64/latest/telepresence) -o /usr/local/bin/telepresence
    
        #Linux
        sudo curl -fL https://app.getambassador.io/download/tel2/linux/amd64/latest/telepresence -o /usr/local/bin/telepresence
    
  • 바이너리 파일 실행 가능
  •     $ sudo chmod a+x /usr/local/bin/telepresence
    
  • 원격 클러스터 연결을 통한 원격 환경 테스트
  •     $ telepresence connect
    
  • Kubernetes API 서버에 요청:
  •     $ curl -ik [https://kubernetes.default.svc.cluster.local](https://kubernetes.default.svc.cluster.local)
    
        HTTP/1.1 401 Unauthorized
        Cache-Control: no-cache, private
        Content-Type: application/json
        Www-Authenticate: Basic realm="kubernetes-master"
        Date: Tue, 09 Feb 2021 23:21:51 GMT
    
    위대하다원격 디스플레이를 성공적으로 설정했습니다.Kubernetes API 서버에 보내는 요청을 차단하고 인터넷이 아닌 그룹과 직접 연결하는 원격 디스플레이를 사용합니다.

    4. Golang 서비스 차단


    차단은 원격으로 나타나는 루트 규칙이다.우리는 포트 3000에서 실행되는 DataProcessingService의 로컬 버전이 아닌 DataProcessingService의 루트를 차단할 수 있습니다.
  • 차단 생성
  •     telepresence intercept dataprocessingservice — port 3000
    

  • 원격으로 응용 프로그램에 직접 접근할 수 있습니다.http://verylargejavaservice:8080을 방문하십시오.마찬가지로 원격 디스플레이는 브라우저의 요청을 캡처하고 Kubernetes 그룹으로 직접 연결합니다.
  • 에서 코드를 변경합니다.edgey corp go/DataProcessingService/main을 엽니다.색상 변수의 값을 파란색에서 주황색으로 변경합니다.파일을 저장하고 이전 서버의 예를 멈추고 gobuild main을 사용하여 다시 시작합니다.가다매인.
  • 브라우저에서 페이지를 다시 불러옵니다. 색깔이 파란색에서 주황색으로 어떻게 변하는지 보십시오!
  • 이렇게!원격 디스플레이를 통해 로컬 서비스 편집에서 더 큰 응용 프로그램에 변경 사항을 배치하는 속도가 얼마나 빠른지 알 수 있습니다.매번 변경된 용기를 구축하고 배치하는 원시 과정과 비교하면 얼마나 많은 시간을 절약할 수 있는지 쉽게 알 수 있습니다. 특히 우리가 더 복잡한 변경을 하거나 더 큰 서비스를 실행할 때.

    원격 현장 환경에 대한 자세한 정보


    오늘 우리는 Kubernetes에서 빠르게 반복적으로 실행되는 Golang 마이크로 서비스를 원격으로 어떻게 사용하는지 배웠다.현재 우리는 느린 로컬 개발 과정을 기다리지 않고 실시간 피드백 순환과 효율적인 클라우드 로컬 개발 환경을 통해 신속하게 교체할 수 있다.
    트루에 대한 자세한 내용을 보려면 다음 리소스를 참조하십시오.
  • Read the docs
  • 보기
  • Intercepts
  • 이해 Preview URLs, 팀원들과 쉽게 협업
  • Join our Slack channel 네트워킹 커뮤니티 연결
  • 다음 강좌에서 로컬 Kubernetes 개발 환경을 원격 디스플레이로 설정하고 Delve를 사용하여 인터럽트를 설정하고 인터럽트 서비스를 디버깅할 것입니다.더 많은 강좌가 있을 때 통지를 받으려면 check out our website으로 전화하거나

    좋은 웹페이지 즐겨찾기