source : GCP Qwiklabs

 

Google Cloud Shell 활성화하기

- Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신

- 5GB의 영구 홈 디렉토리를 제공하며 Google Cloud에서 실행

- Google Cloud Shell을 사용하면 명령줄을 통해 GCP 리소스에 액세스 가능

 

1. GCP Console의 오른쪽 상단 툴바에서 Cloud Shell 열기 버튼을 클릭

 

2. 계속(Continue) 클릭

- 연결되면 인증된 상태로 PROJECT_ID설정됨

- Google Cloud Platform의 명령줄 도구 gcloud는 Cloud Shell에 사전 설치되어 있으며 탭 자동 완성을 지원

사용 중인 계정 이름 목록 표시

gcloud auth list

 

출력:

Credentialed accounts: - <myaccount>@<mydomain>.com (active)

 

출력 예:

Credentialed accounts: - google1623327_student@qwiklabs.net

 

프로젝트 ID 목록을 표시

gcloud config list project

 

출력:

[core] project = <project_ID>

출력 예:

[core] project = qwiklabs-gcp-44776a13dea667a6

 

gcloud 관련 전체 설명서는 Google Cloud gcloud 개요에서 확인 가능

 

 

기본 컴퓨팅 영역 설정

- 컴퓨팅 영역 : 클러스터와 리소스가 존재하는 대략적인 지역적 위치. (예: us-central1-a는 us-central1 리전의 영역)

 

기본 컴퓨팅 영역을 us-central1-a로 설정

gcloud config set compute/zone us-central1-a

출력

Updated property [compute/zone].

 

 

Kubernetes Engine 클러스터 만들기

- 클러스터는 1개 이상의 클러스터 마스터 머신과 노드라는 다수의 작업자 머신으로 구성

- 노드란 클러스터를 구성하기 위해 필요한 Kubernetes 프로세스를 실행하는 Compute Engine VM(가상 머신) 인스턴스

 

클러스터 생성

※ [CLUSTER-NAME]을 내가 선택한 클러스터 이름으로 대체 (예: my-cluster)

※ 클러스터 이름은 문자로 시작하고 영숫자로 끝나야 하며 40자를 초과할 수 없음

gcloud container clusters create [CLUSTER-NAME]

 

출력 :

NAME LOCATION ... NODE_VERSION NUM_NODES STATUS my-cluster us-central1-a ... 1.13.11-gke.9 3 RUNNING

 

 

클러스터의 사용자 인증 정보 얻기

- 클러스터를 만든 후 클러스터와 interaction 하려면 사용자 인증 정보를 얻어야 함

 

클러스터 인증 

※ [CLUSTER-NAME]을 내 클러스터 이름으로 대체

gcloud container clusters get-credentials [CLUSTER-NAME]

출력 :

Fetching cluster endpoint and auth data. kubeconfig entry generated for my-cluster.

 

 

클러스터에 애플리케이션 배포하기

- 클러스터 생성 후, 컨테이너식 애플리케이션 배포 가능.

- Kubernetes Engine에서는 Kubernetes 객체를 사용해 클러스터의 리소스를 생성하고 관리

- 웹 서버와 같은 상태 비추적 애플리케이션을 배포할 때는 Kubernetes에서 배포 객체를 사용합

- 서비스 객체는 인터넷에서 애플리케이션에 액세스하기 위한 규칙과 부하 분산을 정의

 

Cloud Shell에서 다음 kubectl create 명령어를 실행하여 hello-app 컨테이너 이미지에서 새 배포 hello-server를 생성

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0

 

출력 :

deployment.apps/hello-server created

 

- --image는 배포할 컨테이너 이미지를 지정, 해당 명령어는 Google Container Registry 버킷에서 예시 이미지를 가져옴

- gcr.io/google-samples/hello-app:1.0은 가져올 특정 이미지 버전을 나타냄. 버전이 지정되지 않은 경우 최신 버전 사용

 

kubectl expose 명령어를 실행하여 Kubernetes 서비스를 생성

- 이 서비스는 애플리케이션을 외부 트래픽에 노출할 수 있게 해주는 Kubernetes 리소스입니다.

kubectl expose deployment hello-server --type=LoadBalancer --port 8080

 

  • --port를 통해 컨테이너가 노출될 포트 지정
  • type="LoadBalancer" : 컨테이너의 Compute Engine 부하 분산기 생성

 

출력 : 

service/hello-server exposed

 

 

kubectl get을 실행하여 hello-server 서비스 검사

kubectl get service

 

출력 :

외부 IP 주소가 생성되는 데는 1분 정도 소요. EXTERNAL-IP 열이 "대기중" 상태이면 위 명령어를 다시 실행

