Google Kubernetes 엔진,Circleci,Traefik, 클라우드에서 성숙한 GitOps 플랫폼을 구축하는 데 사용됩니다.

팀이 새 프로젝트를 시작할 때, 그들은 보통 귀중한 시간을 낭비해서 처음부터 CI/CD 파이프라인을 배치하고 설정할 것이다.제니카 랩에서 품질에 영향을 주지 않는 전제에서 가능한 한 효율적으로 개념증명이나 최소한의 실행 가능한 제품을 제공하는 것이 목표입니다.
우리 팀은 단기(몇 분에서 몇 시간) 기능 지점에 주력하고 기술/기능 탐색과 제품 소유자와의 신속한 교체에 중점을 두고 있다.우리는 우리의 인프라 시설이 몇 분 안에 이 제품의 새로운 버전을 배치할 수 있고, 모든Git에 모든featurebranch를 동적으로 배치할 수 있기를 희망한다.어디서나 (네트워크), 언제든지 접근할 수 있는 유사한 생산의 사례는 자동화에서 끝까지 테스트의 목표이며, 제품 소유자는 이러한 실례를 이용하여 새로운 기능을 시도하고, 때로는 최종 사용자에게 보여 새로운 개념과 생각을 검증하거나 부정하기도 한다.
우리는 정적 사이트에서 복잡한 사건으로 마이크로 서비스 체계 구조를 구동하는 일련의 기술 창고와 다양한 제품에 주력한다.우리는 무상태와 유상태 작업 부하를 배치해야 한다. 어떤 부하들은 매우 가볍다. 예를 들어 노드와 같다.js 백엔드, 카프카 군집 같은 더 계산적이거나 데이터 집약적인 것들.monorepo 중의 대형 마이크로 서비스 구조에 대해 구축 과정도 자질구레함에서 매우 복잡함까지 다양하다.
어쨌든 우리의 업무는 인프라 시설을 구축하거나 유지하는 것이 아니라 소프트웨어를 납품하는 것이다.이것이 바로 우리가 프로젝트를 뛰어넘어 우리의 대다수 도구를 사용하고 언어, 구조, 크기와 무관한 서비스를 필요로 하는 이유이다.또한 CI/CD는 개발자의 일상적인 비용에 비해 대부분의 위탁 관리 서비스의 가격이 매우 낮기 때문에 우리는 실제적으로 이를 널리 사용하지 않고 귀중한 시간을 더욱 유용한 업무에 집중할 이유가 없다.
이 가이드는 우리가 매일 프로젝트를 구축, 테스트, 배치하는 데 사용할 개발 업무 흐름을 지원하는 인프라 시설을 1시간도 안 되는 시간 안에 구축하는 방법을 소개한다.상기 모든 이유로 대량의 조사를 통해 우리는 구글의 위탁 관리 Kubernetes(GKE)와 Circleci, Traefik와 다른 구글 클라우드 서비스를 선택했다.
쿠베르네트스는 무엇입니까?

Kubernetes, also known as k8s, is an open-source system for automating deployment, scaling, and management of containerized applications. In the past years, Kubernetes has become the de-facto industrial standard to deploy containers on-premise or in the cloud.


우리는 공유되고 자동으로 축소되는 Kubernetes 그룹을 일반적인 배치 목표로 사용합니다.우리의 모든 항목은 자신의 명칭 공간, 자원 할당액과 폐쇄된 네트워크 경계를 가지고 있다.
만약 이전에 Kubernetes를 사용한 적이 없다면, 이 안내서는 이해하기 어려울 수도 있습니다.너는 먼저 reading a bit about Kubernetes부터 시작할 수 있다.
Circleci란 무엇입니까?

CircleCI is a cloud-native continuous integration and continuous delivery (CI/CD) platform. It integrates with GitHub and Bitbucket and runs a configured pipeline on each commit. Think Jenkins multibranch pipelines on steroids, in the cloud, and fully managed for you.


Google은 Jenkins의 관리, 현대적, 신뢰할 수 있는 대체품으로 Circleci를 선택했고 TravisCI나 GitHub Actions가 아닌 TravisCI나 GitHub Actions를 선호합니다. 같은 최상의 성능을 가지고 있기 때문에 고급 캐시 메커니즘이 필요한 대형 여러 차례의 MonoRepo에서 작업 흐름을 설정하고 실행할 수 있습니다.
만약 이전에Circleci를 사용한 적이 없다면, 탑승을 환영하며 free plan을 누리세요!
트레이픽이란 무엇인가?

