느슨한 알림을 포함한 Github 작업을 사용하여 Kubernetes 배포
15915 단어 eksawsgithubkubernetes
보상:슬랙 알림
kubectl
구축Github 작업
서류를
.github/workflows/release.yml
아래에 놓으세요.그런 다음 워크플로우 트리거 구성부터 시작합니다.name: Release
on:
pull_request:
branches: [main]
이 트리거는 우리가 열면 바로 실행되며, 요청을 제출할 때마다 실행됩니다.그런 다음 여러 단계에서 사용할 환경 변수를 정의합니다.
env:
RELEASE_REVISION: "pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}"
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
KUBE_NAMESPACE: production
ECR_REPOSITORY: my-cool-application
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
환경부는 다음과 같이 설명합니다.RELEASE_REVISION
: Docker 이미지AWS_ACCESS_KEY_ID | AWS_SECRET_ACCESS_KEY
:
KUBE_CONFIG_DATA
: configure aws credentials actionECR_REPOSITORY
: kubectl aws eks actionSLACK_WEBHOOK_URL
: aws ecr actionjobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
... [steps be at this level]
slack notification action 단계 - 이전 실행 취소
이 단계는 Github에 이 저장소에서 이 작업의 현재 실행을 취소하도록 지시합니다.
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
단계 - 체크아웃
이 특정 제출 시git 서명을 실행합니다.
- name: Checkout
uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}
단계 - AWS 자격 증명 구성
이 단계에서는
env
섹션에 정의된 AWS 자격 증명을 사용합니다.- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
단계 - AWS ECR 로그인
이전 단계에서 구성한 AWS 자격 증명을 사용하여 AWS ECR에 로그인합니다.
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
단계 - Docker buildx 캐시 설정
이 두 단계는 건축 이미지의 표현에 매우 중요하다.다음은 몇 가지 주요 고려 사항입니다.
그러나 이것 덕분에 우리는 action 캐시 Docker층을 이용할 수 있다.그리고 결합buildkit CLI하면 우리는 이런 캐시 정책에 의존하여 구축 시간을 최적화할 수 있다.
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
- name: Docker cache layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-single-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-single-buildx
native Github actions cache 단계 - 이미지를 레지스트리로 구축 및 푸시
이 단계는 구축 시간을 최적화하기 위해
buildx
를 사용하여 Docker 이미지를 구축하고 AWS ECR로 전송하는 것을 포함한다. 이것은 이전에'아마존 ECR 로그인'에서 설정한 것이다.이 예에서는 Dockerfile에 "release"라는 대상이 있다고 가정합니다.
- name: Build & Push Image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
RELEASE_IMAGE: ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.RELEASE_REVISION }}
run: |
docker buildx create --use
docker buildx build \
--cache-from=type=local,src=/tmp/.buildx-cache \
--cache-to=type=local,dest=/tmp/.buildx-cache-new \
--tag ${{ env.RELEASE_IMAGE }} \
--target release \
--push \
.
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
단계 설명:docker buildx create --use
:buildx에 새로운 생성 상하문을 만들고 현재 상하문으로 설정합니다docker buildx build ...
: 이전 단계의 Docker 캐시 레이어에서 구성/복원된 캐시를 사용하여 이미지를 구성합니다.구축 후 --push
옵션rm | mv ...
: 실행할 때마다 캐시를 업데이트해야 합니다. 그렇지 않으면 Githb Actions단계 - Kubernetes 클러스터에 배포
그림을 등록표에 올리면kubernetes에 명령을 보내서 배치를 수행할 수 있습니다.
- name: Deploy to Kubernetes cluster
uses: kodermax/kubectl-aws-eks@master
env:
RELEASE_IMAGE: ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.RELEASE_REVISION }}
with:
args: set image deployment/my-pod app=${{ env.RELEASE_IMAGE }} --record -n $KUBE_NAMESPACE
여기서 우리가 사용하는 것은 kubectl set image
이지만 kubectl rollout
또는 기타 필요한 명령일 수도 있다.또한 배포를 확인하는 단계도 포함할 수 있습니다.
- name: Verify Kubernetes deployment
uses: kodermax/kubectl-aws-eks@master
with:
args: rollout status deploy my-pod -n $KUBE_NAMESPACE
단계 - 느슨한 공지
배포가 완료되면 를 사용하여 슬랙에 알림을 보낼 수 있습니다.
- name: Slack notification
uses: rtCamp/action-slack-notify@master
env:
SLACK_CHANNEL: my_cool_channel
SLACK_MESSAGE: 'Just deployed our cool application!'
SLACK_TITLE: 'Deploy'
SLACK_USERNAME: 'Some Bot'
SLACK_ICON: "[icon URL]"
SLACK_COLOR: '#228B22'
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
MSG_MINIMAL: true
this action 마무리
이 설명서에서는 Docker 이미지 구축, 레지스트리에 업로드, Kubernetes에 배포 및 Slack에 알림을 보내는 전체 주기를 구성합니다.
다음 글은 AWS S3에 의존하는 캐시 정책을 어떻게 사용하고 Docker 이미지(즉 루비 개발자의 a.k.a
bundle install
에서 의존항 설치의 구축 시간을 최적화하는지 보여 준다.
Reference
이 문제에 관하여(느슨한 알림을 포함한 Github 작업을 사용하여 Kubernetes 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/leandronsp/deploy-to-kubernetes-using-github-actions-including-slack-notification-11je텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)