※ 이 명령어의 출력에서 EXTERNAL IP 열에 있는 서비스의 외부 IP 주소를 복사.

 

외부 IP 주소와 노출된 포트를 사용해 웹브라우저에서 애플리케이션을 확인

http://[EXTERNAL-IP]:8080

 

결과 확인

 

 

클러스터 삭제

gcloud container clusters delete [CLUSTER-NAME]

- 메시지가 표시되면 Y를 입력하여 확인

- 삭제된 Google Kubernetes Engine 클러스터에 관한 자세한 내용 참조 ☞ 문서

 

클러스터 삭제  |  Kubernetes Engine 문서  |  Google Cloud

이 페이지에서는 Google Kubernetes Engine 클러스터를 삭제하는 방법을 설명합니다. 개요 클러스터를 삭제하면 다음 리소스가 삭제됩니다. 마스터 리소스 클러스터의 모든 노드 인스턴스 이러한 인스턴스에서 실행 중인 모든 포드 클러스터 생성 시 GKE가 만든 모든 방화벽과 경로 호스트 hostPath 및 emptyDir 볼륨에 저장된 데이터 다음 리소스는 삭제되지 않습니다. 시작하기 전에 이 작업을 준비하려면 다음 단계를 완료하세요. Googl

cloud.google.com

 

 

펌 - 출처 : GCP qwiklabs

 

Cloud Shell 시작

GCP Console의 오른쪽 상단에 있는 아이콘을 클릭하여 Cloud Shell 세션 오픈

Cloud Shell을 시작

- Cloud Shell이 활성화되면 명령줄을 사용하여 Cloud SDK gcloud 명령어나 가상 머신 인스턴스에서 사용할 수 있는 다른 도구 호출 가능

- $HOME 디렉터리는 본인에게만 공개되며 다른 사용자는 액세스할 수 없음

 

리전 및 영역의 이해

- 리전(resion): 리소스를 실행할 수 있는 특정 지리적 위치

- 각 리전에는 하나 이상의 영역(zone) 有

- 예: us-central1 리전은 us-central1-a, us-central1-b, us-central1-c  us-central1-f 영역이 있는 미국 중부의 리전

- 영역별 리소스 : 영역 내에 상주하는 리소스

- 영구 디스크를 가상 머신 인스턴스에 연결하려면 두 리소스가 모두 같은 영역에 있어야 하며, 인스턴스에 정적 IP 주소를 할당하려는 경우 인스턴스가 정적 IP와 같은 리전에 있어야 함

- 참고 : 리전 및 영역 문서

- 기본 리전 & 영역 설정

google-compute-default-zone google-compute-default-region

기본 리전 및 영역 설정을 확인하려면  gcloud 명령어 실행

※ <your_project_id>부분에 본인의 프로젝트 ID 입력

gcloud compute project-info describe --project <your_project_ID>

 

응답에서 google-compute-default-region  google-compute-default-zone 키와 값이 누락되면 기본 영역이나 리전이 설정되지 않은 것

 

Cloud SDK 초기화

- gcloud CLI는 Google Cloud SDK에 포함

-시스템에 SDK를 다운로드하고 설치한 후 gcloud init을 실행하여 SDK를 초기화하면 gcloud 명령줄 도구 사용 가능

- gcloud CLI는 Cloud Shell에서 자동 제공

 

환경 변수 설정

프로젝트 ID 환경 변수 설정

export PROJECT_ID=<your_project_ID>

 

ZONE 환경 변수 설정

export ZONE=<your_zone>

 

변수 설정 확인

echo $PROJECT_ID
echo $ZONE

 

 

gcloud를 사용하여 가상 머신 만들기

- gcloud를 사용하여 새로운 가상 머신 인스턴스 생성

  • gcloud compute : Compute Engine API를 사용할 때보다 익숙한 형식으로 Google Compute Engine 리소스 관리 가능
  • instances create : 새 인스턴스 생성

가상머신 생성

  • 가상 머신의 이름 : 'gcelab2'
  • 머신 유형 : 'n1-standard-2' / --machine-type 플래그 사용
  • 영역 설정 : --zone 플래그 사용
gcloud compute instances create gcelab2 --machine-type n1-standard-2 --zone $ZONE

 

(결과)

※ --zone 플래그 생략시, gcloud가 기본 속성 기준으로 원하는 영역 설정. 머신 유형  이미지와 같은 기타 필수 인스턴스 설정은 create 명령어에 지정되지 않은 경우 기본값으로 설정됨.

 

create 명령어 : 도움말 표시

gcloud compute instances create --help

 

 

gcloud 명령어 사용

- gcloud 사용 시 gcloud 호출 명령어의 끝에 -h 플래그를 추가하면 사용 안내가 표기됨.

