PKOS-kOps-1Week

이번에 스터디에 참가하게 되었다. 가시다님의 PKOS! 스터디할시에 사용하는 책은 24단계 실습으로 정복하는 쿠버네티스 이다. kOps를 프로비저닝하는데 오타가 발생해서 심심해서 스크립트를 만들었다. 그덕에 한번 다시 만들었다. #!/bin/bash echo "클러스터명-도메인을 입력해주세요 : " read KOPS_CLUSTER_NAME echo "버킷명을 입력해 주세요 s3:// 는 입력하지 않아도 됩니다. : " read KOPS_STATE_STORE # Access Key를 입력 받음 read -p "엑세스키를 입력해주세요 : " ACCESS_KEY # Secret Access Key를 입력 받음 read -p "시크릿키를 입력해주세요 : " SECRET_KEY # AWS 계정 구성 aws configure set aws_access_key_id $ACCESS_KEY aws configure set aws_secret_access_key $SECRET_KEY echo 'export AWS_PAGER=""' >>~/.bashrc echo "export REGION=ap-northeast-2" >>~/.bashrc echo "export KOPS_CLUSTER_NAME=$KOPS_CLUSTER_NAME" >>~/.bashrc echo "export KOPS_STATE_STORE=s3://$KOPS_STATE_STORE" >>~/.bashrc kops create cluster --zones="$REGION"a,"$REGION"c --networking amazonvpc --cloud aws \\ --master-size t3.medium --node-size t3.medium --node-count=2 --network-cidr 172.30.0.0/16 \\ --ssh-public-key ~/.ssh/id_rsa.pub --name=$KOPS_CLUSTER_NAME --kubernetes-version "1.24.10" --dry-run -o yaml > mykops.yaml kops create cluster --zones="$REGION"a,"$REGION"c --networking amazonvpc --cloud aws \\ --master-size t3.medium --node-size t3.medium --node-count=2 --network-cidr 172.30.0.0/16 \\ --ssh-public-key ~/.ssh/id_rsa.pub --name=$KOPS_CLUSTER_NAME --kubernetes-version "1.24.10" -y source <(kubectl completion bash) echo 'source <(kubectl completion bash)' >> ~/.bashrc echo 'alias k=kubectl' >> ~/.bashrc echo 'complete -F __start_kubectl k' >> ~/.bashrc read 명령어를 이용하여 스크립트에 변수를 부여하고 입력받은 변수를 이용하여 aws configure 를 설정하고, kops 명령어로 k8s 클러스터를 프로비저닝한다. ...

March 6, 2023 · 1 min · 📁 Linux, Kubernetes · 🏷️ bash, kops, cli

2022 회고

2022년은 나에게도 많은 일이 있었던 해이다. 나는 네이버클라우드 솔루션아키텍트에서 밀리의서재 인프라스트럭처 엔지니어로 이직했다. 그사이에 책도 출간했다. 차도 샀다. 이직 후에 ISMS인증 심사도 받았다. 네이버클라우드에서는 나는 주로 설계를하고 내부적문제를 분석하고 에스컬레이션하는 업무를 맡았다. 그리고 CSAP 인증관련 프로젝트를 하며, 기약없는 나날을 보내고 있었다. 성장에 목이 말랐고, 뭘해야할지 모르는 안타까운 날들이었다. 회사의 성장은 느껴지는데, 나의 성장은 멈춰있는 느낌이었다. 문제는 회사가 아니라 나에게 있었다. 일상에서의 자극들이 아이디어와 성장으로 이루어지는 나의 방식이 알맞지 않았다. 또 기술적 성장을 더욱 하고싶었다. ...

December 26, 2022 · 1 min · 📁 linuxer?, 기타 · 🏷️ 회고

T101-AWS-To-SLACK-Noti - EventBridge

