惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Secure Thoughts
博客园 - 【当耐特】
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
博客园 - 司徒正美
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
P
Privacy & Cybersecurity Law Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
B
Blog
The GitHub Blog
The GitHub Blog
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
Martin Fowler
Martin Fowler
博客园 - 叶小钗
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tenable Blog
S
Securelist
博客园 - 三生石上(FineUI控件)
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
T
Threat Research - Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Full Disclosure
Cloudbric
Cloudbric
The Cloudflare Blog
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
H
Hacker News: Front Page
腾讯CDC
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
V2EX - 技术
V2EX - 技术
GbyAI
GbyAI
TaoSecurity Blog
TaoSecurity Blog
I
Intezer
The Last Watchdog
The Last Watchdog
G
GRAHAM CLULEY
Google Online Security Blog
Google Online Security Blog
T
The Blog of Author Tim Ferriss

Dosk 技术站

华为荣耀电视盒子刷 Armbian - Dosk 技术站 记录一个没意义的 usb wifi 驱动编译 - Dosk 技术站 我的 2024 - Dosk 技术站 unRAID 7.0.0-beta.1 - Dosk 技术站 关于 unraider 的开心版 - Dosk 技术站 unRAID 6.12.7-rc2 进展 - Dosk 技术站 每年问自己 40 个问题 - Dosk 技术站 2023 年度总结 - Dosk 技术站 N100 万兆软路由最终形态 - Dosk 技术站 N100 软路由改造下散热 - Dosk 技术站 N100 万兆软路由测测速 - Dosk 技术站 整活新玩具,半 DIY 一个万兆软路由 - Dosk 技术站 玩玩 WebAuthn:RP2040 One - Dosk 技术站 关于最近以及后续要做什么 - Dosk 技术站 unRAID 6.12.0-rc7/6.12.0-rc6.13 - Dosk 技术站 unRAID 6.12.0-beta18 试用 - Dosk 技术站 unRAID 6.11.4 如何继续开心 - Dosk 技术站 cert-manager 基于 acme.sh 的 webhook - Dosk 技术站 unRAID 虚拟机运行 unRAID 简单步骤 - Dosk 技术站 解决 Chrome 原生谷歌翻译功能的一个思路:3/3 - Dosk 技术站 解决 Chrome 原生谷歌翻译功能的一个思路:1/3 - Dosk 技术站 unraid 命令行包管理器 - Dosk 技术站 继续,unraid 6.11 happy 的方法 - Dosk 技术站 适用于 k8s 的 frpc ingress 实现 - Dosk 技术站 实现了一个简单的通配 DNS 服务 - Dosk 技术站 代码更新,happy unraid 懒人版 - Dosk 技术站 复盘一次群晖的 btrfs + docker:dind 引发的灾难 - Dosk 技术站 unraid 官方版不修改不用 keymaker 可持续 happy 的方法 - Dosk 技术站 unraid 实现完美硬盘启动 - Dosk 技术站 rpi3b+ 跑 pi-kvm 项目记录 - Dosk 技术站 记录一下 docker 里跑 dsm 迅雷套件的过程 - Dosk 技术站 docker 更新,整理 build - Dosk 技术站 记录下 openwrt 改交换机的步骤,以及注意事项 - Dosk 技术站 docker 里跑 openwrt 遇到的奇奇怪怪问题修复 - Dosk 技术站 OpenWrt 添加一个 socat 的 luci web 界面 - Dosk 技术站 Cloudflare DDNS 脚本,适配 OpenWrt,自带的不好用 - Dosk 技术站 在 NAS 里优雅的使用迅雷 - Dosk 技术站 记录一次 rpi4b 使用 openwrt docker 接管网络 - Dosk 技术站 悲伤是一件很耗费精力的事情 - Dosk 技术站 Tablet 板绘 - 梅花 - Dosk 技术站 Chromium 代码下并发 Callback 的骚操作 - Dosk 技术站 Tablet 板绘 - 月光 - Dosk 技术站 测试测试 Forestry - 一个 Jekyll CMS - Dosk 技术站 如何从 Chromium “偷” UI - Dosk 技术站 Cocoa 如何创建置于全屏之上的 NSWindow - Dosk 技术站 修改 Prose 支持中文标题 - Dosk 技术站 macOS & Windows 实现系统/进程/线程的 CPU 统计 - Dosk 技术站 STL 内 std::{bind/tuple/function} 简单实现 - Dosk 技术站 Cocoa 修改 TitleBar 样式 - Dosk 技术站
Kubernetes 集群导航页 - Dosk 技术站
2023-12-29 · via Dosk 技术站

  • 我在家里的服务,都是基于 k8s 来部署的,抛开复杂度看,能够以统一的方式控制所有机器并灵活调度的特性深得我心。
  • 不过,像所有人一样,我也希望能让所有的入口统一起来,也就是各个玩家都会搭建的导航页;鉴于 k8s 具备了很强大的 api-server 所以我决定基于其上搞个简单的导航页。

