《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 03 基礎架構設定 - 安全性群組 & 密鑰對
本篇大綱
這篇文章是要架設 Cloud Native Infra Labs 的第二部分,簡介並設定安全性群組跟密鑰對,建立 VM 的前置作業。
內文
安全性群組
對於 IT 管理的部分,我們會需要控管每台 VM 進出的 Port,安全性群組就是我們需要的功能。
我們再來看我們要規劃的 Server 表:
| Server Name | CPU | Ram | Private IP | Notes | 
|---|---|---|---|---|
| bastion-host | 2 | 2G | 192.168.200.100/24 | Public IP, Control Center | 
| k8s-m0 | 4 | 4G | 192.168.200.101/24 | K8S Master node | 
| k8s-n0 | 4 | 4G | 192.168.200.102/24 | K8S Worker node 0 | 
| k8s-n1 | 4 | 4G | 192.168.200.103/24 | K8S Worker node 1 | 
| gitlab-runner | 2 | 2G | 192.168.200.104/24 | GitLab Shell Runner | 
bastion-host 是我們的堡壘 Server,接入裡面的內網,不讓 Kubernetes 對外直接 Expose,這裡我們只需要對外開 22 Port,並且限制外網來源即可。
內網的 VM 也要互相連線,需要對 Private IP 互相開 SSH 連線。
K8s 的部分我們可以先看官網裡面的 Reference :

這裡我們可以看到 Master node (Control plane) 是需要 Inbound 6443, 2379-2380, 10250, 10259, 10257,Worker node 則是需要 10250, 30000~32767,後面的 30000~32767 可以依據情況做調整,因為這個是 NodePort 範圍的預設。
那這樣我們就會大約需要幾個 Policy 來滿足我們上面的需求
- Public SSH:對外 Expose SSH,套用- bastion-host
- Private SSH:對內網的 SSH 可以互相連線,套用所有 Server
- Master node:套用- Master node
- Worker node:套用- Worker node
我們先來建立新的安全群組
點擊新建安全性群組

這邊的名稱跟描述都可以自己取名

新增完後會有個只有出口的設定,代表這可以向外連線出去。
點擊 加入規則

- 規則:SSH
- 遙控:CIDR
- CIDR:這裡可以依照需求調整。
如果想要方便連線可以設定 0.0.0.0/0,代表所有地方都可以連線。

如果不想公開連線,就設定 <自己 IP>/32,代表只有此 IP 可以連線。

再回去安全性群組新增 Private SSH。

Private SSH 新增規則:
- 規則:SSH
- 遙控:CIDR
- CIDR:192.168.200.0/24(代表所有內網 IP)

再回去安全性群組新增 Master node 群組。

對 Master node 新增 K8s API Server 規則:
- 規則:自訂 TCP 規則
- 描述:Kubernetes API server(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:接口
- 接口:6443
- 遙控:CIDR
- CIDR:192.168.200.0/24

對 Master node 新增 etcd 規則:
- 規則:自訂 TCP 規則
- 描述:etcd server client API(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:接口
- 接口:6443
- 遙控:CIDR
- CIDR:192.168.200.0/24

對 Master node 新增 Kubelet API 規則:
- 規則:自訂 TCP 規則
- 描述:Kubelet API(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:接口
- 接口:10250
- 遙控:安全性群組
- 安全性群組:Master node
- 網路協定類型:IPv4

對 Master node 新增 kube-scheduler 規則:
- 規則:自訂 TCP 規則
- 描述:kube-scheduler(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:接口
- 接口:10257
- 遙控:安全性群組
- 安全性群組:Master node
- 網路協定類型:IPv4

對 Master node 新增 kube-controller-manager 規則:
- 規則:自訂 TCP 規則
- 描述:kube-controller-manager(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:接口
- 接口:10257
- 遙控:安全性群組
- 安全性群組:Master node
- 網路協定類型:IPv4

再回去安全性群組新增 Worker node 群組。

對 Worker node 新增 Kubelet API 規則:
- 規則:自訂 TCP 規則
- 描述:Kubelet API Master node(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:接口
- 接口:10250
- 遙控:安全性群組
- 安全性群組:Master node
- 網路協定類型:IPv4

對 Worker node 新增 Kubelet API 規則(自己):
- 規則:自訂 TCP 規則
- 描述:Kubelet API Self(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:接口
- 接口:10250
- 遙控:安全性群組
- 安全性群組:Worker node
- 網路協定類型:IPv4

對 Worker node 新增 NodePort 規則:
- 規則:自訂 TCP 規則
- 描述:NodePort Services(描述都可以自己訂定,方便辨識即可。)
- 方向:入口
- 開放埠口:範圍埠口
- 從此埠口:30000
- 到此埠口:32767
- 遙控:CIDR
- CIDR:0.0.0.0/0(之後要為 Load Balancer 做準備,因此設定所有來源。)

那這樣就設定完成了。
密鑰對 Key Pair
對 VM 做 SSH 連線有兩種方式,第一種是密碼,但是密碼很容易被暴力破解,通常我們會用第二種,SSH Key。
這裡可以用 Openstack 上的新增密鑰對來做,但這裡為了增加安全性還有自訂方便性,我會用 ssh-keygen 本機產生公私鑰。
| 1 |  | 
下完這組命令以後會產生私鑰 my-server 跟公鑰 my-server.pub 這兩個檔案 


點擊 輸入公鑰

- 密鑰對名稱:CloudNative - Personal Lab(可以自訂)
- 金鑰類型:SSH 金鑰檔
- 公鑰:my-server.pub的檔案內容

這樣我們就建立好我們的 Key pair 了,下一篇我們就來設定 VM Instance。
本系列內容也會同步貼到我的 iT 邦幫忙 https://ithelp.ithome.com.tw/users/20112934 歡迎來點一下追蹤,那我們就下一篇文章見啦!
