這篇文章是要架設 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
如果想要方便連線可以設定 0.0.0.0/0
,代表所有地方都可以連線。
如果不想公開連線,就設定 <自己 IP>/32
,代表只有此 IP 可以連線。
再回去安全性群組新增 Private SSH
。
Private SSH
新增規則:
SSH
CIDR
192.168.200.0/24
(代表所有內網 IP)再回去安全性群組新增 Master node
群組。
對 Master node
新增 K8s API Server 規則:
自訂 TCP 規則
Kubernetes API server
(描述都可以自己訂定,方便辨識即可。)入口
接口
6443
CIDR
192.168.200.0/24
對 Master node
新增 etcd 規則:
自訂 TCP 規則
etcd server client API
(描述都可以自己訂定,方便辨識即可。)入口
接口
6443
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
0.0.0.0/0
(之後要為 Load Balancer 做準備,因此設定所有來源。)那這樣就設定完成了。
對 VM 做 SSH 連線有兩種方式,第一種是密碼,但是密碼很容易被暴力破解,通常我們會用第二種,SSH Key。
這裡可以用 Openstack 上的新增密鑰對來做,但這裡為了增加安全性還有自訂方便性,我會用 ssh-keygen
本機產生公私鑰。
ssh-keygen -t ed25519 -C "<comment>" -f my-server
下完這組命令以後會產生私鑰 my-server
跟公鑰 my-server.pub
這兩個檔案
點擊 輸入公鑰
CloudNative - Personal Lab
(可以自訂)SSH 金鑰檔
my-server.pub
的檔案內容這樣我們就建立好我們的 Key pair 了,下一篇我們就來設定 VM Instance。
本系列內容也會同步貼到我的 Blog https://blog.yangjerry.tw 歡迎來我的 Blog 點一下 RSS 追蹤,那我們就下一篇文章見啦!