内网 k8s 中使用 traefik 作为 ingress(一)

目标 traefik 服务正常启动 部署 nginx 部署测速后可访问 环境准备 kubectl helm 安装 traefik 参考 官方文档 安装教程 注册仓库 helm repo add traefik https://traefik.github.io/charts helm repo update 部署 从 helm chart 市场下载一份默认值的 yaml 文件进行修改: 命名为 traefick-values.yml, 着重修改以下地方: ports: web: # 重定向 http -> https redirectTo: websecure websecure: tls: enabled: true service: externalIPs: # 对于内网环境, 部署 traefik 会卡在 externalIP 为 pending 的状态, 此处需要显式声明 IP 地址 - 192.168.x.x # 作为默认的 ingress, 替换已有的 ingress ingressClass: enabled: true isDefaultClass: true 执行命令以部署:...

<span title='2023-10-06 00:00:00 +0000 UTC'>2023-10-06</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;437 words&nbsp;·&nbsp;Kreedzt

日志管理系统本地搭建(一)

目标 各软件包作用 fluent-bit: 负责收集日志, 处理数据, 转发到 loki 中 loki: 负责筛选并存储数据到 MinIO 中 Grafana: 负责提供 loki web 操作面板 MinIO: 存储 loki 处理的日志数据 处理流程 上报: Docker container 上报日志到 fluent-bit 中 fluent-bit 采集数据转发到 loki 中 loki 处理日志数据, 索引与数据保存到 MinIO 中 查询: Grafana: 进入 loki 面板, 通过标签筛选 loki 提取 MinIO 数据进行查询 环境准备 Docker Docker compose 测试安装 Grafana 与 Loki Grafana Loki 章节的安装已经包含了 Grafana, 直接看 loki 章节即可 官方文档 按照 install with Docker compose 教程, 可以进行本地直接初次搭建测试:...

<span title='2023-08-05 00:00:00 +0000 UTC'>2023-08-05</span>&nbsp;·&nbsp;5 min&nbsp;·&nbsp;945 words&nbsp;·&nbsp;Kreedzt

vitest 项目集成 codecov

项目配置 vitest 配置 不需要特殊配置, 增加 coverage 配置即可: import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { // 注意: 新版 vitest 默认 watch: true, 需要修改为 false, 否则命令会始终不停止 watch: false, // ... coverage: { include: ['src'], all: true, provider: 'istanbul', reporter: ['text', 'json', 'html'], } }, }); npm 命令 为使其 bash 脚本运行报告, 需要添加 npm script: { "scripts": { "coverage": "vitest --coverage" } } 配置 github actions 参考: https://docs.codecov.com/docs/github-2-getting-a-codecov-account-and-uploading-coverage#github-actions 配置 github actions 为配置 ci 的触发规则, codecov 配置需要额外配置...

<span title='2023-07-09 00:00:00 +0000 UTC'>2023-07-09</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;242 words&nbsp;·&nbsp;Kreedzt

nodejs npm 在 windows 下的问题

nodejs npm 在 windows 下的问题 用户名包含空格时, 执行 npx 报错, 路径不对问题 BUG见: create-reat-app issue 复现步骤: C:\Users\Vaidehi Shah\Desktop\MERN-ShoppingList\client> npx create-react-app . 输出: Error: EPERM: operation not permitted, mkdir 'C:\Users\Vaidehi' 很明显, 以上用户名被截取了 解决方案: 首先打开 CMD(命令指示符), 进入到用户名上一级目录下, 执行 dir /x 命令 # 通常是如下目录 C:\Users>dir /x 驱动器 C 中的卷没有标签。 卷的序列号是 F818-9B1A C:\Users 的目录 2020/11/10 19:24 <DIR> . 2020/11/10 19:24 <DIR> .. 2021/07/24 20:08 <DIR> KENZHA~1 Ken Zhao 2021/07/08 22:37 <DIR> Public 0 个文件 0 字节 4 个目录 722,590,040,064 可用字节 以上是我的用户名: Ken Zhao 左侧就是简写名称: KENZHA~1....

<span title='2023-02-02 00:00:00 +0000 UTC'>2023-02-02</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;98 words&nbsp;·&nbsp;Kreedzt

React hooks 入门

React hooks 入门 此教程翻译自Academind课程, 源地址:https://www.youtube.com/watch?v=-MlNBTSg_Ww 为何需要React Hooks 为了状态和生命周期而去写Class组件往往是繁琐的, 而且组合优于继承的原则, 使得在多数情况下能定义函数组件就不去定义类组件 在新版React(16.8)中, 新增了React Hooks, 使我们可以在函数组件中使用状态和生命周期函数, 使得函数组件更加灵活, 减轻类组件使用负担 从state开始(useState) 项目目录: src/ |-components/ |---TabList.js |---Schedule.js |-hooks/ |---http.js 首先我们声明一个无状态函数组件, 内容如下: const TabList = () => { const currentTab = 1; return <div> CurrentTab: {currentTab} </div>; }; 这是一个普通的无状态组件, 我们使用新的useState API来赋予初始值: (useState的调用参数和state一样, 可赋予任何值)(useState的参数为state的初始值) useState方法返回1个数组, 数组内包含2个参数, 第一个参数是当前state: import React, { useState } from 'react'; const TabList = () => { const [state] = useState({ selectedTab: 1 }); return <div> CurrentTab: {state....

<span title='2023-02-02 00:00:00 +0000 UTC'>2023-02-02</span>&nbsp;·&nbsp;7 min&nbsp;·&nbsp;1476 words&nbsp;·&nbsp;Kreedzt