Traefik Proxy is a dynamic, modern, open-source Edge Router that automatically inspects your infrastructure to discover services and how to route traffic to them. Traefik is natively compliant with every major cluster technology, such as Kubernetes, Docker, Docker Swarm, AWS, Mesos, Marathon... and even bare metal! Used as an ingress controller in Kubernetes, it is probably a drop-in replacement for the one you already use (if any), and brings awesome features such as automated TLS certificate management via Let's Encrypt, middlewares, plugins...


Traefik은 https에 새로운 인스턴스를 배포하고 액세스할 수 있는 플랫폼을 기반으로 합니다.
만약 당신이 이전에 Traefik을 사용한 적이 없다면, 탑승하고 여정을 즐기는 것을 환영합니다!
다음 설명서에는 다음 리소스에서 수집된 데이터 및 명령이 포함되어 있습니다.
  • Kubernetes' Quickstart
  • Traefik's official documentation
  • 만약 당신이 사물의 운영 방식을 깊이 이해하고 싶다면 그것들을 자세히 읽어 보세요.

    건축과 윤곽


    GitHub은 GitHub을 사용하여 버전 제어를 하고,Circleci for CI/CD, Google Kubernetes 엔진 클러스터를 배포 플랫폼으로 하고,Traefik는 입구 컨트롤러와 부하 밸런서로 암호화하여 완전한 자동화와 무료 TLS 인증서 관리를 실현합니다.적절한 아키텍처는 다음과 같습니다.

    개발자가 GitHub에 새로운 기능 지점을 내놓을 때마다 플랫폼은 이를 구축하여 고립적이고 단기적인 환경에 배치한다(위의 그림은 App 1,...,App n).이 새로운 독립된 응용 프로그램 실례는 전용 URL과 TLS 인증서를 통해 웹에 접근할 수 있으며, 팀과 사용자가 생산과 유사한 환경에서 테스트를 할 수 있도록 합니다.이 설정에서 master은 응용 프로그램의 또 다른 실례일 뿐 통합 환경으로 사용할 수 있다.
    다음 부분에서는 약 한 시간 안에 자신의 환경에서 우리의 파이프를 재현할 수 있도록 위의 그림에서 다른 구성 요소를 단계적으로 조립하는 방법을 소개할 것입니다.

    요구 사항


    이 때문에, 너는
  • 구글 클라우드 계정, Kubernetes 클러스터 생성 및 구성에 대한 전체 액세스 권한
  • 프로젝트 생성 및 구성 가능한 GitHub 계정 1개
  • GitHub 계정에 연결된 CircleciCI 계정으로 버전
  • 구성 및 실행 가능
  • 에는 공급업체 중 하나인 compatible with Traefik이 관리하는 도메인이 있습니다(예: mywebsite.com).
  • 컴퓨터에 다음 명령줄 도구를 설치하고 구성해야 합니다.
  • gcloud SDK
  • kubectl
  • htpasswd(sudo apt-get install htapasswd)
  • envsubst(sudo apt-get install gettext)
  • gcloud에 로그인(이 명령은 브라우저에서 Google 계정에 대한 액세스를 요청하는 페이지를 열어야 함):
    gcloud auth login
    
    마지막으로, GitHub repository에서 설명자와 자원을 다운로드합니다.

    1. 쿠베르네트스 성계단


    GCP에 GKE 클러스터 인스턴스 배포


    이것은 Cloud Console을 통해 쉽게 완성할 수 있다.HTTP 로드 밸런싱 로드 항목 외에는 클러스터의 특정 구성이나 크기를 가정하지 않으며 로드 항목이 생성된 후에 활성화되어야 합니다.

    클러스터 인증:


    gcloud container clusters get-credentials [CLUSTER_NAME]
    

    2. 트라피크


    클러스터에 "traefik" 네임스페이스 만들기


    kubectl create namespace traefik
    

    클러스터에서 Traefik에 대한 사용자 정의 리소스 정의(CRD) 가져오기


    적용 CRD descriptor:
    kubectl apply -f crd.yaml
    

    Traefik 요구 사항에 대한 역할 기반 액세스 제어(RBAC) 규칙 적용


    적용 RBAC descriptor:
    kubectl apply -f rbac.yaml
    
    이렇게 하면 RBAC 규칙이 만들어지고 Traefik에 대한 서비스 계정이 만들어지며 규칙을 서비스 계정에 바인딩합니다.

    클러스터에 Traefik 배포


    사용자/비밀번호 쌍을 사용하여 비밀 파일을 만듭니다.이것들은 Traefik 대시보드에 액세스하는 자격 증명이 됩니다.
    htpasswd -bc [FILENAME] [USER] [PASSWORD]
    
    클러스터의 traefik 네임스페이스로 비밀 가져오기
    kubectl create secret generic traefik-auth --from-file [FILENAME] --namespace=traefik
    
    Traefik에서 Let's Encrypt를 사용하여 와일드카드 TLS 인증서를 생성하려면 DNS 도전을 완료해야 합니다.Google 도메인은 구글 도메인에 등록되어 있고 Google DNS는 Google DNS에서 처리되기 때문에 Traefik의 Google 공급자를 사용하여 이를 실현합니다. (다른 공급자의 명단은 here)이 공급자는 DNS 기록을 편집하려면 DNS 쓰기 권한이 있는 GCP 서비스 계정의 키가 필요합니다.이 서비스 계정과 키는 Cloud Console을 통해 생성할 수 있습니다.
    다른 공급업체를 선택한 경우 올바른 구성을 Traefik에 전달하려면 volume, volumeMounttraefik descriptor의 환경 변수 섹션을 조정하거나 삭제해야 합니다.
    키 파일을 키 traefik-service-account의 키로 클러스터의 traefik 네임스페이스에 가져옵니다.
    kubectl create secret generic traefik-service-account --from-file=traefik-service-account.json=[FILENAME] --namespace=traefik
    
    traefik descriptor에 다음 자리 표시자를 입력합니다.
  • DOMAIN: 소유한 도메인 이름(예: mywebsite.com)
  • ACME_EMAIL_ADDRESS: TLS 인증서 생성을 위한 연락처 이메일 주소
  • GCE_PROJECT: 구글 클라우드 프로젝트의 명칭
  • 그런 다음 적용합니다.
    kubectl apply -f traefik.yaml
    
    다음을 수행합니다.
  • 구축
  • 인스턴스
  • LoadBalancer
  • 유형의 서비스를 사용하여 공공 IP에서 이 Traefik 실례를 공개합니다
  • Traefik의 입구점을 탐지 포트 80(HTTP) 및 443(HTTPS)
  • 으로 구성
  • 리디렉션 시나리오 중간부품
  • 을 사용하여 모든 HTTP(포트 80) 트래픽을 HTTPS 입구점(포트 443)으로 리디렉션
  • 입구 루트를 사용하여 traefik 자역(예를 들어 traefik.mywebsite.com)에 Traefik의 계기판을 공개하고BasicAuth 중간부품(위에서 만든 비밀 사용)
  • 을 사용하여 보호
  • Traefik 인증서 확인 프로그램을 구성하여 필요에 따라 와일드카드 인증서를 생성합니다.
  • 대시보드 입구 경로
  • 에 필요한 와일드카드 TLS 인증서 작성 및 사용(예: *.mywebsite.com)
    잠시 기다려 GKE와 연결된 공용 IP를 Traefik 서비스에 연결하십시오.
    kubectl -n traefik get services
    
    IP는 EXTERNAL-IP 열에 표시되지만 몇 초 정도 걸릴 수 있습니다.
    도메인에서 모든 트래픽을 이 IP로 리디렉션하는 DNS 로깅을 수동으로 구성합니다(A에서 외부 IP로의 *.mywebsite.com 로깅).
    Traefik 대시보드는 현재 Traefik 하위 도메인(예: traefik.mywebsite.com)에 액세스할 수 있으며, 모든 HTTP 트래픽은 유효한 Let's Encrypt 인증서를 통해 HTTPS로 리디렉션되어야 합니다.

    1부 끝!


    두 번째 섹션과 새로운 CI/CD 플랫폼에 첫 번째 어플리케이션을 배포하는 방법에 대해 계속 살펴보십시오.

    좋은 웹페이지 즐겨찾기