[GitOps]~실천편①~werf에서 GitOps 구현

9902 단어 kubernetesGitOpswerf
전제
  • GitOps에 대한 기본 지식을 원합니다.(없으면 졸저Giitops~ 기초편~ Giitops가 뭐예요?를 참고할 수 있을 것 같다.)
  • 활용 환경 정보
  • minikube v1.23.2
  • Ubuntu 18.04.6
  • kubectl v1.22.2
  • 1. werfGo에 쓰인 OSS의 CLI 도구입니다.응용 프로그램의 교부를 간소화하고 속도를 높이기 위해 개발되었다.웹을 이용하기 위해서는 응용된 구축 방법과 k8s에 대한 사전 처리 방법의 설정 파일(werf.yaml)을 기술하고 Giit 창고에 저장해야 한다.이것은 바로 오늘 말하는'a single source of truth'에 해당한다.참조웹에서 온github
    2. 웹의 사용 방법(이 내용은 실용적으로 필요하지 않기 때문에 건너뛸 수 있다.)
    2.1 최종 이상 상태 설정

  • 1GTI 저장소에서 Docker file 구성

  • 2werf.yaml라고 불리는 웹의 설정 파일을 설정합니다
    werf.yaml에서 project 이 매개 변수 (프로젝트의 이름을 저장하는 역할) 는 매우 중요하다.웹 converge 처리에 사용됩니다.이 파라미터를 잠시 후에 바꾸면, 응용 프로그램은 마비 시간을 발생시키고, 다시 디버깅을 진행할 것입니다.

  • 3 helm 파일을 설정하여 응용 프로그램을 처리합니다Helm의 템플릿에 기재werf_image는 특수한 역할을 하고 구축된 이미지의 전체 이름을 생성하는 기능을 가진다.이 기능은 werf.yaml에 정의된 이미지에 대응하는 이름의 매개 변수를 가지고 있습니다.

  • 4git commit
  • 2.2converge
  • 웹은 현재git의commiit상태를 바탕으로 생성할 이미지의 이름을 계산합니다
  • 2용기 등록표에서 사용할 수 있는 그림 읽기
  • 용기 등록표의 이미지와git commiit의 이미지를 비교
  • 4git commiit의 이미지가 용기 등록표에 없으면 용기 등록표에 구축 및push
  • 5 현재git commiit의 상태를 바탕으로 "타겟이 된 k8s 클러스터의 Giit 설정"을 읽기 ①
  • 타겟이 된 k8s 클러스터 읽기 ②
  • ①와 ②를 비교하고 필요할 때kubectl apply
  • 를 실행한다.
  • 8 모든 자원이 Ready임을 확인하고 오류가 있으면 신속하게 보고
  • 3. 웹 동작 확인
    Quick Start의 내용입니다.
    3.1trdl 설치 명령trdl는 설치와 업데이트를 관리하는 도구입니다.
    curl -sSLO "https://tuf.trdl.dev/targets/releases/0.3.2/linux-amd64/bin/trdl" -O "https://tuf.trdl.dev/targets/signatures/0.3.2/linux-amd64/bin/trdl.sig"
    curl -sSL https://trdl.dev/trdl-client.asc | gpg --import
    gpg --verify trdl.sig trdl
    # install -D trdl ~/bin/trdl
    sudo install -D trdl /usr/local/bin/trdl
    
    3.2werf 설치 명령
    trdl add werf https://tuf.werf.io 1 b7ff6bcbe598e072a86d595a3621924c8612c7e6dc6a82e919abe89707d7e3f468e616b5635630680dd1e98fc362ae5051728406700e6274c5ed1ad92bea52a2
    . $(trdl use werf 1.2 stable)
    werf version
    
    3.3 Minikube에서 로컬 등록 시작
    minikube start --driver=docker --insecure-registry registry.example.com:80
    
    alias kubectl="minikube kubectl --"
    
    echo 'alias kubectl="minikube kubectl --"' >> ~/.bash_aliases
    
    minikube addons enable ingress
    
    minikube addons enable registry
    
    kubectl apply -f - << EOF
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: registry
      namespace: kube-system
      annotations:
        nginx.ingress.kubernetes.io/proxy-body-size: "0"
    spec:
      rules:
      - host: registry.example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: registry
                port:
                  number: 80
    EOF
    
    
    # /etc/docker/daemon.json に下記の内容を書き込む 
    
    {
       "insecure-registries": ["registry.example.com:80"]
    }
    
    
    sudo systemctl restart docker
    
    minikube start --driver=docker --insecure-registry registry.example.com:80
    
    
    export WERF_INSECURE_REGISTRY=1
    
    echo export WERF_INSECURE_REGISTRY=1 | tee -a ~/.bashrc
    
    echo "$(minikube ip)"
    
    echo "$(minikube ip) vote.quickstart-application.example.com result.quickstart-application.example.com registry.example.com" | sudo tee -a /etc/hosts
    
    
    minikube ssh -- "echo $(minikube ip) registry.example.com | sudo tee -a /etc/hosts"
    
    
    3.3 디버그 샘플 응용 프로그램
  • Git Clone에 필요한 재료
  • git clone https://github.com/werf/quickstart-application
    cd quickstart-application
    
    werf converge --repo registry.example.com:80/quickstart-application
    
    3.4 샘플 확인 애플리케이션
  • http://vote.quickstart-application.example.com

  • http://result.quickstart-application.example.com
    의 경우 데모 어플리케이션(다수결)이 시작되었는지 확인할 수 있습니다
  • .
    CLI에서 설치 확인werf
    sudo apt-get install lynx
    
    4lynx에 GitOps 설치
    전체 이미지

    그럼 바로 실현해 봅시다.
  • GiitLab Runner를 설치하여 Runner로 등록합니다.werf선택tag,werf선택Executor.
  • sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
    
    sudo chmod +x /usr/local/bin/gitlab-runner
    
    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    
    sudo gitlab-runner start
    
    systemctl status gitlab-runner
    

  • 그룹shellgitlab-runner 추가
  • sudo usermod -aG docker gitlab-runner
    

  • 방금 순서대로 설치docker합니다.

  • 설치werf,kubeconfig를 kubectluser의 홈 디렉터리에 설정합니다.
  • sudo mkdir -p /home/gitlab-runner/.kube && 
    sudo cp -i ~/.kube/config /home/gitlab-runner/.kube/config && 
    sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/.kube
    

  • 설명gitlab-runner
  • .gitlab-ci.yml
    stages:
      - build
    
    before_script:
      - trdl add werf https://tuf.werf.io 1 b7ff6bcbe598e072a86d595a3621924c8612c7e6dc6a82e919abe89707d7e3f468e616b5635630680dd1e98fc362ae5051728406700e6274c5ed1ad92bea52a2
      - type trdl && . $(trdl use werf 1.2 stable)
      - type werf && source $(werf ci-env gitlab --as-file)
    
    Build:
      stage: build
      script:
        - git clone https://github.com/werf/quickstart-application
        - cd quickstart-application
        - . $(werf ci-env gitlab --as-file)
        - export WERF_INSECURE_REGISTRY=1
        - env
        - nslookup registry.example.com
        - werf converge --skip-tls-verify-registry=true --repo registry.example.com:80/quickstart-application
      tags:
        - werf
    
  • 해당 GitLab의 창고를 Push합니다.
    CI/CD는 이런 느낌으로 작동합니다.

  • 5. 요약
    이번에 .gitlab-ci.yml를 사용하는 GitOps의 설치 방법을 소개했다.
    앞으로도 깃옵스 관련 기사가 나올 예정이니 읽어주세요.

    좋은 웹페이지 즐겨찾기