반응형

Tasks

Check that there is a Cloud SQL instance
Check that there is a user database on the Cloud SQL instance
Check that the blog instance is authorized to access Cloud SQL
Check that wp-config.php points to the Cloud SQL instance
Check that the blog still responds to requests

 

1. Create Cloud SQL

 

2. MySql dump 를 export 한다.


참고 )
https://cloud.google.com/solutions/migrating-mysql-to-cloudsql-concept
https://cloud.google.com/sql/docs/mysql/import-export/creating-sqldump-csv#std

 

- 실행 명령어

mysqldump --databases [DATABASE_NAME] -h [INSTANCE_IP] -u [USERNAME] -p \
--hex-blob --skip-triggers --single-transaction --set-gtid-purged=OFF \
--ignore-table [VIEW_NAME1] [...] --default-character-set=utf8mb4 > [SQL_FILE].sql

 

- 조건 

The existing database for the blog is provided by MySQL running on the same server. 
The existing MySQL database is called wordpress and the user called blogadmin with password Password1*, which provides full access to that database.

 

- 실행

위 조건에 맞춰서 다음과 같이 실행을 한다. password 는 위 조건에서 처럼 Password1* 를 넣어주면 된다.

 

3. Cloud Bucket 생성 및 dump 를 gcs 로 복사한다.

 

export PROJECT_ID=$(gcloud info --format='value(config.project)')
gsutil mb gs://$PROJECT_ID
gsutil cp wordpress.sql gs://$PROJECT_ID

 

4. SQL 로 import 한다.

 

참고)

https://cloud.google.com/sql/docs/mysql/import-export/importing

 

명령어를 사용해도 되고 아래와 같이 화면에서 간단히 import 하면 더 편하다.

5. User 추가

 

SQL > Users 탭에서 Create user account 를 클릭한다.

blogadmin 계정을 만들어 준다.

다 된줄 알았는데 아래와 같이 에러가 나온다. ㅡㅡ;

SQL>Connections 탭을 가보면 아래 화면과 같이 Network 설정을 할 수 있다.

Network 설정을 해줘야 하는데 위와같은 range 를 만족해야 한다.

아래 사이트를 가면 쉽게 CIDR range 를 구할 수 있다.

https://www.ipaddressguide.com/cidr

 

CIDR to IPv4 Address Range Utility Tool | IPAddressGuide

Free IP address tool to translate IPv4 address range into CIDR (Classless Inter-Domain Routing) format and vice-versa.

www.ipaddressguide.com

6. wp-config.php 파일을 Cloud SQL Instance 를 사용하도록 수정해준다.

 

wp-config.php 파일에 아래 localhost 를 수정해 하고 주석을 해제 한다. (위치는 /var/www/html/wordpress)

** MySQL hostname

*/ define('DB_HOST', 'localhost');

 

 

7. 이제 재기동 한다. 

sudo service apache2 restart

 

728x90
반응형
반응형

Tasks

Check that there is a tagged image in gcr.io for echo-app:v2
Echo-app:v2 is running on the Kubernetes cluster
The Kubernetes cluster deployment reports 2 replicas.
The application must respond to web requests with V2.0.0

 

1. 파일 압축 풀기 및 Docker Build

 

- 압축 풀기

tar -xvzf resources-ehco-web-v2.tar.gz

- PROJECT_ID 환경변수 등록

export PROJECT_ID=$(gcloud info --format='value(config.project)')

- Image 를 Google Container Registry 에 push

 

2. Version 수정

- echo-web-deployment.yml 파일 수정

아래에 있는 1.0 을  v2 로 변경한다.

- Image push

docker push gcr.io/${PROJECT_ID}/echo-web:v2

그리고 나서 화면에서 Action 에 있는 Rolling update 를 클릭한다.

Rolling Update 에서 image 는 조금전에 push 한 v2 이미지를 사용한다. 그리고 Update 클릭

 

- Scale 변경

Action  메뉴에서 Scale 을 클릭한후 Replicas 값을 2 로 입력한다.

완료가 되면 위에 보이는 Replicas 정보가 아래와 같이 변경된다.

 

