---
# System prepended metadata

title: 'LAB 2-2 :Install Haproxy for OCP4 on GCP'

---

# LAB 2-2 :Install Haproxy for OCP4 on GCP

## 先前準備

 + 1 . 擁有GCP billing account 可以申請 quote 調整，以及所需的GCP專案
 + 2 . 以瀏覽器登入 GCP，建立或打開要安裝OCP (OpenShift)的專案。打開專案的雲端 VM:console SSH (瀏覽器)，進行下列安裝步驟


## 需親自在 Web Console 上操作的設定
+ 若您的 GCP Billing Account 仍在試用期間，可以使用的資源受限，無法完成以下作業。故請先同意 GCP試用 Credits 用完後繼續扣信用卡支付費用，才能調高 GCP 可使用資源。

+ 請先在 GCP Web Console 切換專案至 Lab 專案，即「systex-lab-xxxx」，而非「我的專案」
+ 點選此連結 IAM & Admin --> 配額「[asia-east1](https://console.cloud.google.com/iam-admin/quotas?folder&organizationId&service=compute.googleapis.com&location=asia-east1)」或是 「[asia-east2](https://console.cloud.google.com/iam-admin/quotas?folder&organizationId&service=compute.googleapis.com&location=asia-east2)」頁面，已設定配額過濾條件：
    + 服務 --> Compute Engine API (先清除全選，再鉤選此項)
    + 位置 --> 同 Lab1 指定的 $GOOGLE_REGION

+ 請先鉤選下列項目，再點擊「編輯配額」按鈕。填寫如下數值，先按「完成」再按「提交要求」。送出後約5分鐘後即獲通過。
    + Computer Engine API (CPUs) --> 28 vCPU 以上 建議 32 vCPU
    + Persistent Disk SSD (GB)   --> 896GB 以上 建議 1TB
    + Static IP addresses --> 4個以上

![](https://i.imgur.com/bfjtyHK.jpg)
![](https://i.imgur.com/jOKUsjE.jpg)

![](https://i.imgur.com/7upEDGE.jpg)


## 在GCP 上建立VM 當Haproxy 來充當 sub domain 
```
# 建立 vm 的start script
wget -O haprxoy-gcp-vm.sh https://raw.githubusercontent.com/harryliu123/devops-hands-on/master/haprxoy-gcp-vm.sh

## 新增EIP (若是 Enable API 未超過20分鐘，以下指令可能出錯)
gcloud compute addresses create haproxyeip --region $GOOGLE_REGION
haproxyeip=$(gcloud compute addresses list |grep haproxyeip | awk -F" " '{print $2}')

## 建立VM：此作業可能需要進互動輸入，相關選項請都輸入 y即可
gcloud compute instances create haproxy  \
  --machine-type=f1-micro \
  --metadata-from-file startup-script=haprxoy-gcp-vm.sh \
  --address $haproxyeip

# 此作業可能會需要2~3分鐘完成
```
```
# 取得VM IP 充當 domain
vmip=$(gcloud compute instances list --filter="name=(haproxy)" --format="value(networkInterfaces[0].accessConfigs[0].natIP)")
GCP_DOMAIN=${vmip}.nip.io
echo 'GCP_DOMAIN='${vmip}'.nip.io' >> ~/.my-env
echo "export \$(cat .my-env|xargs)" | tee -a ~/.profile > /dev/null 2>&1

echo "將GCP_DOMAIN變更為 : " ${vmip}.nip.io
## 透通 haproxy firewall rule 如用於正式環境請勿參照此 Lab 的 Allow all
gcloud compute --project=$GCP_PROJECT firewall-rules create allow-haproxy --direction=INGRESS --priority=100 --network=default --action=ALLOW --rules=all --source-ranges=0.0.0.0/0
```


## 在 GCP cloud dns上建立 OCP 所需 DNS sub domain 
```
gcloud dns managed-zones create openshift4-domain --dns-name ${GCP_DOMAIN}. --description "openshift 4 domain"
```
## 查看 GCP 為此 Sub Domain 配置的 DNS 主機
```
gcloud dns managed-zones describe openshift4-domain

## 輸出應該與下列資訊相似

# description: openshift 4 domain
# dnsName: xx.xx.xx.xx.nip.io  ## 請確認此欄有值
...
# visibility: public  ## 請確認此欄之值為 public，才能從GCP之外存取 OCP

```


