💻
DevOps Cookbook
  • Home
    • Meiko DevOps Cookbook
  • Gitlab
    • Tips
      • 사전 정의된 CI/CD 변수의 기본 세트
    • 딥다이브 Gitlab CI/CD
      • GitLab CI/CD 시작하기
        • .gitlab-ci.yml 파일
        • Runner
        • 파이프라인
        • CI/CD 변수
        • CI/CD 컴포넌트
      • CI/CD YAML 구문 참조
    • CI/CD Notifications
      • CI/CD slack notifiaction 구축작업 결과
  • Kubernetes
    • Persistence Volume
      • play-cluster
    • Ingress
      • Ingress란
      • 수동으로 ingress 배포하기
    • Security
    • HPA
      • hpa troubleshooting history
        • 1. HELM_UPGRADE_VALUES_FILE로 hpa가 추가되지 않는 원인
        • 2. targetCPUUtilizationPercentage 계산은 어떻게 되는가
        • 3. helm values에 cpu resource 단위를 1로 했을 때 실제 파드에 1m( 0.001 ) 코어가 부여된 것
        • 4. pod cpu resources가 할당받은 것을 나타내는 것인 지 현재 사용량을 나타내는 것인지 검증
        • 5. 설정한 hpa를 기반으로 pod auto scaling이 동작하는 지 검증
      • HorizontalPodAutoscaler의 behavior 필드 중 stabilizationWindowSeconds 값이 Kubernetes 코드에서 어떻게 사용되는지 분석
  • prometheus
    • prometheus 리소스 alert 세팅
      • 슬랙 채널 구성
      • alert 환경 구성 가이드
  • Loki
    • loki-grafana alert 세팅
      • 1차 검증 결과
      • Alert 환경 구성 가이드
  • load test
    • nGrinder
      • nGrinder Test Configuration 값들
      • 질문리스트
        • groovy는 JUnit 스타일에 포함되지 않는건가 ? + GTest가 뭔지 좀 헷갈린다
      • Script
        • Groovy Script Structure
          • reference
          • Groovy script deep dive
          • Groovy Script 실행 구조 분석
      • Test
        • [nGrinder] single endpoint load test 하기
          • [nGrinder] single endpoint load test script 기반 cpu 사용량 테스트
          • [nGrinder] single endpoint load test script 기반 pod autoscaling 테스트
        • [nGrinder] multi endpoint load test 하기
          • [nGrinder] multi endpoint load test script에 정의한 test들이 실행 순서를 보장 받는가?
  • AWS
    • aws-cli
      • eks cluster vpc 스펙보기
    • aws-vpc
  • EKS
    • youtube links
    • EKS best practice
    • 질문 정리
  • Istio
    • Istio Basic
      • Istio 컴포넌트 별 역할
      • Kubernetes Ingress와 Istio VirtualService의 관계
    • Gateway
      • Gateway 주요 특징
      • Istio Gateway와 Kubernetes Ingress의 주요 차이점
  • IAC
    • Terraform
      • 테라폼 설치
      • 테라폼 문서
      • 테라폼 개념
        • 언어 구조
        • 사용 순서
        • 상태파일 (tfstate)
        • 변수 정의 방법
      • Terraform - AWS VPC
    • Ansible
      • Ansible 초기 학습 내용
      • Ansible Playbook
      • Ansible Study
        • Inventory
        • Playbook
          • Module
        • Variable
  • etc
    • Toss SLASH24
    • Elastic Load Balancing
    • 낙서장
      • IRSA
    • deep dive
      • Istio 공식문서 번역
        • Overview
          • What is Istio?
          • Why choose Istio?
          • Sidecar or ambient?
        • Concepts
          • Traffic Management
        • Page
      • eks 에서 control plane < - > data plane 통신 원리
Powered by GitBook
On this page
  • CI/CD slack notifiaction 구축작업
  • 변경사항
  • 시도 했지만 실패한 작업