이제야 블로그가 손에 잡혀서 오랜만에 글을 쓰기위해 책상앞에 앉았다. 이게다 내 게으름 때문이다. 맨날 이 뻔한 핑계를 치면서 한번 웃고야 말았다. 이번에 쓸 블로깅은 T101에서 한번 발표한 적인 있는 내용이다. 이 포스팅에선 EventBridge와 CloudTrail을 집중적으로 다룬다. https://nyyang.tistory.com/126 이블로그를 보고 작업을 시작했다. 먼저 시작하기전에 EventBridge Bus 규칙에서 Trail에서 패턴을 감지하기위해선 이벤트버스는 무조건 Default여야한다. 다른 버스에 만들면 버스 지나간 다음 손 흔들어야 한다. 패턴을 감지할수 없다는 이야기다. 골자는 이렇다. CloudTrail 에서 발생하는 이벤트를 EventBridge 는 특정 패턴을 감지해서 이벤트를 발생시킬수 있다. ...

December 17, 2022 · 4 min · 📁 AWS

T101-Study-4Week

가시다님과 스터디를 한지도 5번째 이번엔 테라폼이다. 오늘 블로그를 쓰게된건 중간과제를 설명하기 위해서다. 바로 본론으로 들어간다. 내 GIT 이다 https://github.com/Cloud-Linuxer/T101/tree/main/4week variable "availability_zone" { description = "Seoul region availability zone" type = list default = ["ap-northeast-2a", "ap-northeast-2b", "ap-northeast-2c", "ap-northeast-2d"] } variable "subnet_numbers" { type = list default = [10, 20, 30, 40] } variable "az_count" { type = list default = ["A", "B", "C", "D"] } 나의 Variables는 이런식으로 구성되어있다. 모든 타입을 List로 선언하여 사용한다. 5주차에 할 테라폼 의 반복문을 사용하기 위한 형태다. 가장 중요한 부분은 subnet_numbers 부분이다. 10, 20, 30, 40 이 핵심이다. ...

November 12, 2022 · 2 min · 📁 AWS

AWS-FinOps-S3-incomplete-multipart-uploads-MPU

S3는 청크 단위로 파일을 잘라서 업로드 할수있는 기능을 제공한다. 이 기능의 정식명칭은 multipart upload 이다. https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html MPU라고 줄여서 부른다. MPU는 업로드 속도를 빠르게 해줄수있는 아주 좋은 기능이지만, 업로드에 실패할 경우 완성되지 않은 청크단위의 파일들이 S3스토리지에 저장되게 된다. 업로드가 정상적으로 이루어진 경우 청크단위로 나뉜 파일을 하나의 파일로 합쳐서 객체로 보이게 되지만, 그렇지 않은 파일은 우리의 눈에 보이지 않지만 S3의 스토리지에 비용만 발생시키며, 하등 쓸모없는 상태로 저장만 되어있는다. 이런 경우를 "incomplete multipart uploads" 라 부른다. ...

August 13, 2022 · 1 min · 📁 AWS, FinOps · 🏷️ s3, MPU, incomplete multipart uploads

AWS-IAM-Identity-Center

가시다 님과 함께하는 CASS 스터디를 시작했다. 첫시간은 OU / IAM과 함께하는 즐거운 시간. MSP에서 OU는 열심히 익힌터라 좀 자신이 있었다. 그래서 나는 IAM Center를 써봤다. 검증할것은 이것이다. 지금까지는 각 계정에 역할을 생성하고, STS를 통해서 계정에 접근했다면 IAM Center에선 통합계정을 생성하여 OU에 연결된 루트계정들에 접근할수 있도록한다. 먼저 OU에 계정을 연결한다. 3개의 계정이 연결된것을 확인할수있다. linxuer 계정이 Root OU를 관리한다. linuxer 계정에서 IAM Identity Center서비스 로 이동한다. 그리고 사용자를 생성한다. ...

August 13, 2022 · 2 min · 📁 AWS

AWS FinOps - Intro

