手把手教你把 SafeLine 落地到云原生环境 #289
Replies: 8 comments 10 replies
-
好内容放 issue 里容易被淹没,我们把仓库的 discussion 开了给师傅放到这边来。 |
Beta Was this translation helpful? Give feedback.
-
我参考这篇文章,部署safeline 已经成功,在配置防护站点后,访问报 502,请问教程是否还有没有记录到的配置 |
Beta Was this translation helpful? Give feedback.
-
按这个配置代理waf自身是可以正常访问的,但代理其他命名空间下的web服务访问不了; 基本流程: 但这样配置后等于没有和ingress配合使用,不知道你那边是否也是这种配置的? |
Beta Was this translation helpful? Give feedback.
-
看了下官方文档,ingress controller通过安装safeline插件可以实现代理其他ns下域名,但这种方式有些功能是有限制无法使用的,如人机验证、身份认证 基本流程: 注意事项: # safeline.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: safeline
namespace: ingress-nginx
data:
host: "detector_host" # 雷池检测引擎的地址, 此处需要填写完整域名,否则会报错,如 safeline-detector.safeline.svc.cluster.local
port: "8000" |
Beta Was this translation helpful? Give feedback.
-
我已经测试过了,是可以代理其他ns下的ingress |
Beta Was this translation helpful? Give feedback.
-
根据教程部署完之后,反代可以 从 域名到safeline-tengine 但是 人机验证 封锁 都无效,只有反代功能有生效 |
Beta Was this translation helpful? Give feedback.
-
emmm小白路过,请问我能否认为这个教程是自行构建雷池镜像的过程?(我正在尝试自行构建镜像) |
Beta Was this translation helpful? Give feedback.
-
大佬,6.9.1版本无法上传证书,是不是也是因为tengine 和 detector 这两个服务是的镜像没有修改成http的原因,我用的是官方的镜像 |
Beta Was this translation helpful? Give feedback.
-
反馈内容
手把手教你把 SafeLine 落地到云原生环境
核心一览
SealOS 一键构建 k8s 环境
环境信息
安装 Sealos
配置clusterfile
配置负载均衡
我这里的云平台提供 LB 服务,但我又不想让 SVC 使用 LoadBalancer,所以,我这里只配置了 80、443、6443 三个端口,其中 80、443 是给 Ingress Nginx 准备的,6443 是给 APIServer 做负载用的。
另外,如果你需要在集群外访问 APIServer,则需要把负载 IP 也添加到 CertSANs 列表中。
自定义 CIDR
如上,我这里计划用 Cilium 作为 CNI 插件,看 clusterfile 配置可以知道 Sealos 部署的 k8s 集群,默认 PodSubnet 是 100.64.0.0/10,而 Cilium 对应的 clusterPoolIPv4PodCIDR 默认为 10.0.0.0/8,所以,我们需要自定义 cilium Operator 的 clusterPoolIPv4PodCIDR 也为 100.64.0.0/10。
安装 Kubernetes 集群
# 部署 Kubernetes sealos apply -f clusterfile
至此,我们姑且认为您已经按照上述步骤完成 k8s 集群的安装。
部署 LongHorn 云原生分布式存储
磁盘挂载
如上,我这里规划三个 master 节点作为存储节点,并且磁盘都是
/dev/vdc
安装依赖
安装 iSCSI
安装 NFSv4 客户端
添加标签
部署 LongHorn
验证
至此,我们姑且认为您已经按照上述步骤完成 LongHorn 的安装。
部署 Ingress Nginx 控制器
前面说过,我不打算使用 Loadbalancer,因为它的代价实在是太高了,但也不想让用户访问时多加一个端口,所以,准备使用 hostNetwork 参数暴露宿主机上的 80 和 443 端口,配合 pod 亲和性和反亲和性,将 Ingress Nginx 的 pod 固定在三个 master 节点上,再利用上述负载均衡让 Ingress 可以暴露在互联网。
部署 CertManager 控制器
部署 SafeLine
Helm 部署 SafeLine
创建一个 HTTP01 类型的 ACME 发行者
创建 Ingress
至此,您可以通过域名访问直接访问 SafeLine 的管理后台;另一种方法,也可以通过 NodePort 的形式去访问。
配置 WAF
既然 SafeLine 已经安装好了 ,那么把我们的域名交给 WAF 去防护肯定是首选了。
添加人机验证
配置防护站点
我们这里直接把刚才的 waf.silkdo.com 作为要防护站点。
刚才我们已经给 SafeLine 添加了一个 Ingress,但后端 SVC 用的是 safeline-mgt-api,而现在,我们需要 Ingress 也经过 WAF 防护,此时只需要稍作修改,把 Ingress 的后端 SVC 改成 safeline-tengine 即可。
现在,打开一个无痕窗口,访问你的域名,出现上图,说明你的 WAF 成功生效,至此,Safeline 落地到云原生环境完结。
Beta Was this translation helpful? Give feedback.
All reactions