Litmuschoos GitLab 원격 템플릿

이 블로그에서는 Litmuschoos를 사용하여 GitLab CI 환경에서 혼돈 실험을 실행할 수 있도록 GitLab 원격 템플릿을 설정하는 방법에 대해 설명합니다.시작하기 전에 리트머스를 빨리 되돌아봅시다.Litmus는 운원생 환경에서 혼돈 공정을 실천하는 틀이다.Litmus는 혼돈의 산수를 제공했고 그 속에서 대량의 혼돈 실험을 했고 상세한 문서와 우호적인 지역 사회를 제공했다.Litmus는 또한 CI 파이프라인의 일부로 Litmus 실험을 사용하는 구성원에게 Github 혼돈 작업과 GitLab 원격 템플릿을 제공합니다.

선행 조건:

  • CI 워크플로우의 Kubernetes 1.11 이상 버전
  • GitLab 원격 템플릿 소개


    GitLab는 현재 DevOps 생명주기 도구로 현재 DevOps 세계에서 파이프 기능을 연속적으로 통합하고 배치하는 것으로 유명하다. 이런 기능은 YAML 파일로 구성된 것이다.gitlab ci.항목마다yml..gitlab-ci.yaml 구조를 정의하고 GitLab Runner를 사용하여 수행할 작업을 결정합니다.그것은 특정한 상황에 직면했을 때 취해야 할 결정과 관련된다.예를 들어 프로세스가 통과되거나 실패할 때.GitLab에서 키워드는 외부 yaml 파일을 포함하고 있으며, 이를 템플릿이라고 합니다.

    템플릿 사용의 이점:

  • CI/CD 구성을 여러 파일로 분해하고 긴 프로필의 가독성을 향상시키는 데 도움이 됩니다.
  • 또한 템플릿 파일을 구성 파일을 포함하여 중앙 저장소(예: litmus-templates에 저장할 수 있습니다.이것은 모든 항목의 전역 기본 변수와 같은 중복 설정을 피하는 데 도움이 된다.
  • 다양한 유형의 템플릿


    GitLab에 템플릿을 추가하는 것은 매우 간단한 작업입니다.외부 YAML 파일에 확장자 include 또는 include 가 필요하지 않으면 외부 파일을 포함하지 않는 키워드 .yml 만 추가하면 됩니다.다음과 같은 메서드를 지원합니다.

  • 로컬: 로컬 프로젝트 저장소에서 온 파일을 포함하고 루트 디렉터리의 전체 경로를 참조합니다.
    우리는 그것을 이렇게 사용할 수 있다.
  • include:
      - local: '/templates/.gitlab-chaos-template.yml'
    

  • 파일: 파일과 include를 사용하여 같은 GitLab 실례에 다른 개인 프로젝트에서 온 파일을 포함할 수 있습니다.다음과 같이 추가할 수 있습니다.
  • include:
      - project: 'mayadata-io/gitlab-remote-template'
        file: '/templates/pod-delete-template.yml'
    

  • 템플릿: 사전 구성된 GitLab 템플릿을 포함하는 데 사용됩니다.다음과 같이 사용할 수 있습니다.
  • # File sourced from GitLab's template collection
    include:
      - template: Auto-DevOps.gitlab-ci.yml
    

  • 원격: HTTP/HTTPS를 사용하여 전체 URL을 참조하여 다양한 위치에서 파일을 포함할 수 있습니다.이로 인해 원격 템플릿은 모든 사람들에게 매우 유행하고 많은 프로젝트에서 광범위하게 사용된다.원격 파일은 원격 URL의 인증 모드가 지원되지 않으므로 간단한 GET 요청을 통해 액세스해야 합니다.응용 프로그램에서 혼돈을 일으키는 그림에 LitmusChaos Remote Templates 가져옵니다.yaml 템플릿은github 저장소에 저장되어 외부 템플릿으로 사용할 수 있습니다.
  • 예:
    include:
      - remote: 'https://raw.githubusercontent.com/mayadata-io/gitlab-remote-templates/master/templates/pod-delete-template.yml'
    

    CI 워크플로우에서 LitmusChaos 원격 템플릿 설정


    CI 파이프의 일부로 리트머스 실험을 사용하고 GitLab을 CI 플랫폼으로 사용하고 싶다면 올바른 위치에 있습니다.Litmuschoos는 GitLab 원격 템플릿을 도입하여 CI 워크플로우에 혼돈 실험을 통합합니다.이것은 프로필을 관리하고 응용 프로그램에 대한 혼돈 테스트를 실행하는 간단한 방법을 제공하는 데 도움이 됩니다.CI 워크플로우에서 간단한 절차에 따라 GitLab 원격 템플릿을 설정해야 합니다.
    1. 클러스터 설정: 시작하기 전에 CI 워크플로우에kubernetes 클러스터를 설치해야 합니다. 이것은 선결 조건과 같습니다.만약 우리가 GKE나 AWS와 같은 구름 덩어리가 없다면, 예를 들어 KinD 덩어리를 만들 수 있다.
    2. 응용 프로그램 배치: 일단 우리가 집단을 구축하면 우리는 응용 프로그램이 필요하다. 우리는 그 위에서 혼돈 테스트를 실행해야 한다.만약pod에서 프로그램을 실행하지 않았다면, 걱정하지 마세요. 이 두 가지 간단한 절차를 통해 설정할 수 있습니다.
    i. 응용 프로그램 이미지 만들기: 응용 프로그램에 Dockerize를 해야 합니다. 이를 위해서는 응용 프로그램 이미지를 만드는 데 사용할 Dockerfile이 필요합니다.루트 위치.yaml에 Dockerfile이 있다고 가정합니다.그래서 우리는 그것으로 이미지를 구축할 것이다.
    2.응용 프로그램 용기를 사용하여pod를 실행합니다. 현재 Docker 등록표에 응용 프로그램 이미지가 있습니다.우리는 이 이미지를 사용하여 응용 프로그램의 선실을 배치할 수 있다.예시pod 목록을 참고할 수 있습니다. 이 목록은 here 에서 응용 프로그램pod를 만들고nginx 이미지를 이미지와 다른 속성으로 바꿀 수 있습니다.현재pod 목록을 적용하고 실행 상태에 들어갈 때까지 기다립니다.
    kubectl apply -f app.yaml
    
    3. 혼돈 템플릿 선택: 현재 혼돈 템플릿repository에서 사용할 수 있는 템플릿 목록에서 혼돈 템플릿을 선택합니다.실행할 실험에 따라 템플릿의 원본 링크를 가져옵니다.모든 실험을 실행하기 전에 리트머스를 설치해야 합니다. 같은 목록의 install litmus 템플릿으로 완성할 수 있습니다.혼돈 템플릿은 다음과 같습니다.
    ---
    variables:
      APP_NS: default
      APP_KIND: deployment 
      APP_LABEL: APPLICATION_LABEL
      TARGET_CONTAINER: TARGET_CONTAINER_NAME
      TOTAL_CHAOS_DURATION: "30"
      CHAOS_INTERVAL: "10"
      FORCE: "false"
      EXPERIMENT_IMAGE: litmuschaos/go-runner
      EXPERIMENT_IMAGE_TAG: 1.7.0
    
    .pod_delete_template:
      image: 
        name: mayadata-io/chaos-ci-lib:ci
        entrypoint: ["./pod-delete"]
      script: 
        - echo "Running Pod Delete Experiment"
    
    원시 링크를 가져오려면 raw 단추를 누르십시오.

    원본 링크 복사

    4. 템플릿을 추가합니다.gitlabciyml:gitlab 프로필에 혼돈 템플릿을 추가해야 합니다. /build 키워드가 있는 원격 템플릿 URL을 추가해야 합니다.
    include:
      - remote: 'https://raw.githubusercontent.com/mayadata-io/gitlab-remote-templates/master/templates/node-cpu-hog-template.yml'
    
    stages:
      - chaosInject
    
    Inject Node CPU Hog:
      stage: chaosInject
      extends: .node_cpu_hog_template
      before_script:
      variables:
        APP_NS: default
        APP_LABEL: "run=nginx"
        APP_KIND: deployment
        TARGET_CONTAINER: nginx
    
    include 단계 3에서 복사한 링크를 사용합니다.
    5. 혼돈 실험 추가: 일단 우리가 혼돈 인프라 시설의 설정을 완성하면 우리는 혼돈 실험을 추가할 수 있다. 우리는 유사한 방식으로 우리의 응용 프로그램에 혼돈 실험을 도입하기를 희망한다. 예를 들어 아래의 코드에poddelete 혼돈을 추가했다.
    .gitlab ci.yml 회사
    include:
      - remote: 'https://raw.githubusercontent.com/mayadata-io/gitlab-remote-templates/master/templates/install-litmus-template.yml'
      - remote: 'https://raw.githubusercontent.com/mayadata-io/gitlab-remote-templates/master/templates/node-cpu-hog-template.yml'
      - remote: 'https://raw.githubusercontent.com/mayadata-io/gitlab-remote-templates/master/templates/uninstall-litmus-template.yml'
    
    stages:
      - appDeploy
      - chaosInfraSetup
      - chaosInject
      - chaosInfraCleanup
    
    Deploy to Staging:
      stage: appDeploy
      script:
        - kubectl run nginx --image=nginx --restart=Always
    
    Install LitmusChaos:
      stage: chaosInfraSetup
      extends: .install_litmus_template
      before_script:
      variables:
        APP_NS: default
        EXPERIMENT_IMAGE: litmuschaos/go-runner
        EXPERIMENT_IMAGE_TAG: 1.7.0
    
    Inject Node CPU Hog:
      stage: chaosInject
      extends: .node_cpu_hog_template
      before_script:
      variables:
        APP_NS: default
        APP_LABEL: "run=nginx"
        APP_KIND: deployment
        TARGET_CONTAINER: nginx
    
    UnInstall LitmusChaos:
      stage: chaosInfraCleanup
      extends: .uninstall_litmus_template
      before_script:
      variables:
        APP_NS: default
        EXPERIMENT_IMAGE: litmuschaos/go-runner
        EXPERIMENT_IMAGE_TAG: 1.7.0
    
    6. 트리거 파이프: 설치가 완료되면 우리는 파이프를 트리거하고 파이프의 각 단계에서 결과를 얻을 수 있다.마찬가지로 GitLab CI에 혼돈 실험을 추가하고 수행할 수 있습니다.

    결론


    GitLab 원격 템플릿을 사용하면 Litmuschoos 실험과 GitLab을 쉽게 통합할 수 있어 CI 워크플로우의 응용 프로그램에 혼돈 테스트를 수행할 수 있습니다.우리는 GitLab의 include:remote 특성을 이용하여 litmuschaos 원격 템플릿에서 desired 템플릿을 선택하기만 하면 된다.그렇다면 CI 워크플로우에서의 혼란에 대해 어떻게 생각합니까?만약 네가 이 점에 찬성한다면, 그것은 도움이 될 것 같니?DevOps 전문가의 의견과 조언을 환영합니다!
    당신은 SRE입니까, 아니면 Kubernetes 애호가입니까?혼돈 공사가 당신을 흥분시켰습니까?
    우리 Slack 커뮤니티에 가입하여 Kubernetes의 혼돈 프로젝트에 대해 상세한 토론, 피드백 및 정기적인 업데이트를 진행합니다: https://kubernetes.slack.com/messages/CNXNB0ZTN
    (#Kubernetes 작업공간의 리트머스 채널)
    Litmus Chaos GitHub 리셋 보기 및 피드백 공유: https://github.com/litmuschaos/litmus
    필요한 변경 사항이 확인되면 요청을 제출하십시오.

    Litmuschoos 회사 / 리트머스


    Litmus는 SRE와 개발자가 클라우드 네이티브 방식으로 혼돈 프로젝트를 실천하도록 도와줍니다.혼돈 실험은 《조서》에 발표되었다 (https://hub.litmuschaos.io). 커뮤니티 노트https://hackmd.io/a4Zu_sH4TZGeih-xCimi3Q



    리트머스


    개원 혼돈 공사 플랫폼










    다른 언어로 읽다.


    🇰🇷 🇨🇳 🇧🇷 🇮🇳

    개요


    Litmuschoos는 혼돈의 프로젝트 플랫폼을 개척하여 팀을 통과할 수 있도록 한다
    통제받는 방식으로 혼돈 테스트를 유도하다.개발자와 SRE는 Litmus를 사용하여 혼돈 프로젝트를 실천할 수 있다. 왜냐하면 사용하기 쉽고 현대를 바탕으로 하기 때문이다.
    혼돈 공사 원리와 지역사회 협력.이것은 100% 개원한 CNCF 프로젝트다.
    Litmus는 클라우드 네이티브 방법으로 혼란을 생성, 관리, 모니터링합니다.플랫폼 자체가 하나의 마이크로서비스로 실행되고 Kubernetes를 사용한다
    사용자 정의 자원으로 혼돈의 의도와 안정적인 가설을 정의합니다.
    높은 수준에서 리트머스는 다음과 같다.

  • 혼돈 제어 평면: 혼돈 중심이라고 불리는 집중식 혼돈 관리 도구로 구축, 스케줄링과 시각화 리트머스 혼돈 작업 흐름
  • 에 도움이 된다.

  • 혼돈 집행 비행기 서비스: 혼돈으로 구성...
  • View on GitHub

    좋은 웹페이지 즐겨찾기