네트워크 인프라 자동화
네트워크 인프라 자동화 (Network Infrastructure Automation)
네트워크 인프라 자동화(NIA)는 서비스 변경으로 트리거된 네트워크 인프라 장치의 동적 업데이트를 가능하게 해요. 이 문서는 Consul-Terraform-Sync(CTS)가 어떻게 Consul을 데이터 소스로 사용해 네트워크 인프라를 자동화하는지, 그리고 관련 용어 사전을 소개해요.
출처: 문서
본문
네트워크 인프라 자동화(NIA)는 서비스 변경으로 트리거된 네트워크 인프라 장치의 동적 업데이트를 가능하게 합니다. Consul-Terraform-Sync(CTS)는 Consul을 데이터 소스로 사용하는데, 이 데이터 소스에는 서비스에 대한 네트워킹 정보가 담겨 있으며 CTS는 그 서비스들을 모니터링합니다. Terraform은 기본이 되는 자동화 도구로 사용되며, Terraform 프로바이더 생태계를 활용해 네트워크 인프라에 관련 변경을 적용합니다.
CTS는 Consul 서비스 카탈로그의 가장 최신 서비스 변수 값으로 하나 이상의 자동화 태스크를 실행합니다. 각 태스크는 기본 네트워크 인프라의 리소스와 데이터 소스를 사용하는 CTS 호환 Terraform 모듈로 작성된 런북(runbook) 자동화로 구성됩니다. consul-terraform-sync 데몬은 Consul 에이전트와 같은 노드에서 실행됩니다.
CTS는 오픈 소스와 엔터프라이즈 배포판으로 제공됩니다. CTS OSS를 시작하려면 Consul-Terraform-Sync로 네트워크 구성 자동화하기 튜토리얼을 따르거나 CTS Enterprise에 대해 더 읽어보세요.
사용 사례 (Use Cases)
애플리케이션 팀은 애플리케이션을 배포·스케일 업/다운·재배포하려면 네트워크의 수동 변경을 기다려야 합니다. 이는 특히 애플리케이션 스케일 업/다운과 관련된 빈번한 워크플로에서 병목을 만들며, DevOps의 셀프 서비스 활성화 목표를 깨뜨립니다. CTS는 이 과정을 자동화해서 구성 파일을 수동으로 편집할 때 발생하는 인간의 실수 가능성을 줄이고, 구성 변경을 배포하는 데 걸리는 전체 시간도 줄여줍니다.
네트워킹·보안 팀은 필요한 속도와 변경에 맞춰 프로세스를 확장할 수 없습니다. 수동 방식은 확장성이 좋지 않아 네트워크·보안 팀에 백로그가 쌓입니다. 어느 정도 자동화(예: 스크립팅)를 갖춘 조직에서도 네트워크 자동화 워크플로를 트리거하고 구동할 정확한 실시간 데이터 소스가 필요합니다. CTS는 거의 실시간으로 실행되어 변경 속도를 따라잡습니다.
용어 사전 (Glossary)
Condition- 태스크 수준에서 정의된 환경적 요구 사항입니다. 태스크의 조건이 충족되면 CTS는 해당 태스크를 실행하여 네트워크 인프라를 업데이트합니다. 조건 유형에 따라 조건 정의는 태스크가 구성된 Terraform 모듈에 제공하는 모듈 입력을 정의하고 활성화할 수도 있습니다.Consul objects- Consul 객체는 CTS가 변경을 감시하는 Consul API에서 반환되는 응답·요청 객체입니다. 예를 들면 서비스 인스턴스 정보, Consul 키-값 쌍, 서비스 등록이 있습니다. Consul 객체는 태스크의 조건 및/또는 모듈 입력을 알리는 데 사용됩니다.Consul-Terraform-Sync (CTS)- 네트워크 인프라 자동화를 수행하는 프로젝트의 GitHub 저장소 및 바이너리/CLI 이름입니다.Dynamic Tasks- 동적 태스크는 관련 Consul 카탈로그 값(예: 서비스 인스턴스, Consul KV, 카탈로그-서비스)의 변경 시 동적으로 트리거되는 태스크 유형입니다. 비동적 태스크 유형은 예약 태스크(scheduled tasks)를 참조하세요.참고: 문서 전반에서 사용하는 "태스크(task)"라는 용어는 특별히 언급하지 않는 한 모든 유형의 태스크를 가리킵니다.Network Drivers- CTS는 네트워크 드라이버를 사용해 네트워크 인프라를 실행하고 업데이트합니다. 드라이버는 특정 네트워크 인프라에 연결된 API·리소스 세부 정보를 처리하고 추상화하여 Consul 서비스 수준 정보를 다운스트림 변경으로 변환합니다.Network Infrastructure Automation (NIA)- 서비스 변경·등록 같은 특정 조건이 충족될 때 네트워크 인프라 장치의 동적 업데이트를 가능하게 합니다.Scheduled Tasks- 예약 태스크는 일정에 따라서만 트리거되는 태스크 유형입니다. 일정 조건(schedule condition)으로 구성됩니다.Services- CTS에서 서비스는 서비스 디스커버리용으로 Consul에 등록된 서비스를 나타냅니다. 서비스는 서비스 이름으로 그룹화됩니다. 특정 서비스에는 각각 고유한 ID를 가진 인스턴스가 여러 개 있을 수 있습니다. CTS는 서비스 이름으로 서비스를 모니터링하고 네트워크 자동화를 위해 서비스 인스턴스 세부 정보를 Terraform 모듈에 제공할 수 있습니다.Module Input- 모듈 입력은 Terraform 모듈에 값이나 메타데이터를 제공하는 객체를 정의합니다. 지원되는 메타데이터와 값은 모듈 입력을 참조하세요. 예를 들어 사용자는 Consul KV 모듈 입력을 구성하여 KV 쌍을 각 Terraform 모듈에 변수로 제공할 수 있습니다. 모듈 입력은 몇 가지 방법으로 구성할 수 있습니다:condition블록의use_as_module_input필드를 true로 설정하기(이 필드는 이전에source_includes_var로 불렸으며 더 이상 권장하지 않음)module_input블록을 구성하기(이 블록은 이전에source_input로 불렸으며 더 이상 권장하지 않음)CTS 0.5.0에서 위에서 본 구성 이름 업데이트로 인해 "module input"이 "source input"에서 이름이 변경되었습니다.참고: 문서 전반에서 사용하는 "태스크(task)"라는 용어는 특별히 언급하지 않는 한 모든 유형의 태스크를 가리킵니다.Tasks- 태스크는 Consul 카탈로그의 동적 서비스 정보를 다운스트림 네트워크 인프라 변경으로 변환하는 것입니다.HCP Terraform- Terraform 문서에 따르면 "HCP Terraform"은 같은 애플리케이션의 서로 다른 두 배포판인 HCP Terraform과 Terraform Enterprise를 함께 가리킵니다. 특별히 명시하지 않는 한 문서는 두 배포판 모두에 적용됩니다.Terraform Module- Terraform 모듈은 함께 사용되는 여러 Terraform 리소스를 담는 컨테이너입니다.Terraform Provider- Terraform 프로바이더는 인프라 유형의 API 상호작용을 이해하고 리소스를 노출하는 역할을 담당합니다.
네트워크 인프라 자동화 시작하기 (Getting Started With Network Infrastructure Automation)
네트워크 인프라 자동화 (NIA) 컬렉션에는 CTS를 구성해 네트워크 인프라 자동화를 수행하는 방법의 예제가 들어 있습니다. 이 컬렉션에는 프로덕션 환경을 위해 CTS 구성을 보호하는 튜토리얼과 나만의 CTS 호환 모듈을 만드는 데 도움이 되는 튜토리얼도 포함되어 있습니다.
커뮤니티 (Community)
- 기여하기 (Contribute) - 오픈 소스 프로젝트에 기여하기
- 버그 보고 (Report) - 버그 보고 또는 기능 요청
- 토론 (Discuss) - 커뮤니티와 토론 또는 질문
- 통합 구축 (Build integrations) - CTS용 통합 만들기