《關於我怎麼把一年內學到的新手 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 可以互相連線,套用所有 ServerMaster 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 歡迎來點一下追蹤,那我們就下一篇文章見啦!