728x90
개요
HashiCorp는 DevOps와 인프라 자동화를 위한 도구를 개발하는 소프트웨어 회사입니다. HashiCorp는 클라우드 인프라 관리와 배포를 간소화하고 자동화하기 위해 다양한 오픈소스 및 상용 소프트웨어 제품을 제공합니다. 이 회사는 클라우드 환경과 멀티클라우드 환경을 포함한 다양한 환경에서 일관된 워크플로우를 지원하는 도구로 유명합니다.
HashiCorp의 주요 제품
HashiCorp는 클라우드 네이티브와 인프라 관리에 중점을 둔 다음과 같은 도구들을 제공합니다
1. Terraform ( 인프라 자동화와 관리 )
- 인프라를 코드(Infrastructure as Code, IaC)로 관리할 수 있게 하는 도구
- 클라우드 자원을 프로비저닝, 관리, 및 변경
- AWS, Azure, GCP 등 다양한 클라우드 서비스의 자원 생성 및 관리
2. Vault ( 마이크로서비스 환경의 네트워킹 )
- 비밀 관리 및 데이터 보호 도구
- API 키, 비밀번호, 인증서 같은 민감한 정보를 안전하게 저장 및 접근 제어
- 애플리케이션에서 민감한 데이터를 관리하거나 암호화 서비스 제공
3. Consul ( 보안 비밀 관리와 암호화 )
- 서비스 네트워킹과 서비스 디스커버리 도구
- 마이크로서비스 간 통신을 관리하고 네트워크 정책을 제어
- 서비스 레지스트리, 헬스 체크, 분산 트래픽 관리
4. Nomad ( 컨테이너화된 워크로드 배포 )
- 컨테이너 오케스트레이션 및 워크로드 관리 도구
- 컨테이너뿐만 아니라 VM, 배치 작업 등을 관리 가능
- Kubernetes 대안으로 사용 가능하며, 간단한 작업 분배를 지원
5. Packer ( 이미지 생성 )
- 이미지 생성 도구
- 여러 플랫폼(VM, 클라우드)에 동일한 머신 이미지를 생성
- 자동화된 VM 이미지 빌드
6. Boundary ( 제로 트러스트 아키텍처 구축 )
- 보안 원격 액세스 도구
- 인프라의 특정 자원에 대해 안전하고 간단한 원격 액세스 제공
- VPN 대체 및 Zero Trust 액세스 구현
HashiCorp의 특징
- 클라우드 및 멀티클라우드 지원
- AWS, Azure, GCP 등 다양한 클라우드 환경에서 동작.
- 오픈소스 기반
- 대부분의 도구는 오픈소스로 제공되며, 상용 버전도 지원.
- 자동화 중심
- DevOps 워크플로우와 CI/CD 파이프라인에서 널리 사용.
- 확장성과 유연성
- 다양한 규모의 프로젝트와 워크로드에서 활용 가능.
실제 사용 예시(실습)
1단계 : Terraform을 활용한 인프라 프로비저닝
- 원하는 인프라 상태를 정의, 업데이트, 확장, 삭제
# vi test.tf
provider "vsphere" {
user = "administrator@vsphere.local"
password = "password"
server = "vsphere.local"
insecure = true
}
resource "vsphere_virtual_machine" "vm" {
name = "ci-server"
resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
datastore_id = data.vsphere_datastore.datastore.id
}
# terraform plan // 검토
# terraform apply // 인프라 프로비저닝
2단계 : Vault를 통한 비밀 관리
- Vault는 API 키, 비밀번호, 인증서와 같은 민감한 정보를 보호하는 도구
구현 방법
- Vault 서버 설정
- Vault를 보안처리 된 VM 또는 Kubernetes 환경에 배포
- 초기화 및 언실(Unseal) 작업을 통해 Vault를 활성화 - 비밀 저장 및 접근
- CLI 또는 API를 통해 민감한 정보를 저장
- 안전하게 정보를 가져온다.
vault kv put secret/ci-pipeline/token value="github_personal_token" vault kv get secret/ci-pipeline/token
- 동적 screte 생성
- Vault를 사용하여 데이터베이스 자격증명과 같은 비밀을 동적으로 생성하도록 설정
3단계 : Consul을 통한 서비스 네트워킹 관리
구현 방법
- 서비스 등록
- CI/CD 서비스(예: Jenkins, GitLab Runner)를 Consul에 등록 - 헬스 체크
- 서비스의 가용성을 모니터링하기 위한 헬스 체크를 정의 - 트래픽 관리
- 마이크로서비스 간 통신 정책을 설정하고 카나리 배포를 위한 트래픽 분할을 구현
{
"service": {
"name": "jenkins",
"port": 8080
}
}
4단계 : Nomad를 활용한 오케스트레이션
- CI/CD 빌드 에이전트 또는 애플리케이션을 실행하기 위한 작업(job)을 정의
job "ci-agent" {
datacenters = ["dc1"]
group "build-agents" {
task "agent" {
driver = "docker"
config {
image = "jenkins/jenkins"
}
}
}
}
- 배포 및 확장
# nomad run
# nomad scale
5단계 : Packer를 활용한 이미지 생성
- 이미지 템플릿 정의(기본 운영 체제와 필요한 설정을 Packer 템플릿으로 정의)
{
"builders": [{
"type": "vsphere-iso",
"vcenter_server": "vsphere.local",
"username": "administrator@vsphere.local",
"password": "password"
}],
"provisioners": [{
"type": "shell",
"inline": [
"apt-get update",
"apt-get install -y docker.io"
]
}]
}
- 이미지 빌드
- packer build 명령으로 이미지를 생성
- Terraform 등을 통해 이미지를 배포
6단계 : Boundary를 통한 보안 엑세스
- Boundary는 인프라 리소스에 안전하고 간단한 원격 액세스를 제공
대상 (Target) 설정
- ESXi VM 또는 특정 리소스에 대한 안전한 액세스를 정의
target "ci-server" {
type = "ssh"
address = "192.168.1.100"
port = 22
credentials {
username = "admin"
password = "admin-password"
}
}
리소스 엑세스
- Boundary 클라이언트를 사용해 VPN 없이 안전하게 연결
boundary connect ssh -target-id <target-id>
'DevOps' 카테고리의 다른 글
[Devops] Ansible CLI 도구 설치 및 실습 매뉴얼 (0) | 2025.01.22 |
---|---|
[Helm] Windows 환경에서 helm 설치하기 (0) | 2024.12.22 |
[DevOps] Ubuntu24.04에 Jenkins 설치하기 (0) | 2024.12.10 |
[Ubuntu24.04]OpenLens 설치 (0) | 2024.12.03 |
[DevOps]인프라 자동화의 핵심 도구들: Terraform, cloud-init, Helm, Ansible, Vagrant (7) | 2024.11.09 |