gcloud -h

 

더 상세한 도움말을 확인하려면 --help 플래그를 추가하거나 gcloud help 명령어를 실행

gcloud config --help

 

도움말 콘텐츠를 스크롤하려면 Enter 키나 스페이스바, 표시된 콘텐츠에서 나가려면 q 입력

gcloud help config

 

- 상세 도움말 표시 : gcloud config --help 또는 gcloud help config

gcloud 전역 플래그는 호출 레벨에 따른 명령어 동작 제어. 플래그는 SDK 속성에서 설정된 모든 값을 재정의

 

환경에서 구성 목록 확인

gcloud config list

 

다른 설정 속성 확인

gcloud config list --all

 

컴포넌트 리스트 확인

gcloud components list

 

 

 

자동 완성

- gcloud interactive는 명령어 및 플래그를 자동으로 추천, 명령어 입력 시 하단에 인라인 도움말 스니펫을 표시

- 드롭다운 메뉴 : 명령어/하위 명령어 이름과 같은 정적 정보와 플래그 이름 및 열거형 플래그 값을 자동 완성 가능

 

베타 구성요소 설치

gcloud components install beta

 

gcloud interactive 모드로 전환

gcloud beta interactive

 

- 대화형 모드를 사용하는 경우 Tab 키를 클릭하여 파일 경로 및 리소스 인수 입력

- 드롭다운 메뉴가 나타나면 Tab 키를 사용하여 목록을 이동하고 스페이스바를 사용하여 원하는 항목을 선택

gcloud compute instances describe <your_vm>

 

- Cloud Shell 하단에 이 기능을 설정하는 단축키가 표시됨. 여기에서 F2 토글 가능.

- F2:help:STATE를 통해 활성 도움말 섹션(ON: 사용, OFF: 사용 중지)을 전환

 

VM 인스턴스에 SSH 사용

- gcloud compute : 인스턴스에 연결

- gcloud compute ssh : SSH에 래퍼 기능을 제공하여 인증 및 인스턴스 이름과 IP 주소의 매핑을 처리

 

gcloud compute ssh를 사용하여 가상 머신에 SSH를 사용

gcloud compute ssh gcelab2 --zone $ZONE

 

(결과)

WARNING: The public SSH key file for gcloud does not exist. WARNING: The private SSH key file for gcloud does not exist. WARNING: You do not have an SSH key for gcloud. WARNING: [/usr/bin/ssh-keygen] will be executed to generate a key. This tool needs to create the directory [/home/gcpstaging306_student/.ssh] before being able to generate SSH Keys.

 

'Y' 입력

Do you want to continue? (Y/n)

암호 섹션에서는 암호 입력 후 Enter 키를 눌러 암호 설정 (그냥 Enter를 누르면 암호가 공백으로 설정됨)

Generating public/private rsa key pair. Enter passphrase (empty for no passphrase)

'exit'를 입력하면 원격 셸이 종료되어 SSH 연결 종료

exit

 

 

 

홈 디렉터리 사용

- Cloud Shell 홈 디렉터리의 콘텐츠는 가상 머신을 종료했다가 다시 시작해도 모든 Cloud Shell 세션의 프로젝트에서 유지됨

현재 작업 디렉터리 변경

cd $HOME

 

vi 텍스트 편집기를 사용하여 .bashrc 구성 파일 오픈

vi ./.bashrc

 

편집기가 열리면서 파일 콘텐츠가 표시됨. ESC 키를 누른 후 :wq를 입력하여 편집기를 종료.

 

Trading 이란?

트레이드는 개인이나 법인이 상품과 서비스를 사고파는, 혹은 돈을 교환하는 경제 기본 개념

- 사고파는 행위, 즉 거래가 가능한 장소를 시장(market)이라고 한다.

- 금융 시장(financial market)은 주식(Security), 채권(Bond), 코모디티(Commodity) 등의 매매를 의미한다.

 

Trade is a basic economic concept involving the buying and selling of goods and services from one person or entity to another, often in exchange for money
- A network that allows trade is called a market
- In financial markets, trading refers to the buying and selling of securities, bonds, commodities, and so on.

 

Commodity Trading (코모디티 트레이딩)

Commodity는 같은 유형의 다른 Commodity와 교환할 수 있는 상거래에 사용되는 기본으로, 원유, 구리, 옥수수 등 Commodity 별로 구분되지만, 각 Commodity는 비교적 균일한 품질을 가져야 한다. 규격이 예상 가능해야 거래가 가능하기 때문이며, 균일한 품질을 유지하기 위해 만든 거래소는 Commodity별로 규격을 정해놓았다.

- Commodity 트레이딩은 시간과 공간 규격 등의 변화를 최적화 함으로써 가치를 창출하는 행위를 의미한다.

