zlabjp/kubernetes-resource: Kubernetes의 Concourse 자원 사용하기
10955 단어 Concoursekubernetes
개요
세트 랩은 몇 가지 CI/CD 도구를 사용했는데 그 중 하나가 Concourse입니다.Concourse는 Pivotal에서 개발한 파이프라인 기반 CI/CD 도구입니다.응용 프로그램을 Concourse에서 Kubernetes로 배치하는 데 사용되는 Concourse 자원은 우리의 요구를 충족시키는 자원이 존재하지 않기 때문에 새로 개발하여 OSS(MIT License)로 공개합니다.
Kubernetes에 애플리케이션 배포 방법
Kubernetes에 애플리케이션을 배포하려면 Kubernetes의 CLI kubectl을 사용합니다.
다음은 이 하위 명령을 사용하여 자원을 관리하는 세 가지 방법을 소개한다.
Imperative command
Imperative command는 주로
kubectl run
등 일회용 명령을 사용하여 응용 프로그램을 배치하는 방법이다.다음 예는 nginx:latest
이미지를 만들고 복사본 수는 5이며 이름은 myapp입니다.이 방법은 응용 프로그램의 설정을 상세하게 설정할 수 없기 때문에 개발 용도 등이 일시적으로 실행되고 싶은 상황에서 사용됩니다.# Start a replicated contianer of nginx
$ kubectl run myapp --image=nginx:latest --replicas=5
Imperative object configuration
Imperative object configuration은 자원의 설정을 선언 파일로 YAML 또는 JSON으로 기록하고
kubectl create
또는 kubectl delete
등을 이용하여 자원을 창설, 삭제합니다.Imperative command에 비해 이 방법은 프로그램 설정을 파일로 설명하기 때문에 버전 제어를 할 수 있습니다.그러나 리소스가 생성되었거나 삭제되었고 존재하지 않으면 명령을 실행할 수 없습니다.# Create a resource by a manifest file
$ kubectl create -f nginx-deployment.yaml
Declarative object configuration
목록 파일
kubectl apply
만 사용하여 자원을 만들고 삭제합니다.kubectl apply
kubectl create
에 비해 리소스가 이미 있으면 업데이트하고 리소스가 없으면 생성합니다.또한 업데이트 방법도 다른 명령이 자원에 대한 조작을 방해하지 않기 때문에 CD로 응용 프로그램을 계속 배치하는 데 가장 적합하다.# Create/Update a resource by a manifest file
$ kubectl apply -f nginx-deployment.yaml
kubectl apply
에 대한 자세한 내용은 kubectl apply의 구조 / How kubectl apply works 를 참조하십시오.Concourse에서 Kubernetes에 애플리케이션 지속 배포
zlabjp/kubernetes-resource를 사용하여 Concourse에서 Kubernetes를 조작할 수 있습니다.이것은 Concourse 자원으로 실행되며, 그룹에kubectl을 사용하는 모든 명령을 실행할 수 있습니다.그것은 또한 응용 프로그램을 배치하는 편리한 기능을 제공했다.
Versions
이 자원은 다음과 같은 여러 버전을 제공합니다.버전은kubectl 버전과 연결되어 있기 때문에 Kubernetes 군집 버전과 같은 버전을 사용하는 것을 권장합니다.
zlabjp/kubernetes-resource:1.8
( stable-1.8 ) zlabjp/kubernetes-resource:1.7
( stable-1.7 ) zlabjp/kubernetes-resource:1.6
( stable-1.6 ) zlabjp/kubernetes-resource:latest
( latest ) 소스 구성
kubeconfig 파일을 직접 전달하는 방법과 군집 설정을 설정하는 방법 두 가지를 제공합니다.
kubeconfig
kubeconfig
: 임의.레이블 파일yaml
kubeconfig: |
apiVersion: v1
clusters:
- cluster:
...
create-kubeconfig
스크립트를 사용하여kubeconfig 파일을 생성하는 데 매우 유용합니다.# Create a kubeconfig to access the apiserver with the specified serviceaccount and outputs it to stdout.
$ ./create-kubeconfig <serviceaccount-name> <kubectl-options>
클러스터 설정
server
: 임의.API 서버, 주소 및 포트.token
가 필요합니다.(e.g. https://192.168.99.100:8443
token
: 임의.API 서버 인증을 위한 토큰입니다.server
가 필요합니다.(e.g. eyj....
namespace
: 임의.이름 공간.기본값은 default
입니다.certificate_authority
: 임의.인증 기관의 인증서.insecure_skip_tls_verify
: 임의.true
인 경우 API 서버 인증서의 유효성이 검증되지 않습니다.HTTPS가 안전하지 않습니다.기본값은 false
입니다.행위
out 구현만 가능합니다.
check:아무것도 안 해요.
아무것도 안 해
out: 클러스터를 사용하는 Kubernetes
kubectl apply
, kubectl delete
, kubectl label
등 Kubernetes 집단의 조작을 진행한다.매개 변수
kubectl
: 필수입니다.kubectl
이후 명령을 지정합니다.(e.g. apply -f ...
wait_until_ready
: 임의.모든 Pods가 준비될 때까지 기다리는 초입니다.0이면 기다리지 않습니다.기본값은 30
입니다.wait_until_ready_interval
: 임의.모든 Pods가 준비되었는지 확인하는 시간 간격(초).기본값은 3
입니다.wait_until_ready_selector
: 임의.축소 태그 선택기 완료 여부를 확인하는 Pods.기본값은 이름 공간의 모든 Pods입니다.wait_until_ready
.이것은 이름 공간의 Pod가 실행될 때까지 기다립니다.지정된 시간 내에 Pod이 모두 실행되지 않으면 작업이 실패합니다.객체의 Pod 범위를 좁히려면 wait_until_ready_selector
를 사용합니다.이 기능은 배치 후 e2e 테스트를 실행할 때 용기가 시작되기 전에 테스트를 실행하는 것을 방지할 수 있습니다.파이프라인 예
repo
저장소에 포함된 목록 파일을 업데이트하는 트리거prod
로 클러스터 실행kubectl apply
.resource_types:
- name: kubernetes
type: docker-image
source:
repository: zlabjp/kubernetes-resource
tag: "1.8"
resources:
- name: prod
type: kubernetes
source:
kubeconfig: ((prod-kubeconfig))
- name: repo
type: git
source:
...
jobs:
- name: prod-deploy
plan:
- get: repo
trigger: true
- put: prod
params:
kubectl: apply -f repo/deploy -f repo/deploy/prod
wait_until_ready_selector: app=myapp
kubectl
매개변수는 명령 대체에 해당하므로 다음 방법을 사용할 수도 있습니다.jobs:
- name: force-update-deployment
serial: true
plan:
- put: mycluster
params:
kubectl: |
patch deploy nginx -p '{"spec":{"template":{"metadata":{"labels":{"updated_at":"'$(date +%s)'"}}}}}'
wait_until_ready_selector: run=nginx
총결산
zlabjp/kubernetes-resource는 Kubernetes 클러스터를 처리하는 데 사용되는 Concourse 리소스입니다.쿠벨의 각 피드 명령을 사용하여 그룹을 조작할 수 있습니다.다음 저장소에서는 이 리소스를 사용하는 데모 파이프라인을 제공합니다.이쪽도 참고해주세요.
끝내다
본 항목은 당사 ZLab의 구성원Z Lab Advent Calendar 2017으로서 업무 시간에 작성한 것입니다.다음 날은 @Ladicle Istio의 시작입니다.
참고 자료
Reference
이 문제에 관하여(zlabjp/kubernetes-resource: Kubernetes의 Concourse 자원 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/superbrothers/items/1f95fda4631a21020ef5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)