본문 바로가기

분류 전체보기

(220)
[Terraform]조건문(Conditional)을 사용하여 resource 작성하는 방법 조건부 표현식(Conditional Expression)의 이해 조건부 표현식은 "조건 ? 참일 경우의 값 : 거짓일 경우의 값"의 형태로 사용됩니다. 이는 프로그래밍 언어에서 자주 볼 수 있는 삼항 연산자와 동일한 형태입니다. 이런 식으로 Terraform에서는 변수나 리소스의 값을 동적으로 결정할 수 있습니다. 왜 조건부 표현식이 필요한가? 인프라의 설정이나 배포 과정에서 모든 상황에 동일한 설정을 사용하는 것은 비효율적입니다. 예를 들면, 개발 환경과 실제 환경에서는 다른 설정이 필요할 수 있습니다. 이런 다양한 상황에 대응하기 위해 동적으로 리소스나 출력 값을 결정하는 것이 필요하고, 이때 조건부 표현식이 유용하게 사용됩니다. var 옵션으로 변수 재정의 tf apply -var="변수명=값" 형..
[Terraform]count와 for_each를 사용하여 반복되는 resource 작성하는 방법 count와 for_each와 같은 Terraform의 반복 구문을 사용하면 코드의 반복을 줄이고, 관리를 용이하게 할 수 있습니다. 단순 반복하여 작성한 Terraform resource code # provider provider "aws" { region = "ap-northeast-2" } # resource resource "aws_iam_user" "user_1" { name = "user-1" } resource "aws_iam_user" "user_2" { name = "user-2" } resource "aws_iam_user" "user_3" { name = "user-3" } # output output "user_arns" { value = [ aws_iam_user.user_1.a..
[Terraform]테라폼 Output Values 사용법 Terraform에는 명명된 값을 요청하거나 게시하기 위한 몇 가지 종류의 블록이 포함되어 있습니다. Input Variables 는 Terraform 모듈의 매개변수 역할을 하므로 사용자는 소스를 편집하지 않고도 동작을 커스터마이징할 수 있습니다. Output Values 은 Terraform 모듈의 반환(return) 값과 같습니다. Local Values 은 표현식에 간단한 이름을 지정할 수 있는 편리한 기능입니다. 2023.02.07 - [IaC/Terraform] - [Terraform]테라폼 Input Variables 사용법 2023.02.09 - [IaC/Terraform] - [Terraform]테라폼 Local Values 사용법 Output Values doc Link Output V..
[Kubernetes]Sealed secrets - A Kubernetes controller and tool for one-way encrypted Secrets https://github.com/bitnami-labs/sealed-secrets 개요 kubernetes secrets config를 git에 저장하려고 한다. 문제는 secrets config는 base64 decode를 이용해 쉽게 해독이 가능하다. SealedSecret를 이용하면 이 대상 클러스터에서 실행되는 컨트롤러에 의해서만 secrets이 해독될 수 있고 다른 누구도(심지어 원래 작성자도) SealedSecret에서 원래 비밀을 얻을 수 없다. 방법 SealedSecret 를 이용하여 암호된 SealedSecret.yaml을 생성한다. SealedSecret.yaml를 배포하여 kubernetes secrets을 생성한다. 주기적으로 Sealed secrets, secrets(e.g. d..
[Mimir]Grafana Mimir Architecture Architecture Grafana Mimir는 개별적으로 또는 병렬로 실행할 수 있는 수평 확장 가능한 여러 개의 마이크로서비스로 구성됩니다. 그리고 이러한 마이크로서비스를 컴포넌트라고 합니다. Grafana Mimir 스토리지 format은 Prometheus TSDB 스토리지를 기반으로 합니다. 그리고 스토리지 format은 각 테넌트의 시계열을 자체 TSDB에 저장하여 온디스크 블록에 지속시킵니다. 기본적으로 각 블록의 범위는 2시간이며, 각 온디스크 블록 디렉터리에는 인덱스 파일, 메타데이터 파일, 시계열 청크가 포함되어 있습니다. TSDB 블록 파일에는 여러 시리즈에 대한 샘플이 포함되어 있습니다. 블록 내부의 시리즈는 블록별 인덱스로 색인되며, 이 인덱스는 메트릭 이름과 레이블을 모두 블록..
[Loki]Install Grafana loki-distributed with helm chart Service Account 설정 AWS EKS에서 S3를 사용할 수 있도록 Kubernetes의 Service Account 생성하고 AWS IAM Role을 설정하여 Kubernetes Service Account + AWS IAM Policy + Trust Relationship를 연결합니다. 아래 설명에 따라 Role을 생성한 뒤 helm chart의 `serviceAccount.annotations` 에 내용을 작성하여 사용할 수 있습니다. IAM Policy 생성 cat >Loki-S3-policy.json trust-relationship.json
[Loki]Grafana Loki Architecture Architecture Architecture에서는 아래의 핵심 개념에 대하여 자세히 설명합니다. 핵심 개념 Read Path와 Write Path: Loki는 로그 데이터 처리를 위한 읽기 경로(Read Path)와 쓰기 경로(Write Path)를 구분합니다. 이러한 분리는 데이터 처리의 효율성을 극대화하며, 각 경로는 특정 작업에 최적화된 컴포넌트로 구성됩니다. Consistent Hash Rings: 클러스터 내에서 데이터를 균등하게 분배하고 고가용성을 보장하는 메커니즘입니다. 이는 클러스터의 스케일링을 용이하게 하며, 데이터 샤딩과 복제를 통한 안정성을 제공합니다. Multi-tenancy: Loki는 다중 테넌시를 지원하여, 하나의 Loki 인스턴스를 여러 사용자나 팀이 공유할 수 있게 합니다..
[Loki]What is Grafana Loki? Concept Grafana Loki는 로그 집계 도구로, 모든 기능을 갖춘 로깅 컴포넌트 집합입니다. Indexed Loki는 다른 로깅 시스템과 달리 아래와 같이 로그 스트림의 메타데이터인 레이블(Prometheus의 레이블과 같은)만 인덱싱한다는 개념에 기반해 구축되므로 원본 로그 메시지는 색인되지 않습니다. 그런 다음 로그 데이터 자체는 압축되어 S3나 GCS와 같은 object stores에 chunks로 저장되거나 파일 시스템에 저장됩니다. 작은 인덱스와 압축된 chunks는 간결하면서도 효율적인 쿼리 실행을 가능하게하고 Loki의 비용을 크게 낮추게 됩니다. Agent 에이전트(클라이언트)는 로그를 수집하고, 로그를 스트림으로 변환한 다음, HTTP API를 통해 스트림을 Loki로 푸시합니..