[Kubernetes] 쿠버네티스 오브젝트 [ServiceAccount]
·
Infra/Kubernetes
ServiceAccount ServiceAccount는 RBAC(Role Base Acccess Control)을 기반으로 사용자 또는 애플리케이션에게 특정 명령을 실행할 수 있는 권한을 부여해주는 오브젝트이다. ServiceAccount는 무엇을 해주나 위에 써놓았듯이 ServiceAccount는 RBAC이므로, AWS의 IAM 방식과 상당히 비슷하다. https://imsongkk.tistory.com/73 [AWS] IAM과 Role, Policy IAM 항상 나는 AWS에 로그인할 때 루트 유저로 로그인했었다. 책이나 다른 실습 강의에서는 항상 루트 사용자로 로그인했었기에, 그냥 그런가보다 하고 넘겼었다. 하지만 AWS에 점점 익숙해지면서, imsongkk.tistory.com 해당 포스트에서 들..
[AWS] IAM과 Role, Policy
·
Infra/AWS
IAM 항상 나는 AWS에 로그인할 때 루트 유저로 로그인했었다. 책이나 다른 실습 강의에서는 항상 루트 사용자로 로그인했었기에, 그냥 그런가보다 하고 넘겼었다. 하지만 AWS에 점점 익숙해지면서, 그리고 로그인을 하면서 밑에 있는 IAM 사용자 로그인은 무엇일까? 라는 궁금증이 자연스레 생기게 되었다. AWS 계정은 모두 고유한 12자리의 ID값을 갖는다. AWS의 공식 가이드에 따르면, 서비스의 성숙도와 상관없이 루트 사용자를 사용하는것을 권장하지 않는다. 위의 메뉴에서 보안 자격 증명탭을 누르면 자연스럽게 IAM 페이지가 나오는데, 사용자 탭이 있는걸 볼 수 있다. IAM의 구성요소 IAM의 구성요소로는 크게 4가지가 있다. Group : 사용자 그룹을 나타낸다. 사용자 그룹마다 Policy를 설정..
[Kubernetes] 쿠버네티스 오브젝트 [ConfigMap, Secret]
·
Infra/Kubernetes
ConfigMap ConfigMap은 네임스페이스에 종속되며 쿠버네티스 클러스터에서 동작할 애플리케이션들의 설정 정보들을 관리해주는 오브젝트이다. 애플리케이션들은 각자 환경변수, 태그들을 가질 수 있는데 ConfigMap을 이용하면 애플리케이션단이 아닌 쿠버네티스 단에서 이러한 값들을 관리할 수 있다. Configmap은 무엇을 해주나 예를 들어보자. Spring Boot 애플리케이션을 개발하다보면 application.yaml에 property를 정의하게 된다. 이때의 property는 하드 코딩 방식으로 작성할수도 있지만 보통은 유연성을 위해 외부 주입형식으로 바꾸게 된다. spring: data: mongodb: uri: mongodb://${DB_HOST} 해당 property가 포함된 jar파일..
[소마] 프로젝트 시작
·
소마
소마 프로젝트 소마는 3명이서 한 팀이 되어 한해동안 프로젝트를 진행한다. 팀 별로 720만원의 지원금이 산정되어 프로젝트 개발에 필요한 클라우드 사용, 디자인 외주, 기자재 구입 등을 해결할 수 있다. 내가 현재 연수중인 14기는 250여명의 연수생들이 선발되어 약 80개의 팀이 만들어졌다. 팀 결성 팀은 자율적으로 정하는 시스템이며, 각자 자기소개를 작성해 놓고 서로 연락하는 시스템이다. 다른 연수생들이 작성해놓은 자기소개 양식을 참고했고, 많이 읽어보았다. 또한 최대한 많은 연수생들과 대면/비대면으로 얘기를 나눠보며 팀을 결성했다. 팀원을 구할 때 중점을 두었던건 기술적 성장을 같이 이루고 싶은 사람 대면으로 주에 1회 이상은 만날 수 있는 사람 공통된 관심사를 가지는 사람 학기 병행도 이해해줄 수..
[소마] 소프트웨어 마에스트로 14기 합격 후기
·
소마
소프트웨어 마에스트로 소마를 지원해야겠다고 마음 먹은건 군 복무 시절이었다. 언제나 심심하고 시간도 잘 안가는 병장 때, 전역하고 복학하면 뭐 하지라는 생각을 계속 하곤 했다. 보직 특성상 컴퓨터를 전공하는 인원들이 많았는데, 그 때 후임중 한명이 자기가 소마를 수료했는데 괜찮다고 나에게 추천해주었다. 한달에 100만원씩 주고, 노트북도 사주고 마음껏 프로젝트 개발을 할 수 있다고 한다! 하지만 서류 -> 1차 코테 -> 2차 코테 -> 면접으로 이어지는 웬만한 기업 채용 프로세스보다 빡센 과정이 기다리고있었다. 지원 당시 나는 2학년 1학기를 마친 아무것도 모르는 학부생이었다. 그나마 그동안 알고리즘을 조금조금씩 공부했어서 코테는 쉽게 뚫을거라고 생각했었다. 하지만 지원서를 쓰면서 느낀 점은 내가 프..
[Terraform] Terraform 시작하기
·
Infra/Terraform
Terraform 처음 Terraform 단어를 접했을 때 머리속에 테라포마스 애니가 떠올랐다. 당연히 이런건 아니고 테라폼은 Hashicorp사에서 개발한 오픈소스로, Go 언어로 개발된 IaC(Infrastructure as Code) 도구이다. IaC 인프라를 코드로, 라는 뜻인데 과연 이게 무슨 말일까? 나는 여태까지 AWS나 GCP 리소스를 만들 때 콘솔을 이용했었다. 만들면서 느꼈던 점은 클릭 버튼과 타이핑이 좀 귀찮다라는 것이었다. EC2를 한번만 만든것은 아니었기에, 반복적인 작업을 하다보면 중복되는 부분이 확실히 보였었다. 다시 생각해보면 콘솔말고 AWS에서 제공하는 CLI를 사용할수도 있을 것 같다. https://docs.aws.amazon.com/ko_kr/efs/latest/ug/..
[AWS] VPC, Subnet 정리
·
Infra/AWS
클라우드 컴퓨팅과 네트워크 네트워크쪽 지식은 개발자에게 필수적이다. 우리는 대 인터넷 시대에 살고있으니 말이다. 애플리케이션의 규모가 커짐에 따라 클라우드 컴퓨팅의 중요도도 올라가고 있다. 3학년때 컴퓨터 네트워크라는 수업을 들으면서 기본적으로 지식을 익혔으나, 많이 까먹기도 했고 AWS 리소스들을 만들면서 헷갈리는 부분이 많아 정리하고자 한다. VPC, Subnet 어디까지 알고있니? AWS를 사용하면서 EC2, RDS, S3 등등 여러 리소스들을 생성했었지만 VPC와 Subnet은 따로 설정했었던 기억이 없다. EC2 화면에서 항상 퍼블릭 IPv4 주소만 다뤘었고 프라이빗 IP, VPC, 서브넷등은 그런게 있나보다~ 라고 넘겼었다. 알고보니 그동안은 AWS에서 기본으로 제공하는 VPC와 Subnet을..
[Kubernetes] 쿠버네티스 오브젝트 [Namespace]
·
Infra/Kubernetes
Namespace Namespace는 쿠버네티스 클러스터를 보다 효율적으로 관리할 수 있는 오브젝트이다. 네임스페이스를 이용하면 용도에 따라 파드, 레플리카셋, 서비스등을 논리적으로 구분할 수 있다. Namespace는 무엇을 해주나 보통 쿠버네티스 클러스터를 한명이 맡아서 관리하는 경우는 없다. 백엔드 팀과, 인프라 팀, 조직별로 다른 클러스터를 사용할 수도 있지만 같은 클러스터를 사용할 수도 있다. 네임스페이스는 이럴때 조직별로 각자의 논리적인 가상 공간을 제공해 마치 여러 개의 가상 클러스터를 사용하는 느낌을 줄 수 있다. 또한, prod환경 이외에 dev, staging, test, monitoring 환경등 여러 환경별로 리소스를 정의할 수 있게 해준다. Namespace 종류 kubectl 명..
[Kubernetes] 쿠버네티스 오브젝트 [Service]
·
Infra/Kubernetes
Service 이전까지 컨테이너를 구성하는 오브젝트들을 살펴봤다면 이 포스트에서는 생성한 파드를 외부에 노출시킬 수 있는 오브젝트를 다룬다. 외부에 노출이라 하면 파드 외부, 노드 외부, 클러스터 외부 등을 생각할 수 있는데 자세히 살펴보자. Service는 무엇을 해주나 파드를 생성할 때로 돌아가보자. apiVersion: v1 kind: Pod metadata: name: my-nginx-pod spec: containers: - name: my-nginx-container image: nginx ports: - containerPort: 80 protocol: TCP nginx 컨테이너 1개를 가지는 파드이다. nginx 컨테이너는 80포트를 사용하므로, containerPort를 80으로 설정해 ..
[Kubernetes] 쿠버네티스 오브젝트 [Deployment]
·
Infra/Kubernetes
Deployment 이전 포스팅에서는 ReplicaSet에 대해 알아보았다. ReplicaSet만 있어도 애플리케이션을 배포할 수 있지만, Deployment는 좀 더 많은 기능을 제공한다. Deployment는 Pod + ReplicaSet의 조합이라고 이해하면 된다. 보통 Pod를 배포할 때 Deployment를 사용해서 배포한다. 그리고 대체로 MSA 환경에서 하나의 서비스를 Deployment라고 생각하면 된다. Deployment는 무엇을 해주나 그래서 Deployment는 우리를 위해 무엇을 해줄까? 이름에서 알 수 있듯이 애플리케이션의 업데이트와 배포를 좀 더 용이하게 해준다. 애플리케이션을 운영하다보면 업데이트는 필수이다. 버그 발견, 기능 추가, 삭제등등 하루에 몇번이고 업데이트가 일어날..