Gitlab CI를 사용하여 Kubernetes에 배포하는 방법
Kubernetes에 익숙하지 않은 경우 이 기사를 통해 Kubernetes의 기능을 더 깊이 이해할 수 있기를 바랍니다. 기술 수준에 관계없이 이 기사를 읽고 인프라 프로세스를 반복할 수 있는 영감을 얻으시기 바랍니다.
이 문서에서는 클러스터에 액세스할 수 있는 권한이 있는 사용자에 대해 작동하는 Kubeconfig가 있는 Kubernetes 클러스터가 이미 있다고 가정합니다. 또한 Gitlab의 서버가 클러스터에 액세스할 수 있다고 가정합니다. 향후 기사에서 Kubernetes 역할 기반 액세스 제어를 구현하는 방법을 포함하여 이러한 주제를 다룰 것입니다. 시작하자:
Kubeconfig 준비 및 다운로드
Kubeconfig은 Kubernetes 클러스터에 대한 액세스 권한을 부여하는 파일입니다. Kubeconfig가 설명하는 사용자는 클러스터에서
update
또는 deployments
에 대한 권한이 있어야 합니다.Gitlab에 Kubeconfig 업로드
첫 번째 단계는 Gitlab에 Kubeconfig를 제공하는 것입니다.
프로젝트 또는 그룹 CI/CD 설정으로 이동합니다.
그룹 및 프로젝트 수준 모두에서 변수를 구성할 수 있습니다.
변수 섹션에서 확장을 클릭합니다.
그런 다음 변수 추가 버튼을 클릭하여 다음 대화 상자를 표시합니다.
키는 KUBECONFIG여야 합니다.
변수의 유형이 파일로 설정되어 있는지 확인하십시오.
그런 다음 Kubeconfig의 내용을 값 입력 상자에 복사하고 마지막으로 변수 추가 버튼을 클릭합니다.
배포 단계 생성
Kubeconfig를 CI 파이프라인 변수로 추가하면 새
deploy
단계로 .gitlab-ci.yml을 업데이트할 준비가 된 것입니다. 아래는 예입니다.deploy:
stage: deploy
image:
name: bitnami/kubectl:latest
entrypoint: [""]
when: manual
script:
- kubectl set image deployment/my-deployment my-deployment=my.registry.com/my-image/$CI_COMMIT_REF_SLUG
이 파이프라인 단계의 몇 가지 부분을 살펴보겠습니다.
영상
이 정의는 bitnami의 kubectl 도커 이미지를 사용합니다. 나는 내 자신의 kubectl 도커 이미지를 유지하고 싶지 않으며 bitnami의 kubectl 이미지는 내가 연구에서 찾은 가장 평판이 좋은 이미지입니다. bitnami 이미지의 정보 페이지는 다음과 같습니다. https://bitnami.com/stack/kubectl/containers
기본적으로 이미지가 실행되며
kubectl
파이프라인 로그에 불필요한 노이즈가 생성됩니다. 고맙게도 gitlab에서는 진입점을 빈 세트로 지정하여 이 동작을 재정의할 수 있습니다[""]
. 이렇게 하면 이미지가 실행될 때 명령이 실행되지 않습니다.언제
이 정의는 배포 단계에 도달하면 파이프라인을 일시 중지하는
when: manual
를 사용합니다. 일반적으로 파이프라인 단계는 자동으로 실행되지만 when 키워드를 사용하면 Gitlab에서 작업을 시작하는 클릭 가능한 재생 버튼을 표시합니다.테스트 또는 스테이징 서버에 배포할 파이프라인을 생성할 때 when: 수동 선언을 제거할 수 있습니다.
스크립트
파이프라인 단계의 스크립트 섹션은 이미지 전환이 수행되는 곳입니다.
kubectl
명령을 호출하고 my-deployment
라는 배포 이미지를 my.registry.com/my-image/$CI_COMMIT_REF_SLUG
로 설정합니다. 빌드 프로세스를 반영하도록 이러한 값을 변경해야 합니다.deployment/my-deployment
에 지정된 배포 이름은 Kubernetes 배포의 metadata.name
속성을 참조합니다. set
이름도 사용하는 image my-deployment
명령은 다른 값인 spec.template.spec.initContainers[].name
또는 spec.template.spec.containers[].name
를 참조합니다.보너스: 하나의 명령으로 여러 이미지 변경
위의
set
명령에는 변경할 하나의 이미지 이름만 포함되어 있고 Kubernetes 배포 정의는 containers
또는 initContainers
를 통해 지정된 여러 이미지를 가질 수 있음을 알 수 있습니다. kubectl
명령은 설정할 이미지를 공백으로 구분하여 하나의 명령으로 여러 이미지를 설정할 수 있도록 지원합니다. 파이프라인 단계에서 여러 명령을 실행하는 것보다 이 접근 방식이 더 명확하고 효율적이라는 것을 알았습니다.kubectl set image deployment/my-deployment my-deployment=my.registry.com/my-image/$CI_COMMIT_REF_SLUG my-other-deployment=my.registry.com/my-other-image/$CI_COMMIT_REF_SLUG
그게 다야! 이제 Gitlab CI Pipelne에 앱의 새 버전을 배포할 수 있는 새 버튼이 장착되어 있어야 합니다! 🥳
추가 자료:
Kubernetes 배포https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
Kubeconfig 파일 사용https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Gitlab .gitlab-ci.yml 문서https://docs.gitlab.com/ee/ci/yaml/
Reference
이 문제에 관하여(Gitlab CI를 사용하여 Kubernetes에 배포하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/malgasm/how-to-deploy-to-kubernetes-using-gitlab-ci-h1a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)