반응형 분류 전체보기3276 Helm (헬름) 설치하기 helm.sh/ko/docs/intro/install/ 헬름 설치하기 헬름 설치하고 작동하는 방법 배우기. helm.sh $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh 2020. 10. 14. Helm 차트 란? | NGINX를 사용한 Helm Kubernetes 데모 www.youtube.com/watch?v=j-YBgTnV2v0&list=WL&index=6&t=316s helm install x stable/wordpress ## Helm 설치하기 $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh ## helm search repo wordpress ## helm search repo nginx ## helm search hub nginx ## helm repo add bitnami https://charts.bitnami.com/bitnami ## helm search .. 2020. 10. 14. OWASP OWASP(Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안 프로젝트입니다. OWASP처럼 애플리케이션 보안에만 전념하는 여러 커뮤니티 그룹의 조직이 상당히 커지고 있습니다. OWASP는 가장 큰 오픈소스 웹 애플리케이션 보안 프로젝트로 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하며, 10대 웹 애플리케이션의 취약점(OWASP TOP 10)을 발표합니다. OWASP TOP 10은 웹 애플리케이션 취약점 중에서 빈도가 많이 발생하고, 보안상 영향을 크게 줄 수 있는 것들 10가지를 선정한 문서입니다. 아래는 2017년 발표한 10대 웹 애플리케이션 취약점입니다. OWASP TOP 10 1. Injection(인젝션) SQL.. 2020. 10. 5. 도커와 쿠버네티스 소개 2020. 10. 1. AWS CLI 설치 On CentOS7 AWS CLI 설치 On CentOS7 DevOps 2017. 7. 26. 19:38 Amazon Linux가 아닌 일반 머신에서는 반복적으로 AWS CLI를 설치하게되는데요, 그 과정을 단순히 정리해봅니다. RHEL계열은 아래과정과 대동소이하며, Debian계열의 Linux에서도 거의 비슷합니다. 우선 Python이 설치되어 있다고 가정합니다. 전체적인 과정 먼저 Python 패키지관리자인 PIP을 설치해줘야합니다. Python Packaging Authority에서 제공하는 스크립트를 사용하여 pip를 설치한 다음 AWS CLI를 설치합니다. wget이나 curl을 이용해서설치스크립을 다운로드. $> curl -O https://bootstrap.pypa.io/get-pip.py Python으로 다운.. 2020. 9. 28. Kubernetes NodePort vs LoadBalancer vs Ingress? 무엇을 사용해야합니까? medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0 2020. 9. 27. 쿠버네티스 클러스터 엔드포인트 엑세스 2020. 9. 27. 쿠버네티스 서비스 (Service) - 2 2020. 9. 27. 파드와 노드스케줄 (Pod & Node Schedule) 파드를 특정 노드에 지정할 수 있음. 쿠버네티스가 알아서 적절히 노드를 선택 자원 사용량이 없는 노드2에 pod-4 가 생성됨 2020. 9. 27. 파드와 서비스 연동 (Pod & Service) 2020. 9. 27. 쿠버네티스 서비스 (Service) ## 서비스 (Service) 쿠버네티스에서의 서비스는 파드에 접근할 수 있도록 정책을 정의하는 것이다. 서비스는 파드끼리 통신할 수 있도록 엔드포인트를 만들어 주고, 파드가 외부에 노출될수 있도록 한다. 그럼 앞에서 디플로이먼트를 설명하면서 생성한 nodejs-app 파드를 서비스를 사용하여 노출해보자. 서비스에 사용할 수 있는 많은 옵션과 다른 패턴들도 있지만, 여기서 핵심은 중요한 오브젝트의 정의 및 기능을 알아본다. ClusterIP : 서비스가 클러스터-내부 IP에 노출되도록 한다. 이 값을 선택하면 클러스터 내에서만 서비스에 도달할 수 있다. 이것은 ServiceTypes 의 기본 값이다. NodePort : 고정포트로 각 노드의 IP 에 서비스가 노출되도록 한다. NodePort 서비스가 라.. 2020. 9. 23. 쿠버네티스 디플로이먼트 (Deployment) ## 디플로이먼트 (Deployment) 디플로이먼트는 파드와 레플리카셋에 대한 선언과 업데이트를 제공하는 상위개념의 컨트롤러. 이전에 파드를 설명할때 살짝 설명한 컨트롤러이다. 서비스를 파드만 운영하면 복제가 불가능하다. 트래픽이 몰리는 상황이나 배포상황에서 안정적인 서비스를 유지하기 위해서 복제의 조절은 필수적이다. 디플로이먼트는 이러한 파드의 복제뿐만 아니라 여러 부분을 조절하도록 해준다. ------- nodejs.yaml 생성 ---------- apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-app labels: app: nodejs-app spec: replicas: 1 selector: matchLabels: app: nodejs-.. 2020. 9. 23. 쿠버네티스 파드 ## 파드 (Pod) 한 파드내의 컨테이너들은 포트를 중복해서 사용할 수 없다. (한 호스트라고 인식함) 파드는 쿠버네티스의 구성 요소중 가장 작은 단위의 객체이다. 파드는 해당 클러스터에서 러닝 프로세스를 나타낸다. 파드는 쿠버네티스에서 컨테이너와 같다고 보면 된다. 하지만 도커에서는 단일 컨테이너가 가장 작은 단위의 객체인 반면, 쿠버네티스에서는 파트 내에 여러 개의 컨테이너가 존재할 수 있다. 파드 안에 컨테이너들은 IP주소와 포트 공간을 공유하고, localhost를 통해 서로 찾을수 있다. ## 생명주기 다음 용어들은 파드의 상태를 나타낸다. Pending : 파드가 쿠버네티스 시스템에 의해 승인되었지만, 파드를 위한 하나 또는 하나 이상의 컨테이너 이미지 생성이 아직 완료되지 않은 상태이다. .. 2020. 9. 22. 쿠버네티스 네임스페이스 ##네임스페이스 (Namespace) 쿠버네티스에서 네임스페이스는 하나의 물리적인 공간에 있는 쿠버네티스를 다수의 팀이 사용할때 유용하다. 다수의 팀이 쿠버네티스를 운영한다면 각 팀이 사용하는 부분이 서로 영향을 미칠 수 있기 때문에 분리해서 작업을 할 수 있는 환경이 필요. 이럴때 네임스페이스가 작업되는 부분에 대해서 논리적으로 분리해 줄수 있다. 먼저 네임스페이즈 조회 ubuntu@ip-10-0-1-52:~/.kube$ kubectl get namespace : 만약에 네임스페이스에 대한 부분이 없다면 모든 작업은 default 네임스페이스에 할당된다. 다음과 같이 namespace.yaml 만든다. https://github.com/uphiller/dockerbook/blob/master/kuber.. 2020. 9. 22. 쿠버네티스 설치 ## 3.2 쿠버네티스 설치 https://kubernetes.io/ko/ Ubuntu18.04 실습 예제 소스 (https://github.com/uphiller/dockerbook/blob/master/kubernetes-setup.sh) sudo apt-get update sudo apt-get -y install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://down.. 2020. 9. 22. 도커 오케스트레이션 오케스트레이션을 활용하면 여러 개의 호스트를 단일 호스트처럼 사용 할 수 있다. 호스트의 변경사항에 유연하게 대처 할 수 있다. 오케스트레이션 사용시 장점 : 컨테이너 프로비저닝 및 배포 : 컨테이너의 중복성 및 가용성 : APP 로드를 균등하게 분산 : 한 호스트에서 다른 호스트로 컨테이너 이동 : 컨테이너 간 리소스 할당 : 내부 컨테이너에서 실행되는 서비스의 외부 노출 : 컨테이너 간 서비스 검색 로드 밸런싱 : 컨테이너 및 호스트의 상태 모니터링 : APP을 실행하는 컨테이너와 관련하여 APP 구성 오케스트레이션 제품 : 도커 스웜 : 쿠버네티스 : 랜처 : 메소스 2020. 9. 22. Docker-Compose (도커컴포즈) - 그럼 앞에서 만들었던 MySQL, SpringBoot 컨테이너를 docker-compose.yml 파일로 만들어 보자. version: '3.3' services: app1: image: springboot ports: - 8080:8080 container_name: app1 mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=1234 - TZ=Asia/Seoul container_name: mysql ports: - 3306:3306 https://docs.docker.com/compose/install/ 도커 명령문을 이용하여 docker-compose를 설치한다. sudo curl -L "https://github.com/docker/com.. 2020. 9. 22. 도커파일 (Dockerfile) --- Dockerfile 생성 --- FROM openjdk:8-jdk-alpine (openjdk8 버전을 사용) ADD docker/target/docker-0.0.1-SNAPSHOT.jar app.jar (컨테이너의 최상위/폴더 위치에 app.jar 파일이 복사 됨) ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","/app.jar"] 2020. 9. 22. 도커 네트워크 환경 ip addr show docker0 2020. 9. 21. 도커 명령어 ubuntu@ip-10-0-1-230:~$ docker build -t springboot . (Dockerfile 있는곳에서 실행 - 홈폴더) 생성된 도커 이미지를 바탕으로 도커 컨테이너 명령어를 실행. ubuntu@ip-10-0-1-230:~$ docker run --name app1 -d -p 80:8080 springboot ubuntu@ip-10-0-1-230:~$ docker start app1 Bridge 모드는 도커 네트워크의 Default 설정이며 가장 많이 사용하는 네트워크이다. ubuntu@ip-10-0-1-230:~$ ip addr show docker0 C:\Users\user>docker network inspect bridge ---- nginx-custom Dockerfile.. 2020. 9. 21. 도커 레지스트리 배포 프로세스 1. 이후 레지스트리를 사용하여 CI서버에서 새로운 소스의 도커 이미지를 빌드한 다음, 2. 레지스트리에 푸시하고, 3. 테스트 서버에서는 푸시된 최신의 이미지를 다운로드 받아서, 다시 컨테이너로 실행하면 도커 레지스트리를 이용한 배포 프로세스가 완성된다. 2020. 9. 21. /etc/group 사용자 그룹에 추가 다음 명령을 실행하면 일반 계정 유저도 도커 사용 가능 (/etc/group 에 사용자 추가) $ sudo usermod -aG docker $USER 2020. 9. 18. 쿠버네티스란? 쿠버네티스 서비스를 생성하고 로컬컴퓨터나 다른 인스턴스에서 쉘 명령을 실행해야만 코버네티스 오브젝트를 제어할수 있다. 쉘스크립트를 사용해야 하기때문에 인스턴스를 하나 만들어서 작업을 할 것이다. ekctl 명령어로 클러스터를 생성할 수도 있다. #cluster.yaml (파일 생성) apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: board-cluster region: ap-northeast-2 $ eksctl create cluster -f cluster.yaml 사실 쿠버네티스를 다루려면 도커보다는 좀 더 많은 기본 지식이 필요하다. 그중에서도 네트워크에 대해 많이 알아 두어야 한다. ## 쿠버네티스 아키텍처 도커가 컨테이너와 관.. 2020. 9. 16. AWS EKS - Create Kubernetes cluster on Amazon EKS | the easy way www.youtube.com/watch?v=p6xDCz00TxU eksctl create cluster \ --name my-cluster \ --version 1.17 --region ap-northeast-2 --nodegroup-name linux-nodes \ --node-type t2.micro \ --nodes 2 Nirmata EKS Manager - kubectl get nodes - kubectl get pod - kubectl get ns - eksctl delete cluster --name test-cluster 2020. 9. 16. 스프링부트 강좌 14강(블로그 프로젝트) - http요청 실습2 www.youtube.com/watch?v=Fd5Rhz0j8QQ&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=15&t=0s 어떻게 데이터를 보낼지 학습 우선 간단히 Member 클래스 생성 (아직 Database 생성은 안되었지만...) - 모델도 생성 - 자바에서는 변수는 Private 로 만든다. (이유는 객체지향에서는 변수에 다이렉트로 접근하게 하면 안됨) (변수의 상태는 메소드(함수) 에 의해서 변경되게 해야함) package com.cos.blog.test; public class Member { private int id; private String username; private String password; private String email; } 따.. 2020. 9. 12. AWS 기존 EC2 인스턴스에 스냅샷 복원하기 AWS EC2 인스턴스를 사용하다 보면 아래와 같은 상황이 발생할 수 있습니다. 복잡한 환경설정을 구성하다가 패키지가 꼬여버린 상황 명령어를 잘못 입력하여 시스템의 일부가 망가진 상황 현재 상황상 급하게 특정 시점의 서버 환경으로 되돌려야하는 상황 이외에도 개발을 진행하다 보면 다양한 상황이 발생할 수 있습니다. 기존의 온프레미스(On-Premise) 환경에서는 위와 같은 상황에 대처하기가 매우 힘들었습니다. 시간과 인력 및 비용이 굉장히 많이 드는 작업이었습니다. 하지만 클라우드 환경이 보급되면서 위와 같은 상황 대처를 할 수 있는 편리한 도구들을 제공하기 시작했습니다. AWS 플랫폼은 기존에 서버 개발자가 모두 수작업으로 해야 했던 많은 일들을 간편하게 제어할 수 있는 도구들을 제공하는 것입니다. 대.. 2020. 9. 11. 천만 사용자를 위한 AWS 클라우드 아키텍처 진화하기 ALB vs NLB CloudWatch를 활용한 모니터링 Amazon CloudFront CloutFront로 User Experience 개선 Amazon Aurora 읽기 복제본 오토스케일링 RDS 읽기 복제본 인스턴스로 DB부하 분산 Amazon ElastiCache ElastiCache 를 활용한 부하분산 및 성능향상 용도에 적합한 DB서비스 적용 주요 고려사항 - 재해복구(DR) / 멀티 리전 시스템 고려 - 멀티 리전 시스템 배포 CloudFromation 으로 인프라 리소스를 모델링 S3 교차 리전 복제 Route53 를 통한 멀티 리전 라우팅 - 사용자 위치에 기반한 지리위치 라우팅 구성으로 멀티 리전 부하분산 가능 사용자수 > 10,000,000 주요 고려사항 - 글로벌 시스템 확장 - .. 2020. 9. 11. 스프링부트 강좌 13강(블로그 프로젝트) - http요청 실습1 www.youtube.com/watch?v=BNiDNAWZn-E 1. STS 와 Postman 실행 2. com.cos.blog.test 패지지 밑에 HttpControllerTest 클래스 생성 3. HttpControllerTest 클래스 수정 // 사용자 요청 -> 응답 (HTML) // @Controller // 사용자가 요청 -> 응답(Data) 시 사용 : 이번 실습 @RestController - 함수 4개 생성 1) public String getTest() { retuen "get 요청"; // String 함수 생성으로 리턴도 문자열 반환 } 2) postTest() 3) putTest() 4) deleteTest() - 각 함수에 어노테이션 생성 ^^^^^^^^^^^^^^^^^^^^^.. 2020. 9. 9. 스프링부트 강좌 12강(블로그 프로젝트) - MIME타입이란 www.youtube.com/watch?v=NVjnu4xBdpw - HTTP 헤더와 HTTP 바디의 기본 개념 : 헤더 - Data 설명 : 바디 - 실제 Data HTTP 통신 - 패킷 스위칭 : 회선 공유 : 모든 패킷에는 헤더에 정보값이 있다. (조립을 하기 위해) - 서킷 스위칭 : 속도 빠름, 회선 비용 증가 MINE 타입 (developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types) - 데이터를 보낼때 정하는 방식 - 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘. : 웹에서 파일의 확장자는 별 의미가 없다. : 그러므로 각 문서와 함께 올바른 MIME 타입을 전송하도록, 서버가 정확히 설정하는 것이 중요. - JSON 파.. 2020. 9. 9. 스프링부트 강좌 11강(블로그 프로젝트) - stateless란 www.youtube.com/watch?v=fLpmG5tIg1c 요약 : stateless방식은 한번의 요청과 응답이 이루어지면 클라이언트와 서버와의 연결선이 끊어지는 것을 말한다. 이 방식은 주로 http에 사용되는 방식이며 이는 서버의 부하를 줄여준다. - JAVA 는 소켓통신 : Stateful 방식 - 연결 지속 (HTTP 방식은 이 방식을 사용하지 않음) : 세션 (인증) - 데이터를 응답해줄 준비가 됨 - HTTP 방식 (Stateless 방식) : 요청과 응답이 이루어지고 난후 곧바로 끊어버림 : 요청시마다 스트림을 연결해서 Data를 주고 받는 방식 : 서버 부하 적음 : 요청/응답/끊기 : 세션(인증) 유지 방법 없음 : Stateless 환경에서 어떻게 세션을 유지하는지 배운다. (스프.. 2020. 9. 9. 이전 1 ··· 104 105 106 107 108 109 110 다음 반응형