| 項目 | 日期 | |
|---|---|---|
| GCP | ||
| 1 | GCP: Basic concepts of Compute Services |
2023/01/27
|
| 2 | GCP: Setup Billing Budgets and configuring alerts |
2023/02/09
|
| 3 | GCP: Getting Started with Cloud Shell and gcloud |
2023/01/27
|
| 4 | GCP: Create Virtual Machine |
2023/01/07
|
| 5 | GCP: Create a Persistent Disk | 2023/01/07
|
| 6 | GCP: Configuring Networks via gcloud | 2023/01/10
|
| Azure | ||
| 1 | Azure: Virtual Network | 2022/11/01
|
| 2 | Azure: Network Security Group | 2022/12/02
|
| 3 | Azure DevOps: CI Tutorial | 2022/12/20
|
Google Code Prettify
2023年1月7日 星期六
Public Cloud
GCP: Create Virtual Machine
目標
在 GCP 上建立一個 VM
在 VM 上安裝 NGINX
以 browser 瀏覽 VM 的外部 IP, 確定 NGINX 正常運作。
建立 VM 執行個體
- 選擇「VM執行個體」
如圖,選擇左邊選單的「Compute Engine > VM執行個體」,進到建立執行個體的畫面。
- 建立執行個體
按了【建立執行個體】後出現如下畫面,區域 (Region) 選台灣,機房在彰濱,該機房又分三個 Available Zone,簡單的說分成三個機房,這也是可選的,一旦選定建立好 VM,就無法變更。
機器有很多型號,這裡選預設的 E2,類型也選預設的 e2-medium,注意看右上角,會有費用標示。
- 設定選項很多,畫面很長,往下捲動,可以看到「開機磁碟」項目,按【變更】
- 彈跳出選擇的畫面如下,我選了習慣使用的 CentOS,並且開機磁碟類型選標準型比較便宜,然後按【選取】。
- 回到上一畫面後繼續往下捲,看到防火牆的選項,因為後續要架個 Nginx 做測試,選擇開通 80 port,按【建立】,等待數分鐘,即會建立好 VM。
- 觀察建立結果
安裝 NGINX
- SSH 進 VM
- 安裝 NGINX
- 啟動 NGINX
點選「SSH > 在瀏覽器視窗中開啟」,GCP 開啟了一個瀏覽器新視窗,並以公私鑰的方式 SSH 進入 VM。
sudo dnf update
sudo dnf install nginx
安裝好,執行如下指令,顯示出 nginx 版本,確認有安裝好。nginx -version
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
上面指令,第 1 行是啟動 nginx,第 2 行是設定為開機就會自動啟動nginx,第 3 行檢查 nginx 執行狀態,如下圖,正常運作。
測試
在自己的電腦開啟瀏覽器,於網址列輸入外部網址 http://34.80.176.80,出現如下 NGINX 的首頁,確定已經在正常運作。
2022年12月20日 星期二
Azure DevOps: CI Tutorial
- 登入 Azure DevOps
Azure DevOps 的網址是 https://dev.azure.com,注意網頁有兩個【Sign in】,右上角會登入到 Azure portal,要使用左下角的【Sign in to Azure DevOps】才能正確登入到 Azure DevOps。
- 建立組織
在 Azure DevOps 裡,最上層的結構是 Organization (組織),在 Ogranization 下會有許多 Project (專案)。所以,使用 Azure DevOps,第一個步驟就是【New organization】。
按了上圖的【New ogranization】會出現如下的彈出畫面,只要輸入組織名稱,並選擇這個組織下的 project 要放在那裡的機房,然後按【Continue】。
- 建立專案
如下,可以看到左邊選單出現上面建立的 Organization。這時候可以為這個組織建立第一個 project。
- 專案版面簡介
建立 project 後會出現如下畫面,右上角的【Invite】按下去,可以邀請專案成員,左邊選單的 Repos,是 git repo,用來版控程式碼,左邊選單的 Pipeline,可用來建立 CI 流程。
- 程式碼版控 - 加入公鑰
點選左邊選單的「Repos」,選擇通訊協定為 SSH,然後按【Manage SSH Keys】。
- 匯入程式碼
我程式早寫好,所以偷懶的按上面紅色的複製,並且在本機一個空目錄 git clone 一份,把 .git 版控設定建立好,然後把我的程式碼搬進該目錄後,commit、push 到 Azure DevOps 的 git repos,push 進去後,可以看到如下的結果。
- 建立 CI pipeline
如上,點選左邊選單的【Pipelines】,再點選中間的【Create Pipeline】,可以建立 CI pipeline。當出現如下畫面,選擇「Azure Repos Git」,因為在上一個步驟我們是把程式碼版控在 Azure Repos Git。剛剛匯入的程式,根目錄有一個 build.gradle,是以 Gradle 進行 artifacts 管控的專案,所以,這裡就選擇用 Gradle,這樣 pipeline 會在 build 的過程採用 Gradle。當彈出如下畫面時,commit message 就隨意填一些讓自己看的懂的訊息,然後按【Save and run】。
- 組織綁定 Billing
上面的【Save】按了之後會出現如下畫面,紅框的值預設是 0,必須給它們一點錢才能 run,這裡先設定為 20 美元,然後按最下面的【Save】。
- 測試 CI pipeline
回到專案的 Pipelines 畫面,可以看到唯一的一條 pipeline 及最後一次執行結果,選擇這個 pipeline,會進入下面的畫面,如果要看 pipeline 的資訊,可以先點選 pipeline 後再按【Run】,這裡直接按右上的【Run pipeline】即可。
回到專案的 Pipelines 畫面,可以看到唯一的一條 pipeline 及最後一次執行結果,選擇這個 pipeline,會進入下面的畫面,如果要看 pipeline 的資訊,可以先點選 pipeline 後再按【Run】,這裡直接按右上的【Run pipeline】即可。
2022年12月2日 星期五
Azure: Network Security Group
NSG (Network Security Group, 網路安全性群組) 是一種網路流量篩選器,可以和 VM 的虛擬網卡或 VNet 的子網路結合。
NSG 中包含防火牆的對內、對外規則,修改規則只會影響形成的新連線。 建立新規則或在網路安全性群組中更新現有規則時,它只會套用至新的流程和新連線。 現有的工作流程連線不會隨著新的規則更新。
建立 VM 時,Azure 預設會建立一個相對應的 NSG,如果要改變 VM 對防火牆等網路設定,要修改 NSG,不能用傳統上管理網路的指令直接修改。如下圖,當建立一個命名為 VM4 的 VM 時,系統自動建立了一個 NSG 掛在該 VM 上,如果要修改 VM4 的網路設定,要修改 VM4-nsg 這個 NSG 裡的設定,千萬不要在 VM4 裡下傳統網路管理指令。
說明上圖的幾個項目:
Inbound Security Rules 是由外向內連線的規則,Outbound Security Rules 是由內向外連線的規則。
每個連線要通過防火牆,會比對上面的條件,由 Priority 小的開始比對,符合了就可以通行,不再往下比對。
Name 可以隨便取,可讀性高就好,但是如上圖,有預先設定好幾個了,如下:
預設規則無法移除,但可以建立較高優先順序的規則來覆寫預設規則。規則 說明 1 AllowVNetInBound 允許來自同一 VNet 或對等互連 VNet 的對內流量2 AllowAzureLoadBalancerInBound 允許來自任何 Azure 負載平衡器 IP 位址的對內檢測流量3 DenyAllInbound 特殊規則,確保任何前面的規則未能比對出來的對內流量都會被擋下。4 AllowVNetOutBound 允許源於此一 VNet 或前往對等互連 VNet 的對外流量5 AllowInternetOutBound 允許此一 VNet 內的 VM 前往 Internet6 DenyAllOutBound 特殊規則,確保任何前面的規則未能比對出的對外流量都會被擋下。- 在 Source 和 Destination 欄位,有如下標籤方便設定 NSG 規則:
- 如下圖,VM 3、VM 4 在同一個 subnet,如果它們的網路設定一樣,想要統一管理,可以把它們預設綁在 VM 上的 NSG 移除,並設定一個新的 NSG 綁在 subnet 3 上。(在 example 中會說明怎麼做)
| Service Tag | 說明 | |
|---|---|---|
| 1 | VirtualNetwork | 所有的虛擬網路定址空間皆包含在內,包含本地及對等互連的 VNet。
|
| 2 | Internet | 所有公共 IP 位址,不論是 Azure 或外界持有皆然。
|
| 3 | AzureLoadBalancer | 你所部署的 Azure 負載平衡器的虛擬 IP 位址
|
| 4 | AzureCloud | Azure 的公共 IP 位址空間
|
| 5 | Storage | Azure 儲存體服務的 IP 位址空間
|
example
- create NSG 按【Review + create】後進入下面畫面,再按【Create】即成功建立一個 NSG。
- 設定 NSG
如上,剛剛才建立的 subnet3-nsg 已經有預設建了一些 Inbound security rules 和 Outbound security rules,要很嚴謹的話,通常會把這些都刪除,只加上自己要的規則。
因為我們希望可以 ssh 到 VM 3、VM 4,如下圖在「Inbound security rules」中按【Add】。 popup 出如下畫面後,在「Service」下拉選單選擇「SSH」。
按下【Add】後,會出現如下畫面,已經加入新的規則,因為 Priority 100,所以排最上面。 - 掛載 subnet-nsg 到 subnet
如上圖,在「Virtual networks」中找到 VNet2,選擇「Subnets」,裡面只有一個 subnet3,點選後出現 subnet3 的規則選項,在「Network security group」下拉選單中選擇「subnet3-nsg」後按【Save】。
- 修改 VM 4 的 Networking
查看 VM 4 的網路設定,原本的 VM4-nsg 及剛設定的 subnet3-nsg 同時存在,從 subnet3 外連線進去或由 VM 4 連出 subnet3 會同時受這兩個規則限制,與我們想要的不同,要移除 VM4-nsg。
點選上面紅框中的 vm491-z1 會進到下圖,目前的 NSG 是 VM4-nsg,要將它卸載,下拉選單改選為 None 後按【Save】。
再重新觀察 VM4 下的 Netowkring,如下圖,只剩下 subnet3-nsg。
VM4-nsg 現在不想用了,可以刪除,如下圖按【Delete】。




















