Deployment Details 화면에 있는 yaml 탭에 가서 파일 내용을 살펴보면 spec.replicas 가 2 로 변경 되어 있는것을 볼 수 있다.

 

728x90
반응형
반응형

Qwiklab 에 있는 코스중 하나인 Challenge: GCP ArchitectureConfigure a Firewall and a Startup Script with Deployment Manager 를 진행했다. 

 

그렇게 어렵지 않았는데 결과적으로 채점시스템의 오류로 인해서 거의 3시간의 시간을 투자했다.

처음에 하다가 오류를 못찾아서 타임오버나고, 두번째에도 동일한 곳에서 진행이 안되서 끙끙대다가 서비스데스크에 문의한 결과 채점시스템의 오류였다. (내시간... ㅠㅠ)

 

Task 목록은 아래와 같다. 

  • A new Deployment Manager deployment has been created
  • The deployment includes a virtual machine that has an embedded startup-script 
  • The virtual machine that has a startup-script also has a tag item called http
  • A firewall rule exists that allows port 80 (http) traffic and is applied using a tag with a value of http 
  • The virtual machine responds to web requests using the Apache web server
  • Check that Deployment manager includes startup script and firewall resources

1. Cloud Shell 에 project 를 설정한다. 

gcloud config set project [PROJECT_ID]

 

2. qwiklabs.yaml 파일 수정

 

- startup-script 추가

    metadata:
      items:
      - key: startup-script
        value: |
            #!/bin/bash
            sudo su -
            apt-get update
            apt-get install -y apache2
            cat <<EOF > /var/www/html/index.html
            <html><h1>Hello World</h1></html>
            EOF   

 

- tag 추가

    tags:
      items: ["http"]

 

- 방화벽에 tag 추가

- type: compute.v1.firewall
  name: default-allow-http
  properties:
    targetTags: ["http"]
    allowed:
    - IPProtocol: tcp
      ports: ["80"]
    sourceRanges: ["0.0.0.0/0"]

- 추가수정

instance 이름을 꼭 lab-monitor 라고 해야 한다.

그렇지 않으면 위 Task 중 아래 Task 를 완료할 수 없다. ㅡㅡ;

  • The virtual machine responds to web requests using the Apache web server

- 최종본

resources:
- type: compute.v1.instance
  name: lab-monitor
  properties:
    zone: {{ properties["zone"] }}
    machineType: https://www.googleapis.com/compute/v1/projects/{{ env["project"] }}/zones/{{ properties["zone"] }}/machineTypes/f1-micro
    # For examples on how to use startup scripts on an instance, see:
    #   https://cloud.google.com/compute/docs/startupscript
    tags:
      items: ["http"]
    metadata:
      items:
      - key: startup-script
        value: |
            #!/bin/bash
            sudo su -
            apt-get update
            apt-get install -y apache2
            cat <<EOF > /var/www/html/index.html
            <html><h1>Hello World</h1></html>
            EOF      
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        diskName: disk-{{ env["deployment"] }}
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9
    networkInterfaces:
    - network: https://www.googleapis.com/compute/v1/projects/{{ env["project"] }}/global/networks/default
      # Access Config required to give the instance a public IP address
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT
- type: compute.v1.firewall
  name: default-allow-http
  properties:
    targetTags: ["http"]
    allowed:
    - IPProtocol: tcp
      ports: ["80"]
    sourceRanges: ["0.0.0.0/0"]

3. deployment 생성

gcloud deployment-manager deployments create myvm --config=qwiklabs.yaml

 

728x90
반응형
반응형


한달 전에 Google Cloud Study Jams 을 진행하는 그룹장을 모집한다는 내용을 보게 되었다. 스터디원도 아니고 그룹장을 모집한다라니. 몇번을 할까말까 고민을 하다가 지원을 하게 되었다. 


