在IBM云的经典基础架构上使用Red Hat OpenShift: 使用安全组控制对外部的访问
首先
在Classic Infrastructure上的Red Hat OpenShift on IBM Cloud(ROKS)中,正如上面所述,L4负载均衡器是通过NLB Pod(ibm-cloud-provider-ip-<IP地址>-xxxxxxxx)实现的,因此外部访问会直接经过worker node上的NLB Pod。
我在本文中确认了NLB Pod分配的IP地址实际上是分配给工作节点上的eth1接口的公用可移动IP地址,因此在安全组中应该能够进行通信控制。
另外,由于NLB Pod将直接从外部进行访问,因此结合Calico的安全功能也是有效的选择,IBM Cloud文档中介绍了该方法(参考)。考虑到影响范围并不限于eth1全体,而只限于NLB Pod,这被认为是一个有力的选择。
2. 在使用安全组时需要注意的事项
-
- アプリケーションごとに制限することが難しい(eth1への一括適用になる)
-
- security groupを初回適用するためにはcustomer portalからの再起動が必要になる。
-
- 新たなworker nodeが追加される度に適用作業が必要である。
-
- アクセス許可の制御漏れに注意。少なくとも以下のアクセス許可は必要だと思われる。
ノード間のVRRP
CISからのヘルスチェック
3. 应用程序准备
[root@syasudacentos7 ~]# oc new-app --docker-image=nginx:latest
[root@syasudacentos7 ~]# oc expose svc nginx
[root@syasudacentos7 ~]# oc get routes
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
nginx nginx-default.xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-0000.jp-tok.containers.appdomain.cloud nginx 80-tcp None
4. 在应用安全组之前进行访问确认
[root@syasudacentos7 ~]# curl -I http://nginx-default.xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-0000.jp-tok.containers.appdomain.cloud
HTTP/1.1 200 OK
server: nginx/1.25.1
date: Mon, 14 Aug 2023 00:20:13 GMT
content-type: text/html
content-length: 615
last-modified: Tue, 13 Jun 2023 15:08:10 GMT
etag: "6488865a-267"
accept-ranges: bytes
set-cookie: 3bc5f7a8aec67b74b33e81d956f57cb9=c3d3e037efd05ebc09dfdb4c6919f5c1; path=/; HttpOnly
cache-control: private
syasuda@ShinobunoMacBook-Pro ~ % curl -I http://nginx-default.xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-0000.jp-tok.containers.appdomain.cloud
HTTP/1.1 200 OK
server: nginx/1.25.1
date: Mon, 14 Aug 2023 00:20:29 GMT
content-type: text/html
content-length: 615
last-modified: Tue, 13 Jun 2023 15:08:10 GMT
etag: "6488865a-267"
accept-ranges: bytes
set-cookie: 3bc5f7a8aec67b74b33e81d956f57cb9=c3d3e037efd05ebc09dfdb4c6919f5c1; path=/; HttpOnly
cache-control: private
5. 应用安全组
创建安全组
将安全组应用到工作节点的VSI上。
5-3. 修改安全组。
6. 确认对安全组应用后的访问情况
[root@syasudacentos7 ~]# curl -I http://nginx-default.xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-0000.jp-tok.containers.appdomain.cloud
(応答なし)
syasuda@ShinobunoMacBook-Pro ~ % curl -I http://nginx-default.xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-0000.jp-tok.containers.appdomain.cloud
HTTP/1.1 200 OK
server: nginx/1.25.1
date: Mon, 14 Aug 2023 00:35:43 GMT
content-type: text/html
content-length: 615
last-modified: Tue, 13 Jun 2023 15:08:10 GMT
etag: "6488865a-267"
accept-ranges: bytes
set-cookie: 3bc5f7a8aec67b74b33e81d956f57cb9=49a05c8390329603b2121331038518e4; path=/; HttpOnly
cache-control: private