728x90 분류 전체보기502 [Spring Cloud 를 활용한 MSA 기초] 5. Client LoadBalancer - Ribbon 5. Client LoadBalancer - Ribbon youtu.be/K4laj5cDYLg Server Side LoadBalancer 일반적인 L4 Switch 기반의 Load Balancing Client 는 L4 의 주소만 알고 있음 L4 Switch 는 Server 의 목록을 알고 있음(Server Side Load Balancing) H/W Server Side Load Balancer 단점 (장점도 있지만..) H/W 가 필요 (비용 up, 유연성 down) 서버 목록의 추가를 위해서는 설정 필요 (자동화 어려움) Load Balancing Schema 이 한정적 (Round Robbin, Sticky) 12 factors 의 dev/prod 를 만족하기 어려움 Client LoadBala.. SpringCloud 2021. 2. 7. [Spring Cloud 를 활용한 MSA 기초] 4. Circuit Breaker - Hystrix 4. Circuit Breaker - Hystrix youtu.be/iHHuYGdG_Yk Netflix OSS 50 개 이상의 사내 프로젝트를 오픈소스로 공개 플랫폼(AWS) 안의 여러 컴포넌트와 자동화 도구를 사용하면서 파악한 패턴과 해결방법을 블로그, 오픈소스로 공개 출처: https://netflixtechblog.com/netflixoss-season-2-episode-1-b477d8879799 Spring Cloud Spring Cloud 란 교집합이 spring-cloud-netflix 모놀리틱에서의 의존성 호출 모놀리틱에서의 의존성 호출은 100% 신뢰 https://netflixtechblog.com/keystone-real-time-stream-processing-platform-a3ee.. SpringCloud 2021. 2. 7. [Spring Cloud 를 활용한 MSA 기초] 3. Cloud Native 이해 3. Cloud Native 이해 youtu.be/NQcOwOI7nl0 Cloud Native 란 '클라우드 네이티브'의 핵심은 애플리케이션을 어떻게 만들고 배포하는지에 있으며 위치는 중요하지 않다 클라우드 서비스를 활용한다는 것은 컨테이너와 같이 민첩하고 확장 가능한 구성 요소를 사용해서 재사용 가능한 개별적인 기능을 제공하는 것을 의미한다 이러한 기능은 멀티 클라우드와 같은 여러 기술 경계 간에 매끄럽게 통합되므로 제공 팀이 반복 가능한 자동화와 오케스트레이션을 사용해서 빠르게 작업 과정을 반복할 수 있다 앤디 맨, Chief Technology Advocate at Splunk 신축성(Resiliency) 민첩성(Agility) 확장 가능성(Scalable) 자동화(Automation) 무상태(St.. SpringCloud 2021. 2. 7. [Spring Cloud 를 활용한 MSA 기초] 2. 마이크로서비스 아키텍처(MSA) 이해 2. 마이크로서비스 아키텍처(MSA) 이해 youtu.be/mJMzV6GCmPw MSA란, 시스템을 여러개의 독립된 서비스로 나눠서, 이 서비스를 조합함으로서 기능을 제공하는 아키텍쳐 디자인 패턴 조대협 출처: https://www.slideshare.net/Byungwook/micro-service-architecture-52233912 아마존의 선택(2002년경 제프 베조스 메일) 모든 팀들은 데이터와 기능들을 서비스 인터페이스로 연결시켜라 팀들은 이 인터페이스를 통해서만 연락해야 한다 다른 어떤 커뮤니케이션 방법도 허용되지 않는다 직접 링크를 보내거나 다른 팀의 스토리지에 직접 억세 스 해서도 안 되며, 공유 메모리나 백도어 같은 것도 안 된다 모든 커뮤니케이션은 네트워크를 통한 서비스 인터페이스로.. SpringCloud 2021. 2. 7. [Spring Cloud 를 활용한 MSA 기초] 1. 모놀리틱 아키텍처 이해 1. 모놀리틱 아키텍처 이해 youtu.be/D6drzNZWs-Y 10년 전으로 거슬러 올라가 보겠습니다 Amazon Web Services 가 없던 시절 E-commerce 스타트업 시작 이름 : 12번가 업종 : 오픈마켓 개발자 3명 개발자가 개발한 코드는 Tomcat(WAS) 에 의해 실행되고 프로그램의 상태(State) 는 데이터베이스에 저장 개발자가 여러명이 되면 코드를 SCM(Source Code Management) 으로 관리 DB 는 공유해서 사용 최초 상용 배포 톰캣 1대, DB 1대 구입 SCP 를 통해 Clean 배포(stop -> delivery -> start) DNS(12st.com) -> Tomcat 서버 1대 추가 구입 HA(High Avaliability) 구성 - 지속적으.. SpringCloud 2021. 2. 7. [데브옵스를 위한 쿠버네티스 마스터] 프라이빗 클라우드를 위한 인그레스 Ingress-Nginx 구현하기 로컬 쿠버네티스에 ingress-nginx 사용방법 1. ingress-nginx 개요 인그레스를 사용하면 L7의 웹 요청을 해석해서 단일 IP, 단일 포트로 다수의 도메인과 서비스로 연결할 수 있음 이 방법을 사용하면 웹페이지의 도메인은 같지만 다른 앱을 사용하는 것도 가능하게 한다 하지만 쿠버네티스에서 기본적으로 지원하는 인그레스 오브젝트는 클라우드 환경이 아니면 사용할 수 없다 클라우드에서 인그레스를 생성하면 외부에 게이트웨이를 생성하고 각 기능에 맞게 서비스에 연결한다 GCP의 경우에는 외부 게이트웨이에 L7 규칙이 적용돼 있다 이 포스트에 있는 nginx-ingress를 사용해보기 전에 GCP에서 제공하는 ingress를 한번 써보시길 권장한다 HTTP(S) 부하 분산용 GKE 인그레스 http.. 개발강의정리/DevOps 2021. 1. 22. [데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 환경에서 예제를 활용한 애플리케이션 개발 쿠버네티스 환경에서 WordPress + Mysql 프로젝트 개발 Kubernetes Examples Git https://github.com/kubernetes/examples https://github.com/kubernetes/examples/tree/master/mysql-wordpress-pd 시스템 구축 방법을 YAML로 정리하고 배포하시오 Wordpress MySql 쿠버네티스 배포 실습 GCP 에서 실습 kustomization.yaml 생성하기 https://kubernetes.io/ko/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/#kustomization-yaml-%EC%83%9D%EC%84%B1%ED%9.. 개발강의정리/DevOps 2021. 1. 22. [데브옵스를 위한 쿠버네티스 마스터] 클러스터 유지와 보안, 트러블슈팅 - 클러스터, 애플리케이션 트러블 슈팅 가이드 클러스터, 애플리케이션 트러블 슈팅 가이드 트러블은 언제나 발생 트러블은 매번 이슈가 됨 쿠버네티스도 예외는 아니며 시스템이 단순하지 않기 때문에 더 철저한 점검 방법이 필요 트러블 슈팅의 기본은 최소단위로 테스트하기! 크게 두 가지로 클러스터, 애플리케이션 트러블이 발생 가능 애플리케이션 트러블 슈팅 애플리케이션에서 트러블이 발생하는 경우에는 해결 방법이 비교적 단순 각각의 포드, 컨피그맵 등의 로직에서 무엇이 잘못됐는지 확인 일반적으로 이름이나 레이블링이 다른 데서 발생 클러스터 트러블 슈팅 클러스터에서 발생하는 트러블 슈팅의 경우는 쿠버네티스 시스템에 대한 깊은 이해를 요구 일반적으로 다수에서 발생하기 보다는 한 두 군데의 장애가 존재 Kubectl이 접속되지 않을 때는 serverapi 자체의 문.. 개발강의정리/DevOps 2021. 1. 22. [데브옵스를 위한 쿠버네티스 마스터] 클러스터 유지와 보안, 트러블슈팅 - 네트워크 정책 적용 네트워크 정책 적용 네트워크 정책(Network Policy) CNI 플러그인 Clico, Weavenet 을 설치해야지 사용가능 포드 그룹이 서로 및 다른 네트워크 끝점과 통신하는 방법을 지정 NetworkPolicy 리소스는 레이블을 사용하여 포드를 선택 선택한 포드에 허용되는 트래픽을 지정하는 규칙을 정의 특정 포드를 선택하는 네임 스페이스에 NetworkPolicy가 있으면 해당 포드는 NetworkPolicy에서 허용하지 않는 연결을 거부 이그레스 https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource 선택된 포드에서 나가는 트래픽에 대한 정책 설정 ipBlock을 통해 Bloc.. 개발강의정리/DevOps 2021. 1. 22. [데브옵스를 위한 쿠버네티스 마스터] 클러스터 유지와 보안, 트러블슈팅 - 시큐리티 콘텍스트 시큐리티 콘텍스트 보안 컨텍스트 서버 침해사고 발생 시 침해사고를 당한 권한을 최대한 축소하여 그 사고에 대한 확대를 방지 침해사고를 당한 서비스가 모든 권한(root나 노드 커널 기능)으로 동작하는 경우 서비스를 탈취한 공격자는 그대로 컨테이너의 권한을 사용할 수 있음 최소 권한 정책에 따른 취약점 감소 보안 컨텍스트 설정에는 다음 사항을 포함 권한 상승 가능 여부 프로세스 기본 UID/GID를 활용한 파일 등의 오브젝트의 액세스 제어 Linux Capabilities를 활용한 커널 기능 추가 오브젝트에 보안 레이블을 지정하는 SELinux (Security Enhanced Linux) 기능 AppArmor : 프로그램 프로필을 사용하여 개별 프로그램의 기능 제한 Seccomp : 프로세스의 시스템 호.. 개발강의정리/DevOps 2021. 1. 22. [데브옵스를 위한 쿠버네티스 마스터] 클러스터 유지와 보안, 트러블슈팅 - RBAC를 활용한 롤 기반 엑세스 컨트롤 RBAC를 활용한 롤 기반 엑세스 컨트롤 역할 기반 액세스 제어 (RBAC) 기업 내에서 개별 사용자의 역할을 기반으로 컴퓨터, 네트워크 리소스에 대한 액세스를 제어 rbac.authorization.k8s.ioAPI를 사용하여 정의 권한 결정을 내리고 관리자가 Kubernetes API를 통해 정책을 동적으로 구성 RBAC를 사용하여 룰을 정의하려면 apiserver에 --authorization-mode=RBAC 옵션이 필요 rbac.authorization.k8s.ioAPI RBAC를 다루는 이 API는 총 4가지의 리소스를 컨트롤 Role 네임스페이스에 종속되는 제한된 특정 사용자 권한 RoleBinding ClusterRole 네임스페이스에 제약이 없는 관리자 권한 ClusterRoleBindi.. 개발강의정리/DevOps 2021. 1. 22. [데브옵스를 위한 쿠버네티스 마스터] 클러스터 유지와 보안, 트러블슈팅 - kube config 파일을 사용한 인증 kube config 파일을 사용한 인증 직접 curl을 사용하여 요청 key와 cert, cacert 키를 가지고 직접 요청 가능 그러나 매번 이 요청을 사용하기에는 무리가 있음 $ curl https://kube-api-server:6443/api/v1/pods\ --key user.key \ --cert user.crt \ --cacert ca.crt \ kubectl config 명령 확인 set-credentials: 로그인 관련 정보 등록 set-cluster: 클러스트를 추가로 등록 set-context: 만든 credentials 와 cluster 를 조합해서 어떤 서버에 어떤 아이디를 가지고 조회를 할 건지 정함 $ kubectl config Modify kubeconfig files u.. 개발강의정리/DevOps 2021. 1. 20. 이전 1 ··· 5 6 7 8 9 10 11 ··· 42 다음 💲 추천 글 728x90