组件

简单介绍下我用到的组件,如果觉得还行的话,其实可以拉代码简单适配自己的设施

  1. ingress 我选择的是 traefik,这部分其实只要你喜欢,可以随便换
  2. 我所有的服务,都具备独立的子域名,用 cert-manager 管理证书,所以我新增服务只要按照模板写一下配置就轻松跑起来
  3. 导航页是域名根域

玩法

  1. 现在已经整理成一个镜像,最初是直接跑了一个 kubectl 来作为 api-serverproxy,配合 caddy 来做反向代理
  2. caddy 还负责作为静态资源服务器,我的所有逻辑都是前端完成,frontend -> caddy -> kubectl -> api-server
  3. 所有的 ingress 资源我都使用 annotations 来添加自定义字段,字段都以 homelab 开头,以 jellyfin 举例:
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: jellyfin
  annotations:
    kubernetes.io/ingress.class: traefik
    homelab/name: Jellyfin # 导航页上显示的名字
    homelab/host: jellyfin # 子域名前缀
    homelab/order: "33"    # 顺序,就是个排序的作用
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`jellyfin.dosk.host`)
      kind: Rule
      services:
        - name: jellyfin
          port: 8096

代码

这部分相对就复杂些了,不过,可以直接参考我封装好的代码 Infinity-Server/dockerset 或镜像 docker.io/springhack/aura

  • caddy 的代码,反向代理了 kubectl proxy 并提供 file-server
:8000 {
  handle_path /services {
    rewrite * "/apis/{env.API_GROUP}/{env.API_VERSION}/{env.API_CRD}"
    reverse_proxy 127.0.0.1:6000 {
      header_up Host {upstream_hostport}
    }
  }
  file_server * {
    root /etc/caddy
  }
}
  • 其他部分的代码,其实就相对简单了,可以直接参考仓库

那么我的镜像如何使用呢

简单,如下:

  • 首先配置一个 ServiceAccount,我都放在了独立的 aura namespace 下面:
---
apiVersion: v1
kind: Namespace
metadata:
  name: aura
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: aura-role
  namespace: aura
rules:
  - apiGroups:
      - ""
      - "traefik.io"
      - "metrics.k8s.io"  # 这部分,是因为镜像添加了 metrics 信息显示
    resources:
      - "pods"            # 同上
      - "nodes"           # 同上
      - "ingressroutes"
    verbs:
      - "get"
      - "list"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: aura-binding
  namespace: aura
subjects:
  - kind: ServiceAccount
    name: aura-account
    namespace: aura
roleRef:
  kind: ClusterRole
  name: aura-role
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: aura-account
  namespace: aura
  • 然后,部署一个 Deployment,配合这个 ServiceAccount
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aura
  namespace: aura
  labels:
    app: aura
spec:
  revisionHistoryLimit: 0
  selector:
    matchLabels:
      app: aura
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: aura
    spec:
      serviceAccountName: aura-account
      containers:
        - image: springhack/aura:latest
          imagePullPolicy: IfNotPresent
          name: aura
          ports:
            - containerPort: 8000
              name: aura
  • 其余部分按照喜好补全就好之后,只要你部署的 ingress 带有相应 annotations 就会被自动显示到首页上并按照 order 排序

还有么

  • 提一嘴,镜像代码配置了环境变量,如果只是更换 ingress controller 几乎可以不用改代码
  • 最后放个图吧,我知道我的代码,现在还较为简单,毕竟只是我个人在用,放出来更多的是为大家提供一个思路