728x90

전체 글 67

Django ORM

Django ORM Django ORM 사용 법에 대하여 설명합니다. ORM 이란 Database Table을 프로그래밍에 친숙 한 Class/Object 문법으로 다룰 수 있게 합니다. 프로그램 문법과 DB 사이에 느슨한 결합이 가능합니다. 선언을 통한 테이블 연결: 컬럼 명이 바뀌면 Class 선언 한 부분만 수정하면 됨. 연결된 테이블과 DBMS 문법에 맞는 쿼리 생성: MySQL, SqlLite, PostgreSQL 등 DBMS 가 바뀌어도 코드가 수정될 필요 없다. 실제 컬럼 명과 다른 이름으로, 네이밍 룰을 쉽게 적용하고 바꿀 수 있다. Lazy loading 실제 데이터를 참조해야 하는 시점에 쿼리가 실행됨 기본 문법 모델 선언 테이블 1개를 클래스 1개로 만들고 클래스의 속성으로 사용할 컬..

Python/Django 2022.09.23

Amazon EFS CSI Driver

Amazon EFS CSI Driver kubernetes에서 AWS EFS 사용을 위해 Amazon EFS CSI Driver 설치해야 합니다. efs-csi-node daemonset과 efs-csi-controller deployment로 구성되어있습니다. Install helm을 사용하여 설치합니다. AWS의 IAM Role을 생성하고, policy 를 참고하여 권한 설정을 해야 합니다. # values.yaml replicaCount: 3 controller: serviceAccount: create: true annotations: eks.amazonaws.com/role-arn: arn:aws:iam::${ACCOUNT_ID}:role/efs-csi-controller node: servic..

Kubernetes 2022.09.23

Kubernetes RBAC 알아보기

Kubernetes RBAC 알아보기 kubernetes의 권한 설정은 RBAC 방식으로 설정할 수 있습니다. 자세한 설명은 공식문서를 참고해주세요. 아래의 목록은 Kubernetes에서 기본으로 제공하는 ClusterRole입니다. 기본으로 제공하는 ClusterRole을 활용하면, 복잡한 권한 설정을 하지 않고 쉽게 권한 설정을 할 수 있습니다. ClusterRole Description cluster-admin kubernetes의 모든 리소스를 제한없이 접근할 수 있는 권한입니다. 최고관리자 권한설정입니다. admin RoleBinding 을 사용하여 네임스페이스 관리자 권한을 설정합니다. edit Role / RoleBinding을 제외하고, 네임스페이스 안에 있는 리소스에 대한 읽기/쓰기 권한..

Kubernetes 2022.09.22

Terraform state mv 사용하기

Terraform state mv 사용하기 terraform을 사용하다 보면 terraform state mv 명령어를 사용할 일이 종종 발생합니다. 아래 같은 사례가 있을 때 terraform state mv 명령어를 사용하여, 기존에 생성된 리소스를 삭제 후 다시 생성하지 않고, terraform state를 유지할 수 있습니다. HCL 구조 리펙토링 리소스 이름 변경 리소스를 모듈로 변경 리소스 이름 변경 아래의 코드는 리소스 이름을 변경하는 예제입니다. # 리소스 이름을 vpc에서 dev로 변경합니다. -resource "aws_vpc" "vpc" { +resource "aws_vpc" "dev" { cidr_block = "10.10.0.0/24" } HCL코드는 리소스 이름을 변경하여 저장 후..

Terraform 2022.09.21

CoreDNS NXDOMAIN 오류 해결

CoreDNS NXDOMAIN 오류 해결 kubernetes에서 필수구성요소인 CoreDNS의 MXDOMAIN 오류를 해결하는 방법입니다. NXDOMAIN 오류란? MXDOMAIN 오류는 등록되지않은 DNS를 조회하여 나오는 오류입니다. kubernetes에서 service discovery를 위해 kubernetes에서 사용하는 규칙으로 DNS 질의시 5번정도 더 질의하게 되는데, 이때 질의되는 도메인이 DNS서버에 등록되지않은 도메인이기때문에 오류가 발생합니다. AWS에서는 도메인 질의를 너무 많이하게되면, EC2 DNS Limit(1024 packets per second) 제한이 걸려서 DNS질의 실패로 서비스에 장애가 발생할 가능성이 있습니다. 아래의 로그는 CoreDNS에 로그를 설정하여 MX..

Kubernetes 2022.09.21

PostgreSQL LIKE 검색 속도를 높여주는 pg_trgm 활용 방법

PostgreSQL LIKE 검색 속도를 높여주는 pg_trgm 활용 방법 Trigram 알고리즘 기반으로 검색속도를 향상시키는 extension 입니다. Full Text Search와 차이점이 있지만 간단하게 구현할 수 있는 장점이 있다. Trigram 기반이기 때문에 LIKE + ‘ ‘ 안에 (%를 제외한) 3글자 이상부터 적용 가능하다는 것을 주의해야 한다. 자세한건 공식문서를 참고해주세요. # extension 설치 CREATE EXTENSION pg_trgm; # GIN 인덱스를 사용해야합니다. CREATE INDEX index_name ON table_name USING GIN("column_name" gin_trgm_ops);

PostgreSQL 2022.09.20

Resizing StatefulSet Persistent Volumes with zero downtime

Resizing StatefulSet Persistent Volumes with zero downtime kubernetes statefulset에서 사용중인 persistent volume의 사이즈를 다운타임없이 용량을 증가하는 방법입니다. Storage Class 설정 확인 StatefuleSet에 설정한 storageClassName을 확인하여, 아래의 storage class의 설정을 확인해주세요. allowVolumeExpansion 값이 true인 경우에만 resize 가능합니다. allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: meta.helm.sh/release-..

Kubernetes 2022.09.20

AWS SSM을 사용하여 Port Forwarding 하기

AWS SSM을 사용하여 Port Forwarding 하기 AWS SSM을 사용하여, RDS 및 ElastiCache 등 private 네트워크 영역에서 접근가능한 서버들을 Port Forwarding 하여 접근하는 방법을 설명합니다. EC2 Instance 우선 SSM Agent가 3.1.1374.0 버전부터 지원하니, 버전을 확인하여 같거나 높은 버전을 설치한 EC2 Instance를 준비해주세요. 그리고 SSM을 사용하여 EC2 Instance에 접속이 가능해야합니다. Port Forwarding 아래의 명령어를 사용해서 port forwarding할 수 있습니다. $ aws ssm start-session \ --region $region \ --target $ec2_instance_id \ --..

AWS 2022.09.20

AWS SSM 사용하여 EC2 Instance 접속하기

AWS SSM 사용하여 EC2 Instance 접속하기 AWS SSM을 사용하여 EC2에 접근하는 방법에 대해서 설명합니다. SSH를 직접 사용하지 않아도 접근가능한 방법입니다. SSH Port 오픈 및 Key Pair가 필요하지 않습니다. IAM Role EC2 Instance Profile 롤을 생성하고, AWS Managed Policy인 AmazonSSMManagedInstanceCore 권한을 설정해야합니다. EC2 Instance Profile을 생성하였으면, EC2 인스턴스 생성시 Role을 설정해주세요. Amazon SSM Agent 대부분 AWS에서 제공하는 공식 AMI에는 기본적으로 amazon ssm agent가 설치되어있지만, 설치가 되어있지않으면, cloud-init 및 userd..

AWS 2022.09.20
728x90