Kubernetes@Home – 如果你所在的互联网服务提供商更改了你的 IP 地址,你该怎么办?

主要观点:作者通过编写 Python 程序实现了在 ISP 可能更改外部 IP 地址时自动更新 Kubernetes 环境中的防火墙和服务相关配置。
关键信息:

  • 作者的 ISP 控制其外部 IP 地址,虽未更改但可能发生,作者决定为此做好准备并进行编程。
  • 作者使用 Unifi Cloud Gateway Max 作为防火墙,其 IPv4 端口转发简单,IPv6 规则较复杂但有 API。
  • Kubernetes 中有多处可指定 IP 地址,作者选择在kubernetesdmz网络上运行服务,IPv6 地址会随 ISP 更改而变化,且有大量 Kubernetes API 可用于自动化操作。
  • 作者利用 Unifi API 来获取公共 IP 地址信息并通过 MQTT 发送通知,还实现了一个简单的类来处理 Unifi API 登录和请求。
  • 程序以 Kubernetes 部署的形式运行,包含多个环境变量和功能函数,如发送 MQTT 消息、存储和检索状态、重写 IP 地址等,用于更新 Unifi 防火墙对象和规则以及 Kubernetes 服务等。
    重要细节:
  • 程序的环境设置包括导入必要模块、设置日志、加载 Kubernetes 配置等,还定义了多个实用函数,如发送 MQTT 消息、存储和检索状态等。
  • 在更新 Unifi 防火墙和 Kubernetes 资源的函数中,分别处理了不同类型的对象和规则,如 IPv6 地址组、防火墙策略、Kubernetes 服务等。
  • 主程序通过循环获取 Unifi 网络信息,检查 IP 地址变化,若有变化则调用相应函数进行更新,并将状态存储。
  • 程序中还处理了 IPv6 消失和恢复的情况,以及可能需要添加的其他 Kubernetes 资源的更新逻辑。
阅读 6
0 条评论