리트머스 구름과 Okteto 구름의 혼돈 공사

정의에 따르면 클라우드 원생 응용 프로그램은 고도 분포식, 탄성, 고장 방지와 느슨한 결합이다.이것은 쉽게 말할 수 있다. 심지어 도표까지.그러나 응용 프로그램이 서로 다른 고장 조건에서 예상대로 실행되는지 어떻게 검증합니까?
혼돈 공사에 들어가다.혼돈 공학은 생산 과정에서 소프트웨어 시스템에 대해 실험을 하는 학과로 시스템이 동요와 의외의 조건을 견디는 능력에 대한 자신감을 구축하는 데 목적이 있다.혼돈 프로젝트는 우리가 서비스의 약점과 잘못된 설정을 발견하는 데 도움을 줄 수 있는 좋은 도구이다.이것은 클라우드 로컬 응용 프로그램에 특히 중요하다. 분포식과 탄력성 특성 때문에 기본적으로 탄력성이 있어야 한다.
Litmus은 CNCF 모래상자 프로젝트로 운원생 환경에서 혼돈 공사를 실천하는 데 쓰인다.Litmus는 혼돈의 산수를 제공했고 그 중심에서 대량의 혼돈 실험, 상세한 문서, 빠른 프레젠테이션, 그리고 우호적인 지역 사회를 제공했다.이 블로그에서 몇 초 안에 Litmus와 Okteto를 사용하여 응용 프로그램을 혼돈적으로 테스트하는 방법을 보여 드리겠습니다.

리트머스 혼돈 테스트


Litmuschoos 테스트 프로그램을 사용할 때 네 개의 구성 요소를 기억해야 합니다.

혼돈의 산수


이것은 리트머스쇼의 the core part이다.조작원은 실험을 집행하고 실험이 끝난 후에 결과를 보고한다.
directly from the command line, official helm chart 또는 from the Okteto Cloud catalog을 설치할 수 있습니다.

혼돈 실험


이것은 응용 프로그램에서 실행될 혼돈 작업이다.이것은 Kubernetes에 대한 특정한 작업(예를 들어pod를 삭제하거나 네트워크를 차지하는 것)에서 응용 프로그램에 대한 특정한 작업(예를 들어 무작위로 OpenEBS 드라이브를 삭제하는 것)까지입니다.
Litmus Chaos 커뮤니티는 an online hub of chaos experiments을 유지합니다.

혼돈 엔진


혼돈 엔진은 혼돈 실험과 측정된 응용 사이의 유대이다.여기에서 실험의 모든 매개 변수를 지정할 수 있습니다. 예를 들어 지속 시간, 정책 사용/사용 안 함 (예를 들어 감시 사용/사용 안 함) 과 실험 목표를 찾는 방법에 대한 정보(일반적으로 이것은 테스트된 응용 프로그램입니다.)

테스트 중인 응용 프로그램


이것이 바로 혼돈 실험의 목표가 될 응용 프로그램이다.현재 LitmusChaos는 배포, 상태 세트 및 데몬을 지원합니다.기본 설정에서 litmuschaos.io/chaos: "true" 태그를 자원에 추가해야 혼돈 조작부호가 찾을 수 있고 다른 응용 프로그램이 영향을 받지 않도록 합니다.

선결 조건


