목록DevOps (91)
우노
들어가기 앞서, 해당 포스팅에선 Terraform을 통해, GCP Load Balancer에 특정 IP 접근만 허용하는 방법에 대해서 다뤄보겠습니다. 결론부터 말씀드리면, Google Cloud Armor security policy를 google_compute_backend_service에 연결하는 방식으로 접근 제어를 설정할 수 있습니다. google_compute_backend_service는 Google Cloud Load Balancing 사용 시, 트래픽을 여러 인스턴스 그룹에 분산하는 데 사용되는 리소스이며, 해당 리소스의 추가적인 설명은 아래 링크를 참고하시면 됩니다. https://wooono.tistory.com/699 Google Cloud Armor security policy는 g..
리소스를 생성하지 않고 리소스 구성 파일만 출력 kubectl 시, 리소스를 생성하지 않고 리소스 구성 파일만 출력할 수 있는 옵션이 있습니다. kubectl run redis \ --image=redis \ --dry-run=client \ -o yaml \ > redis-definition.yaml --dry-run=client : 명령어를 실행하지 않고 구성만을 출력합니다. -o yaml : 출력 형식을 YAML로 지정합니다. > redis-definition.yaml : 명령어의 출력을 파일에 저장합니다.
terraform apply -target=resource_type.resource_name terraform은 apply 시, -target 옵션을 통해 특정 리소스의 변경사항만 apply 할 수 있습니다. 예를 들어, 만약 AWS의 S3 버킷을 정의하는 Terraform 코드가 있다면 resource "aws_s3_bucket" "example_bucket" { bucket = "example-bucket" acl = "private" } 아래 명령어를 통해 해당 리소스에 대한 변경사항만을 apply 할 수 있습니다. terraform apply -target=aws_s3_bucket.example_bucket ‘aws_s3_bucket’이 Terraform에서 정의한 리소스의 타입이고, ‘examp..
요약 K8S에서 Resource의 Request와 Limit은 컨테이너에 할당되는 CPU, Memory의 자원량을 의미합니다. Request는, 컨테이너 생성 시 필요한 자원량을 의미합니다. Limit은, 컨테이너가 이미 실행 중인 상태에서 추가 리소스가 필요한 경우에 사용할 수 있는 최대 자원량을 의미합니다. 이때 주의할 점은, 반드시 Limit은 Request보다 같거나 커야한다는 것입니다. Limit은 추가로 얼만큼의 리소스를 더 사용할 것인지가 아닌, 컨테이너 생성 시 필요한 자원량과 추가로 사용할 자원량을 더한 최대 자원량을 의미하기 때문입니다. CPU와 Memory의 자원 단위는 아래와 같습니다. CPU : Milicore (1,000 Milicore = 1Core) Memory : Mbyte..
들어가기 앞서, 해당 포스팅에선, Prometheus Config의 scrape_configs 설정 시 static_configs의 targets을 어떻게 설정해야하는지에 대해서 다뤄보겠습니다. Prometheus Config File 예제 코드 global: scrape_interval: 30s evaluation_interval: 30s scrape_timeout: 10s scrape_configs: - job_name: 'Test' static_configs: - targets: ['12.34.567.890:8086'] “http://12.34.567.890:8086/metrics”라는 경로에서 metrics를 scrape 해오고 싶다면, targets에는 “http:/..
K8S Replicaset 상태 확인 명령어 kubectl get replicaset Desired (원하는 수) ReplicaSet으로 관리하길 원하는 Pod의 수를 나타냅니다. 사용자가 설정한 값입니다. Current (현재 수) 실제 동작 중인 Pod의 수를 나타냅니다. Ready (준비된 수) 사용할 준비가 완료된 Pod의 수를 나타냅니다. 참고 정상적인 환경이라면 Desired, Current, Ready 개수가 모두 동일해야합니다.
들어가기 앞서, Pod를 띄웠을 때, 에러로 인해 Pod가 지속적으로 재시작되는 경우가 있습니다. 이때 트러블 슈팅을 위해 일시적으로 Container를 유지하는 방법에 대해서 포스팅하겠습니다. Container Sleep 적용 apiVersion: v1 kind: Pod metadata: name: ubuntu spec: containers: - name: ubuntu image: ubuntu:latest # Just spin & wait forever command: [ "/bin/bash", "-c", "--" ] args: [ "while true; do sleep 3600; done;" ] 정석적인 방법은 아니며, 이외에도 다양한 방법이 사용될 수 있습니다. 참고 https://stackover..
들어가기 앞서, Kubernetes에서 Volume은, 3가지 구조로 사용됩니다. PersistentVolume(PV) PersistentVolumeClaim(PVC) StorageClass 해당 포스팅에선 PV와 PVC에 대해서 먼저 이해한 뒤, StorageClass에 대해서 이해해보겠습니다. PV와 PVC 요약 PV Volume 자체를 의미합니다. 클러스터 내에서 독립적으로 관리되며 별도의 생명 주기를 가집니다. 클라우드 서비스 또는 직접 구축한 Storage와 같은 다양한 소스에서 제공되는 스토리지를 사용할 수 있습니다. PVC 사용자가 PV에 요청한 정보를 의미합니다. 필요한 용량, 액세스 모드 등을 지정하여 PV를 요청합니다. Pod는 직접 PV에 연결되는 대신, PVC를 통해 스토리지에 액세..
들어가기 앞서, 해당 포스팅에선, Istio의 AuthorizationPolicy에 대해서 다뤄보겠습니다. AuthorizationPolicy란? Istio의 AuthorizationPolicy는 서비스 메시 내에서 네트워크 트래픽에 대한 엑세스 제어를 정의하는 데 사용되는 Kubernetes Custom Resource Definition(CRD) 중 하나입니다. AuthorizationPolicy를 사용하면 서비스 간 또는 서비스와 클라이언트 간의 통신을 제한하거나 규제할 수 있습니다. AuthorizationPolicy 예제 코드 AuthorizationPolicy 리소스는 Terraform을 사용해 정의하겠습니다. resource "kubernetes_manifest" "example_author..
들어가기 앞서, Kubernetes(K8s)에서 "ExternalName"은 서비스(Service) 리소스의 유형 중 하나로, 내부 클러스터의 애플리케이션들은 "ExternalName" 유형으로 선언된 서비스(Service)의 DNS를 사용해, 외부 서비스 또는 외부 도메인을 간단하게 참조할 수 있습니다. 예제 클러스터 내부 Pod에서 외부 도메인인 “external-service.example.com”에 접근해야 한다고 가정해 봅시다. 이때, 아래와 같이 ExternalName 유형의 Service를 생성한 뒤, apiVersion: v1 kind: Service metadata: name: my-external-service spec: type: ExternalName externalName: ext..