이번엔 FinOps에 대한 이야기를 할거다. 먼저 본론으로 들어가기 전에 FinOps에 대한 정의부터 이야기할까 한다. 우리가 흔히 알고있는 DevOps는 Development 과 operations 의 합성어 이다. FinOps는 이 DevOps 에 Finance를 더한것이다. ( Finance + Development + Operations ) IT infra 상에서 발생하는 비용을 제어하고 투자하는 방식을 말하는것이다. '투자' 라고 말하면 의아 할수도 있는데 클라우드 상의 자원은 무한하지만 사용자에게 할당된 비용은 유한하다. 그렇기에 제한된 비용내에서 적절한곳에 맞는 리소스를 투입하는것이 FinOps 에서 투자인것이다. ...

August 7, 2022 · 1 min · 📁 AWS, FinOps

Kubernetes-Mysql-Operator

Mysql Operator 스터디를 진행중에 느꼈다. Mysql Operator는 현재 나의 판단보다 Operator의 로직이 훨신 빠르고 정확하게 동작할거라는 생각이 들었다. 다른말로는 믿고 써도 될수준에 가깝다 느껴졌다. 물론 RDS 못잃어 https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-introduction.html 그래서 나는 실습은 그냥..helm으로 다들 하는것 같아서 Operator가 생성하는 Mysql Cluster 의 아키텍처를 파해쳐 볼까한다. DNS - SRV Record https://www.haproxy.com/documentation/hapee/latest/management/service-discovery/dns-service-discovery/discovery-with-srv-records/ SRV 레코드는 자주 사용 되는 레코드는 아니지만, GSLB혹은 가중치를 이용한 라우팅, 페일오버 등에 사용된다. https://blog.o3g.org/network/dns-record/ 수진님의 포스팅 링크 https://dev.mysql.com/doc/refman/8.0/en/connecting-using-dns-srv.html 정리하자면 Mysql Routor 에서 클러스터의 노드별로 srv레코드를 부여하고, ...

June 8, 2022 · 2 min · 📁 Kubernetes

DOIK-Study

가시다님과 함께하는 스터디는 항상 즐겁다. 이번 스터디엔 라이브로 못해서..일단 바닐라쿠버 배포하고 시작했다. Headless 서비스는 ClusterIP가 None으로 설정하며 kubeproxy를 통하지않고 pod의 endpoint가 svc에 연결된다. 나는 먼저 NFS 서버를 Headless 로 배포하기로 했다. kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nfs-server-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- kind: Service apiVersion: v1 metadata: name: nfs-service spec: type: ClusterIP clusterIP: None selector: role: nfs ports: # Open the ports required by the NFS server # Port 2049 for TCP - name: tcp-2049 port: 2049 protocol: TCP # Port 111 for UDP - name: udp-111 port: 111 protocol: UDP # Port 20048 for TCP - name: tcp-20048 port: 20048 protocol: TCP --- apiVersion: v1 kind: ReplicationController metadata: name: nfs-server spec: replicas: 1 selector: role: nfs-server template: metadata: labels: role: nfs-server spec: containers: - name: nfs-server image: gcr.io/google_containers/volume-nfs:0.8 ports: - name: nfs containerPort: 2049 - name: mountd containerPort: 20048 - name: rpcbind containerPort: 111 securityContext: privileged: true volumeMounts: - mountPath: /exports name: nfs-export volumes: - name: nfs-export-fast persistentVolumeClaim: claimName: nfs-server-pvc-fast ? ...

May 26, 2022 · 5 min · 📁 AWS, Linux, Kubernetes

클라우드를 시작하는 사람을 위한 안내서

시작하는 사람을 위한 안내서를 작성하고 싶었는데, 좀 늦었다. 매번 하는 말이지만 내 게으름 때문이다. 꼭 누군가에게 도움이 되는 글을 작성하고 싶었는데 그게 바로 오늘인 듯 하다. 클라우드를 하려면 먼저 계정을 생성하여야 한다. 계정을 생성 하였는가? 축하한다. 드디어 클라우드에 입문한 셈이다. 클라우드는 보통 웹 콘솔로 처음 접하게 된다. CSP 에서 제공하는 웹사이트에 가입을 했다면 뭘 해야 할지 고민이 될 것이다. ...

May 15, 2022 · 4 min · 📁 AWS