- Commodity의 절대적인 가격보다는 상대적인 가격, 즉 differential이 더 중요한 고려 요소이다. 절대가격에 배팅을 하기도 하지만, 절대가격에 대한 배팅은 Risk가 매우 크기 때문에 제한적으로 행해질 수 밖에 없다.

- 석유 트레이딩은, 주로 원유와 석유 제품에 대한 트레이딩을 의미하며, Commodity 트레이딩 중 에너지 트레이딩의 한 부분이다.

 

A commodity is a basic good used in commerce that is interchangeable with other commodities of the same type; commodities are most often used as inputs in the production of other goods or servics. The quality of a given commodity may differ slightly, but it is essentially uniform across producers.

Commodity trading is, in essence, the process of transforming commodities in space, time, and form(specification).
- The creation value in commodity trading involves optimizaing these transformation.
- Typical commodity traders are primarily concerned with price differential rather than the absolute level of price.

 

Commodity Trading (source : freepik.com)

 

국가 부도의 날 Official Trailer

 

지금 당신은 IMF의 설립 목적을 크게 위반하고 있습니다.

그 어떤 국제기구라도 구제 금융을 이유로 한 나라의 경제적 자율성을 침해할 권리는 없습니다.

*

Unemployment becomes the norm... we must not choose that world.

실업이 일상이 되는 세상... 그런 세상으로 가서는 안됩니다.

*

위기는 반복돼요. 위기에 또 당하지 않기 위해선 잊지 말아야 해요.

끊임없이 의심하고 사고하는 것. 당연한 것을 당연하게 생각하지 않는 것. 그리고 항상 깨인 눈으로 세상을 바라볼 것.

 

 

<국가부도의 날, Default>

감독 : 최국희

출연 : 김혜수(한시현), 유아인(윤정학), 허준호(갑수) 등

2018

 

 

Meru Official Trailer

 

Conrad Anker

I'm offering encouragement. I'm like, "Yes, we can do this.", "This is good."

Yet, in the back of my mind, I knew that I might have to be... it might be, "Renan, you're just physically are not prepared to go back to Meru."

전 격려를 많이 했어요. "그래, 할 수 있어", "좋아"

하지만 마음 한 구석으로 이런 생각을 했어요.  "레넌, 신체적으로 넌 메루에 다시 갈 수 없을거야"

 

Jimmy Chin

After some time off and some serious contemplation... the idea of not skiing and not climbing and not being in the mountains was too much to imagine. I just wasn't ready to give it all up.

좀 쉬면서 여러가지 생각도 해 봤지만 스키도 안타고, 등반도 안하고 산에 안 간다는 생각은 상상조차 할 수 없었어요. 모든 걸 포기할 수 없었죠

 

Renan Ozturk

But for me, it was worth the risk. It was something that I had to do. It was worth possibly dying for.

하지만 위험을 무릅쓸 가치가 있었습니다. 이건 꼭 해야 할 일이고 설사 죽어도 후회는 없어요. 

 

Jimmy Chin

Renan had put his heart and mind into recovering. And the way that he had progressed was almost inhuman.

Conrad and I were gonna go back to Mery. But we still had to make a decision about Renan.

레넌은 재활에 모든 걸 쏟아 부었습니다. 그가 보여준 노력은 정말 초인적이었죠.

콘래드와 전 메루에 다시 가려고 했습니다. 하지만 레넌에 대해 결정을 해야만 했죠. 레넌은 가는 것에 대해 완강했습니다.

 

Grace Chin (Jimmy's sister)

He jst said, flat out, "If Renan feels he's ready, I trust Renan."

지미는 담담하게 말했어요. "레넌이 준비됐다면 난 그를 믿어"

 

Jon Krakauer (Author of 'Into Thin Air')

If you survive it, if your family comes out of it okay, if everyone comes out, then climbing is so worth it. The problem is, as we know, you don't always com out of it okay. People die. And then you can't justify it. That is the great dilemma.

등반의 보상은 엄청나죠. 만약 살아 돌아오고 가족들이 이상이 없고, 모두 이상이 없으면 등반은 아주 가치가 있습니다. 문제는 알다시피 항상 좋게 끝나지 않는다는 거죠. 사람이 죽는 걸 정당화할 순 없어요. 그게 큰 딜레마입니다.

 

 

<메루 Meru, 한계를 향한 열정>

감독 - 지미 친(Jimmy Chin), 엘리자베스 차이 베사헬리(Elizabeth Chai Vasarhelyi)

출연 - 지미 친(Jimmy Chin), 콘래드 앵커(Conrad Anker), 레넌 오즈터크(Renan Ozturk)

다큐멘터리, 2015

 

 

+ Recent posts