GitHub Actions를 기반으로 CI를 어떻게 구성하는지, 그리고 CI 안에는 어떠한 내용들이 담겨야 하는지에 대한 학습을 진행하며, Google DevOps Report 2022에서 화두가 되었던 SLSA Framework을 통한 검증에 대한 부분을 학습할 수 있습니다.
이런 걸
배워요!
CI
GitHub Actions
SLSA Framework
InfraCost
Software Bill of Material
SonarQube
TruffleHog
ConfTest
AWS IAM
CI 구성을 위한 Github Action!
“CI가 대체 어떤 건지 궁금해요. 기술적 관점에서 개념을 잡아나가려면 어떻게 하는 게 좋을까요?”
“기업에서 Jenkins 같은 CI 솔루션을 설치해서 쓰고 있는데, CI 내에 어떤 컨텐츠를 넣어야 할까요?”
“CI/CD 전략에 대한 컨설팅은 받았는데, 구현 방법이 고민입니다.”
“우리 조직의 CI 구성에 대한 평가와 관리가 필요해요.”
조직에서 CI를 도입한다고 할 때, 실제로 내용을 보면 빌드 후 패키지 배포가 전부인 경우가 많습니다. 하지만 CI에서 구현해야 할 부분은 Software Supply Chain(소프트웨어 공급망)을 구성하는 것으로, 단순히 CI 솔루션을 설치하는 게 전부가 아닙니다.
Github Actions을 이용해 CI(Continuous Integration)을 구성하는 방법과, CI 내에서 Software Supply Chain을 구성할 때 필요한 도구들을 어떻게 적용하는지를 알아봅니다.
이 강의에서는 CI를 이용한 Software Supply Chain을 구성을 할 때 최소한 구현되어 있어야 하는 Model CI Flow에 대해 다룹니다. CI 시스템을 구성하고 평가하기 위한 기준과 방법들이 궁금하셨던 분들께 이 강의가 도움이 되시기를 바랍니다.
Case 1 CI 구성에 대한 가이드라인이 있을까요?
SLSA Framework를 통해 Software Supply Chain에 대한 가이드라인을 제시합니다.
Case 2 CI 시스템에는 Host와 Agent라는 개념이 있는데, 이를 구성하는 방법은 어떤 것이 있나요?
CI Host는 Github Actions를 사용하고, Agent는 Github에서 제공하는 SaaS 기반 Agent 또는 Ephemeral 환경 기반 자체 Agent를 구성하는 방법에 대해 설명을 드립니다.
Case 3 우리 회사의 기술적인 정책 가이드라인을 CI에 넣고 싶은데 방법이 있을까요?
CI 상에서 보안 점검 사항들을 적용하는 법에 대해 SonarQube와 Aqua Trivy를 통하여 설명하여 드립니다. 또한, ConfTest를 통하여 Policy as Code란 무엇인지에 대해 보여 드립니다.
Case 4 우리 조직은 Terraform을 통해 IaC를 사용하고 있는데, 이에 대한 비용 관리를 CI에서 먼저 할 수 있을까요?
InfraCost를 활용해 GitHub Pull Request에 Terraform 변경에 대한 비용 증감을 표시하는 방법에 대해 설명을 드립니다.
CI는 비단 CI 소프트웨어를 설치하고 빌드 자동화만 하는 것이 아닙니다. 빌드와 Artifact 생성을 다루는 일반적인 CI 강의와 달리, 본 강의는 CI의 본 목적인 Software Supply Chain Management와 Gated Commit이라는 컨셉을 기준으로 합니다.
뿐만 아니라 최근 오픈 소스 라이브러리로 인한 보안 침해 사고(Log4j, SolarWind)로 인해 부각되고 있는 Software Bill of Material을 기반으로 Dependency management, SLSA Framework 등의 최신 트렌드까지 반영하여 진행합니다.
CI가 CI 소프트웨어를 설치하고 빌드 자동화만 하는 것이 아니라는 것을 이해할 수 있습니다. 아울러 SLSA Framework에 대해 이해하며, 이것이 어떠한 솔루션들과 결합하여 Framework Level 최고 단계인 4단계까지 올릴 수 있는지에 대해 배우게 됩니다.
Gated Commit를 실현하는 방법을 GitHub을 통하여 학습하며, Microservice 구조 상에서 연관된 서비스에 대한 CI Chain을 만드는 방법에 대해서 알아봅니다. GitHub Custom Actions을 만들 수 있고, 이를 활용하여 재사용 가능한 Software Supply Chain을 만드는 방법에 대해 이해할 수 있습니다. Persistent agent와 Ephemeral agent의 특징과 차이를 함께 이해합니다.
Github Actions 처음 시작하기
IaC 배포 안정성 검증하기
CI에서 보안 취약점 점검하기
Private repository를 이용한 Container image 관리
GitHub Custom Action을 사용하여 Build Process 모듈화 하기
GitHub Self-hosted runner 구현하기
SLSA Framework을 통한 Summary
한국 · 호주 · 영국에서 Full-stack Developer, DevOps Engineer/Consultant로 15년 정도 일하고 있는 Digital Nomad IT Engineer입니다. IT 조직 운영 최적화를 위해 끊임없이 새로운 주제에 대해 공부하고 있으며, 은퇴할 때까지 Engineer로 생활하고 싶다는 꿈을 가지고 있습니다. 현재는 호주 Melbourne에 있는 한 은행의 Developer Experience 팀에서 DevOps로 활동하고 있습니다.
Q. CI를 구현할 때 그냥 Jenkins 설치하고 Build Command 넣고 배포하게 하면 되는 게 아닌가요?
CI 구현은 빌드 자동화를 하는 것이 목표가 아닙니다. 전체적인 Software Supply Chain에서 발생할 수 있는 빌드, 테스트, 조직의 보안/컴플라이언스 요구사항 등을 자동화하여 점검하여 신뢰성 있는 Artifact를 CD 파트로 넘겨주는 것이 그 목적이라고 할 수 있습니다.
Q. 사용하는 소프트웨어가 많던데 관련한 기초 지식이 필요한가요?
본 강의에서 사용하는 소프트웨어에 대한 부분에 대해서는 사용 목적과 사용 방법에 대한 부분을 설명해드리면서 CI와 Integration하는 과정을 진행합니다.
Q. DevOps로 커리어를 쌓을 때 이 파트가 얼마나 중요한가요?
DevOps와 관련된 포지션에서는 CI/CD에 대한 부분은 기본적인 요구 사항으로 들어가 있으며, 이때 CI에 대한 질문에서 파이프라인을 어떻게 구성할지에 대한 아이디어 또는 경험을 묻는 경우가 많습니다. 이때, 중요하게 바라보아야 할 관점이 Pipeline flow와 Gated commit에 관련된 부분이고, 본 강의에서는 이러한 부분들을 다루고 있습니다.
💾 수강 전 참고 사항
실습을 위해 다음 PC 사양 및 서비스 버전이 필요합니다.
학습 대상은
누구일까요?
CI 내에 컨텐츠를 어떻게 구성하는지 궁금하신 분
GitHub Actions가 아예 처음이라 기본 지식을 얻고 싶으신 분
Microservice Architecture 상에서 CI는 어떻게 구성하는지 궁금하신 분
CI에서 DevSecOps는 어떻게 구성하는지 궁금하신 분
선수 지식,
필요할까요?
Shell Scripts
Kubernetes 환경 설치 방법, Minikube 또는 EKS/GKE/AKS 셋업 방법
Helm 명령어 설치 방법
한국/호주/영국에서 Full-stack developer, DevOps Engineer/Consultant로 15년 정도 일을 하고 있는 Digital Nomad IT Engineer 입니다. IT 조직 운영의 최적화를 위해 끊임 없이 새로운 주제에 대해서 공부를 하고 있으며, 은퇴할 때까지 Engineer로 생활하고 싶다는 꿈을 가지고 있습니다. 현재는 호주 Melbourne에 있는 한 은행의 Developer Experience 팀에서 DevOps로 활동하고 있습니다.