Edit on GitHub
  1. Gitlab
  2. CI/CD Notifications

CI/CD slack notifiaction 구축작업 결과

CI/CD slack notifiaction 구축작업

as-is

  1. 배포 및 빌드 실패 직접 gitlab pipeline 링크에서 확인

  2. 계속 기다림

  3. 실패 시 링크를 직접 복사해서 @tech-devops 호출

to-be

  1. 파이프라인 시작 시 알림

  2. 빌드 및 배포 실패 시 어떤 과정에서 실패했는 지 ingration 채널에 실패 메시지 알림

    1. 해당 슬랙 메시지 링크를 복사해서 part-devops-operation 채널에 붙여놓고 @tect-devops 호출 또는 해당 메시지 스레드에 @tect-devops 호출

  3. 배포 시작 시 오는 메시지의 링크를 클릭해서 runtime log (loki URL) 확인

    1. 파드가 뜨는 과정의 로그를 개발자분들이 클러스터 연결 ( kubectl ) 필요 없이 체크

  4. 성공 시 오는 메시지의 링크(프로젝트 URL) 를 클릭해서 변경사항 확인

  5. production은 production stage로 배포 ( eks cluster )

  6. development 는 development stage로 배포 ( eks cluster )

  7. feature 단위 브랜치들은 review stage로 배포 ( on-premise kubernetes cluster )


변경사항

1. start, build-check stages 추가

  • before

  • after

  • start : pipeline이 시작되었는 알림을 연결된 슬랙 채널에 전송

  • build-check : build stage가 실패했을 때만 동작하여 실패 알림을 연결된 슬랙 채널에 전송

2. review stage에 common_after,before_script 추가

  • common_before_script : 해당 pipeline에 맞는 ( 프로젝트, 환경 ) runtime log를 볼 수 있게 loki URL을 설정해서 연결된 슬랙 채널에 전송

  • common_after_script : review stage의 성공 및 실패 여부에 따라 알맞은 메시지를 연결된 슬랙 채널에 전송

3. 공통

  • SLACK_WEBHOOK_URL이 설정되지 않은 경우 배포가 안되는 상황을 방지하기 위해 경고 메시지를 출력하고 Slack 알림을 건너뜀

  • main(추후 eks-main), development 브랜치는 eks-dev에 배포, 기타 모든 브랜치는 play cluster로 배포될 수 있도록 Build.gitlab-ci.yml 수정

4. 메시지 구성

  • integration 채널이 프로젝트 별로 존재하는 것이 아닌 팀별로 존재하기 때문에 어떤 project인지 알기 위해 가장 앞에 project repo name 추가

  • 브랜치 별로 어떤 pipeline 환경인지 명시 ( main - prod, development - dev, etc - branch name )

  • pipeline을 실행 시킨 gitlab 유저명 추가

  • stage(build,deploy) 실패 시 실패한 job을 확인할 수 있는 링크 추가

  • stage(deploy) 성공 시 프로젝트 url을 확인할 수 있는 링크 추가

4.1 pipeline 성공 ( feature branch )

4.2 pipeline 성공 ( development branch )

4.3 pipeline 성공 ( main branch )

4.4 pipeline 실패 ( 빌드 )

4.5 pipeline 실패 ( 배포 )

시도 했지만 실패한 작업

  • retry 설정

    • gitlab auto deploy values 설정 값에 Probe 관련 retry 값이 없음, startProbe 관련한 retry 값 추가해도 변화없음

    • gitlab ci 설정을 하면 설정한 retry값만큼 해당 job이 다시 돌아 필요 없음

  • 채널 알림을 꺼두고 멘션이 울렸을 때만 확인하도록 메시지에 유저를 태그

    • 단순히 이름이 아니라, slack ID를 매핑해줘야 하는 이슈로 실패

PreviousCI/CD NotificationsNextPersistence Volume

Last updated 1 year ago