어플리케이션을 테스트하려면 다음을 설치해야 합니다.
  • okteto CLI.
  • 무료 Okteto Cloud 계좌입니다.
  • kubectl 구성 to talk to Okteto Cloud.
  • 가장 좋아하는 IDE 또는 텍스트 편집기입니다.
  • 혼돈된 개발 환경 구축


    모든 구성 요소를 항상 수동으로 설치할 수 있습니다.반대로 나는 Okteto의 pre-configured development environments을 이용했다.아래의 "Okteto에서 개발"단추를 누르면 혼돈된 개발 환경을 배치할 수 있습니다.



    그러면 Okteo 클라우드 계정에 다음 리소스가 자동으로 배포됩니다.
  • 리트머스 혼돈 산자, Okteto 디렉터리
  • pod 삭제 chaos experiment
  • application under test

  • 혼돈 테스트 응용


    이제 개발 환경이 생겼으니 응용 프로그램을 테스트해 봅시다.이 예에서 우리는 전통적인 Hello World 응용 프로그램을 사용하는데 두 개의 복사본을 배치했다.링크를 클릭하고 몇 번 호출하여 정상적으로 작동하는지 확인하십시오.

    응용 프로그램이 실행됨에 따라 우리는 혼돈 실험을 시작할 준비를 하고 있다.Litmus에서는 ChaosEngine 리소스를 생성합니다.파일 engine.yaml을 만들고 원하는 IDE에서 열고 다음 내용을 붙여넣습니다.
    apiVersion: litmuschaos.io/v1alpha1
    kind: ChaosEngine
    metadata:
      name: pod-killer-chaos
    spec:
      annotationCheck: 'true'
      engineState: 'active'
      appinfo:
        applabel: 'app=hello-world'
        appkind: 'deployment'
      chaosServiceAccount: default
      monitoring: false
      jobCleanUpPolicy: 'delete'
      experiments:
        - name: pod-delete
          spec:
            components:
              env:
                - name: KILL_COUNT
                  value: '1'
                - name: TOTAL_CHAOS_DURATION
                  value: '60s'
                - name: CHAOS_INTERVAL
                  value: '15s'
    
    ChaosEngine 리소스에는 다음과 같은 세 가지 주요 섹션이 있습니다.
  • appinfo: 이것은 Litmus 조작부호가 어떤 응용 프로그램을 목표로 하는지 알려줍니다.태그 선택기와 리소스 유형을 지정해야 합니다.
  • experiments: 실행할 실험 목록입니다.이 예에서 Pod 삭제 실험을 실행하고 있습니다.
  • experiments.spec.components: 실험 특정 값 덮어쓰기.이런 상황에서 우리는 실험에 60초 안에 기중기 하나를 죽였다고 말했다.사용 가능한 값은 ChaosExperiment 리소스입니다.
  • ChaosEngine으로 kubectl 자원을 만들고 혼돈 실험을 시작합니다.
    $ kubectl apply -f engine.yaml
    
    chaosengine.litmuschaos.io/pod-killer-chaos created
    

    혼란을 목격하다


    그 실험은 우리 프로그램의 기중기를 죽일 것이다.실험이 시작된 후 다음 명령을 실행하면 랜덤 크레인을 죽이는 방법을 보고 자동으로 다시 만듭니다.
    $ kubectl get pod -l=app=hello-world
    
    NAME                                 READY   STATUS              RESTARTS   AGE
    hello-world-75947547d4-2fcbc         1/1     Running             0          57m
    hello-world-75947547d4-c6wsv         0/1     ContainerCreating   0          10s
    
    실험이 실행되는 동안 브라우저를 계속 새로 고칩니다.이 호출이 다른pod 이름을 어떻게 표시할지 주의하십시오. 그러나 중단된 적이 없습니다.이것은 우리 응용 프로그램이pod 파괴에 탄력을 가지고 있기 때문이다💪🏻!
    실험을 생성할 때 ChaosResult 자원을 생성하여 실험 결과를 저장합니다.실험이 진행될 때, status.verdict키는 Awaited으로 설정되었다.완료되면 Pass 또는 Fail으로 변경됩니다.
    $ kubectl describe chaosresult pod-killer-chaos-pod-delete
    
    Name:         pod-killer-chaos-pod-delete
    Namespace:    rberrelleza
    Labels:       name=pod-killer-chaos-pod-delete
    Annotations:  <none>
    API Version:  litmuschaos.io/v1alpha1
    Kind:         ChaosResult
    Metadata:
      Creation Timestamp:  2020-08-05T21:14:05Z
      Generation:          5
      Resource Version:    165298631
      Self Link:           /apis/litmuschaos.io/v1alpha1/namespaces/rberrelleza/chaosresults/pod-killer-chaos-pod-delete
      UID:                 a7f50d28-1f14-4a03-9013-94e72d69eb72
    Spec:
      Engine:      pod-killer-chaos
      Experiment:  pod-delete
    Status:
      Experimentstatus:
        Fail Step:  N/A
        Phase:      Running
        Verdict:    Awaited
    Events:
      Type    Reason   Age   From                     Message
      ----    ------   ----  ----                     -------
      Normal  Summary  45m   experiment-l0k004-5x2fj  pod-delete experiment has been Passed
    

    추가적인 혼란


    앞으로의 게시물에서 혼돈 테스트를 다음 단계로 끌어올리고 응용 프로그램에 특정한 실험을 작성하는 방법을 보여 드리겠습니다.못 기다리겠어?MayaData의 Karthik에 적혀 있습니다.개발 프로세스의 일부로 okteto CLI를 사용합니다.이게 얼마나 멋있어?
    Litmus에는 a monthly community call개의 지역사회가 있는데 그곳에서 지역사회가 모여 그들의 쿨한 용례와 수요를 토론한다.팀은 매우 우호적입니다. 제가 이 글에서 당신에게 보여준 업무 절차를 보여 주십시오.이것은 다른 종사자들과 이야기하고 공부하기에 좋은 곳이다.

    결론


    이 글에서 우리는 응용 프로그램, Litmuschoos 조작부호, 혼돈 실험을 포함하여 복제 가능한 개발 환경을 배치하는 방법을 보여 주었다. 이 모든 것은 클릭만 하면 된다.그리고 우리는 혼돈 실험을 실행하여pod 고장에 대한 응용 프로그램의 복구 능력을 검증했다.
    이것은 use Okteto to accelerate your entire team을 어떻게 실현하는지 설명하는 좋은 예이다.한 사람이 혼돈 도구를 사용하여 응용 프로그램을 설정하면 다른 사람들은 필요에 따라 자신의 명칭 공간을 만들고 사전 설정, 혼돈이 준비된 개발 환경을 배치하며 실험을 시작할 수 있으며 스크립트나 인프라 시설 설정을 고려할 필요가 없다.
    계속 대화합시다!OktetoLitmus 지역사회에 가입하여 운원생 개발과 혼돈 공사에 대한 내용을 더 토론한다.

    Thanks to Karthik Satchitanand and Prithvi Raj for reading drafts of this.

    좋은 웹페이지 즐겨찾기