Google Cloud Study Jams 을 통해서 그룹장 및 그룹원들은 Qwiklabs 에서 제공하는 Google Cloud Platform 관련 lab 들을 한달간 무료로 수강을 할수 있는 기회가 제공된다. 그룹장은 같이 스터디를 할 그룹원들을 최소 5명이상 모아야 하며 Google에서 제시한 4가지의 필수 과목을 수료하게 되면 교육을 이수하게 된다. 단, Qwiklabs에서 제공되는 모든 Lab들을 수강할 수 있으며 필수 과목 이외에도 다른 과목을 수강하는것도 허용된다. Qwiklabs에 권한이 크레딧으로 부여되는게 아니라 기간으로 부여되기 때문에 개개인이 듣고 싶은 모든 Labs들을 수강이 가능하다. 


좋은 기회인것은 분명하고 공부도 하면 좋을것 같아서 회사 내에서 그룹원들을 모집하고 한달간 진행을 했다. 진행이라고 해서 별다른건 없었다. Qwiklabs 자체가 개개인이 Lab을 진행 해야 하기 때문에 그룹원들 보다 먼저 진행해서 좀더 쉽게 할수 있도록 도와주는 역할 정도였다. 그리고 공지사항 같은 것들을 전달하고 하는 역할이었다. 그리고 어느새 한달이 지나갔다.


2018년 5월 15일 종강모임을 하게 되었다. 원래 참석 대상은 그룹장 대상이었으나 일부 자리가 남아서 그룹원들도 선착순으로 참석할 수 있었다. 장소는 역삼역 GFC 22층 구글 코리아에서 진행 되었다.




시작에 앞서 먼저 저녁식사가 뷔페식으로 제공되었다. 아마도 구글 직원들이 사용하는 카페테리아 같은데 전에 세미나 들으러 21층은 자주 왔었는데 22층은 처음 와봤다. 그렇게 많지는 않지만 그래도 음식들이 깔끔하고 후식이랑 음료수등로 많이 있어서 배부르게 먹기 충분했다. 


Google Cloud Study Jams 담당자이신 임성혁 님께서 진행을 하면서 수료식이 시작되었다.

화면에 보이는 숫자중 위에 있는 것은 전 세계에서 진행된 Google Cloud Study Jams 숫자이고 아래 있는 숫자들인 이번에 처음으로 한국에서 진행된 숫자이다. 첫번재는 참여 인원, 두번째는 그룹 숫자, 세번째는 진행한 시간 네번째는 달성률이다. 짧은 기간 진행된 그룹과 달성률을 전세계 숫자와 비교하면 높은 수치라고 한다. 그만큼 각각의 그룹과 그룹원들의 참여율이 높았다고 할 수 있다.


이것은 다음에 진행될 Advanced 과정에 대한 예고편이다. 의미심장한 Coursera가 화면에 보인다. 언제 시작될지 아직은 모르지만 벌써부터 기대가 된다. 하지만 전에도 느꼈지만 Coursera 는 이번처럼 만만치는 않을거라 생각이 된다. 

그리고 이것은 구글에서 준비해준 작은 선물이다. 


왼쪽에 보이는 것은 티셔츠와 친환경 소재로 만든 연필, 그리고 구글 스티커이다. 이것은 그룹장에게만 준 선물이고 오른쪽에 보이는 배지는 그룹원들에게 주는 선물이다. 



이번 스터디 기간 동안 내가 진행한 내용이다. 다행히 GCP Essentials 는 완료를 할 수 있었고 그 이외에 Kubernetes 관련된 것도 2개정도 더 들었다. 좀더 많이 들었으면 더 좋았을텐데 라는 아쉬움이 남는다. 그리고 이번에 진행하면서 의사전달을 Slack을 이용했는데 개인적으로는 만족을 했는데 그룹원들에게는 아직 익숙치 않은것 같았다. 그래서 그것때문에 의사전달이 제대로 되지 않은 경우도 발생을 해서 좀 힘이 들었다. 물론 다음 스터디 진행 시에도 Slack을 그대로 사용할 거지만 그때는 좀더 사용을 잘 할 수 있도록 해야겠다. 그리고 어떻게 하면 좀더 즐겁게 많은 것을 배울 수 있도록 참여를 유도할 것인지 고민을 해봐야겠다. 

728x90
반응형

+ Recent posts