728x90

분류 전체보기 67

Kyverno - Kubernetes Native Policy Management

Kyverno - Kubernetes Native Policy Management ClusterPolicy Custom Resource를 사용하여 kubernetes의 정책을 관리할 수 있는 애드온입니다. Kubernetes dynamic admission controller로 실행되고, validating admission webhook, mutating admission webhook방식으로 동작합니다. validation 체크 및 kubernetes 리소스 설정 변경 및 특정 리소스를 추가할 수 있습니다. helm chart 또는 kustomize, yaml파일로 배포된 kubernetes 리소스에 helm chart, kustomize, yaml 파일 수정 없이 ClusterPolicy를 등록하여..

Kubernetes 2022.10.21

AWS 비용 최적화

AWS 비용 최적화 AWS를 사용하면서 비용 절감할 수 있는 몇 가지 방법을 설명합니다. AWS 사용하다 보면 비용에 크게 신경 쓰지 않고 사용하는 경우가 있습니다. AWS 비용이 많이 나오지 않는다면 크게 체감되지 않지만, AWS 사용을 많이 할수록 비용절감 효과는 크게 나타납니다. EC2 사용하지 않는 EC2 Instace 삭제하기 업무시간에만 사용하는 EC2 Instance는 Instance Scheduler를 사용하여 특정 시간에만 실행하고, 사용하지 않는 시간에는 stop 합니다. 모니터링하여 CPU / Memory 사용량을 측정 후 over-provisioning 된 EC2 Instance의 타입을 변경합니다. AWS Compute Optimizer를 사용할 수도 있습니다. EC2 Instan..

AWS 2022.10.07

Django Rest Framework Filter

Django Rest Framework Filter HTTP GET Request시 쿼리 스트링을 사용하여 검색하는 일반적인 웹 처리방식을 사용할 수 있습니다. Django Rest Framework에서 제공하는 클래스 형태의 필터 구조를 사용합니다. 사용방법 Django RestFramework의 FilterSet 클래스를 상속받아 filter 클래스를 생성합니다. 컬럼을 선언한 내용에 따라 컬럼 1개가 쿼리 스트링 1개로 1:1 매칭 됩니다. 만약 여러 컬럼에 걸친 조건으로 처리하고 싶은 경우 method를 사용할 수 있습니다. 클래스 내 선언하지 않은 쿼리 스트링은 사용할 수 없습니다. import django_filters from rest_framework import filters # Filt..

Python/Django 2022.10.05

Go AWS S3 GetObject 파일 가져오기

Go AWS S3 GetObject 파일 가져오기 AWS SDK for Go v2를 사용하여 간단하게 구현한 예제입니다. GetObject를 사용하여 S3 버킷에 있는 파일을 다운로드할 수 있습니다. package main import ( "context" "fmt" "io" "log" "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) type Client interface { GetObject(ctx context.Context, params *s3.GetObjectInput, optFns ...func(*s3.Options)) (*..

Go 2022.09.30

Terraform으로 AWS EKS 클러스터 만들기

Terraform으로 AWS EKS 클러스터 만들기 terraform을 사용하여 AWS EKS 클러스터를 만드는 예제입니다. EKS 클러스터 생성시 필요한 IAM role, CloudWatch Log Group, IAM OpenID Connect provider까지 생성하는 예시입니다. 아래의 코드사용시 subnet, security group을 생성해서 설정하거나, 사용할 subnet id, security group id로 치환해서 사용하셔야합니다. 참고로 아래의 코드에는 nodegroup을 생성하지 않습니다. # eks cluster 이름 정의 locals { cluster_name = "eks-cluster" } # eks cluster에 필요한 IAM ROLE 생성 data "aws_iam_po..

Terraform 2022.09.30

NVIDIA device plugin for Kubernetes

NVIDIA device plugin for Kubernetes kubernetes 환경에서 GPU사용시 NVIDIA device plugin daemonset을 설치해서 사용해야합니다. EKS에서는 EKS AMI를 참고해서 x86 accelerated AMI를 사용해야합니다. NVIDIA device plugin daemonset은 머신에 GPU가 없으면 실행되지않으니, Taints/Tolerations/Affinity을 사용하여 GPU머신에만 실행되도록 설정해야합니다. deployment, statefulset 정의시 resource에 아래의 코드처럼 GPU갯수를 지정해야합니다. resources: limits: nvidia.com/gpu: 1 Install helm을 사용하여 설치합니다. $ hel..

Kubernetes 2022.09.29

Django Rest Framework ViewSet

Django Rest Framework ViewSet Django Rest Framework의 ViewSet에 대하여 설명합니다. Django에서는 View 개념이 있습니다. 응답을 받아 처리 후 리턴하는 방식으로 컨트롤러 역할을 합니다. 함수 형태(FBV)로 작성하거나 클래스 형태(CBV)로 작성합니다. Django를 이용해 웹 서비스를 만들 때 RESTful 조건에 맞게 만들기 위하여 Django Rest Framework를 사용합니다. Django Rest Framework를 이용한 Class based view 인 Model ViewSet에 대하여 이해합니다. ViewSet이란? Django Rest Framework에서 HTTP Request/Response를 처리할 때 메서드 단위 또는 클래스..

Python/Django 2022.09.28

KEDA - Kubernetes Event-driven Autoscaling

KEDA - Kubernetes Event-driven Autoscaling 이벤트 기반 오토스케일링을 지원하는 애드온입니다. 다양한 이벤트 스케일러를 활용하여 kubernetes의 HPA를 대신하여 사용할 수 있습니다. KEDA 사용 시 HPA를 ScaledObject로 선언하여 사용해야합니다. ScaledObject를 선언하면 내부적으로 HPA를 생성합니다. CPU, Memory, Cron, AWS SQS 등 다양한 스케일러를 사용할 수 있습니다. prometheus 및 datadog을 지원하여, 모니터링 메트릭을 활용하여 스케일아웃이 가능합니다. Install helm을 사용하여 설치합니다. $ helm repo add kedacore https://kedacore.github.io/charts $..

Kubernetes 2022.09.28

NodeLocal DNSCache - CoreDNS 부하줄이기

NodeLocal DNSCache kubernetes cluster에서는 DNS 질의를 모두 CoreDNS를 사용합니다. 그러므로 CoreDNS에 부하가 발행할 수 있습니다. CoreDNS에 부하가 발생하면, DNS 질의 실패로 서비스에 장애가 발생할 수 있고, AWS에서는 DNS Hard Limit 제한에 걸릴 수 있으니 조심해야 합니다. NodeLocal DNSCache 데몬셋을 설치하면 DNS 성능 향상 및 CoreDNS에 부하를 줄일 수 있습니다. Install helm을 사용하여 설치합니다. $ helm repo add deliveryhero https://charts.deliveryhero.io/ $ helm repo update $ helm install node-local-dns -n ku..

Kubernetes 2022.09.26
728x90