Kubernetes创建一个只读用户
其实用到的是RBAC授权,官方文档在:https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/
生成证书12345678# 生成私钥openssl genrsa -out dev.key 2048# 基于这个私钥生成证书请求openssl req -new -key dev.key -out dev.csr -subj "/CN=dev"# 使用CA证书签发openssl x509 -req -in dev.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out dev.crt -days 3000
通过证书生成kubeconfig配置文件12345678910111213141516171819202122232425262728# 生成用户kubeconfigkubectl config set-cluster kubernetes \ # kubeco ...
使用image-syncer来实现容器镜像同步
image-syncer 是一个docker镜像同步工具,可用来进行多对多的镜像仓库同步,支持目前绝大多数主流的docker镜像仓库服务
支持多对多镜像仓库同步
支持基于Docker Registry V2搭建的docker镜像仓库服务 (如 Docker Hub、 Quay、 阿里云镜像服务ACR、 Harbor等)
同步只经过内存和网络,不依赖磁盘存储,同步速度快
增量同步, 通过对同步过的镜像blob信息落盘,不重复同步已同步的镜像
并发同步,可以通过配置文件调整并发数
自动重试失败的同步任务,可以解决大部分镜像同步中的网络抖动问题
不依赖docker以及其他程序
image-syncer 的官方地址是:https://github.com/AliyunContainerService/image-syncer, 是golang开发的, 官方没有给打包成windows版, 所以windows和mac用户需要自己编译一下。
编译安装golang环境略
开始构建1go build main.go
会在当前目录下生成main.exe, 重命名为image-syncer.exe
使 ...
shell脚本条件判断与比较运算
if 的基本语法:1234567if [ -f /tmp ];then echo "是一个普通文件"elif [ -d /tmp ];then echo "是一个目录"else echo "其他类型"fi
文件/目录 判断常用的
运算符
作用
-d
测试文件是否为目录
-e
测试文件是否存在
-f
判断是否为一般文件
-r
测试当前用户是否有权限读取
-w
测试当前用户是否有权限写入
-x
测试当前用户是否有权限执行
-s
文件长度不为零
选项
作用
[ -b FILE ]
如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ]
如果 FILE 存在且是一个字特殊文件则为真。
[ -d DIR ]
如果 FILE 存在且是一个目录则为真。
[ -e FILE ]
如果 FILE 存在则为真。
[ -f FILE ]
如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ]
如果 FILE 存在且已经设置了 ...
利用Nginx的rewrite来实现自动跳转
任意链接都跳转到指定页面
需要部署一个服务在Kubernetes内, 需要实现通过ingress可以访问到, 本来是很简单的事情, 但是由于访问来源的location不确定,为了避免报错404,所以用Nginx的rewrite来实现
Nginx配置如下(所有location转发到index.html):
12345678910111213server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /var/www/html; index index.html index.htm index.nginx-debian.html; location / { rewrite ^(.*) /index.html break; }}
自动跳转https配置文件如下:
123if ( $scheme = http ) ...
使用Obsidian配合Hexo写博客
obsidian是一款好用的markdown编辑器, 用来记笔记还是不错的。 并且支持插件系统,可以通过模板来生成博客的frontmatter, 省去了hexo new的操作 所以准备配置一下用obsidian来写博客。
相关文章:静态博客生成工具hexo使用typora更好更快地写hugo博客使用vscode来写hugo博客并处理图片插入问题
打开仓库首先使用obsidian打开source/_posts目录, 然后会生成一些配置文件。进入_posts目录
创建.gitignore将一些临时文件排除掉。
1.obsidian/workspace.json
配置模板自带的模板插件功能太单一了, 我们关闭安全模式, 安装第三方插件Templater
创建Templates目录,修改配置指定Template的目录。修改配置项Template folder location为Templates
然后再此目录下创建Front-matter.md文件,此文件用作hexo的frontmatter模板。
123456789---title: <% tp.file.title %>cat ...
ArchLinux安装记录
官方文档 ArchWiki 已经写的很好了,但是每次安装的时候都要踩坑,所以开个文章记录一下。
磁盘分区与格式化123parted /dev/sda mklabel gpt mkpart ESP fat32 1M 513M set 1 boot on mkpart primary ext4 513M 100% printmkfs.fat -F 32 /dev/sda1mkfs.ext4 /dev/sda2
挂载与chroot操作chroot后相当于进入了安装后的系统内进行操作
123456mount /dev/sda2 /mntmount --mkdir /dev/sda1 /mnt/bootpacstrap -K /mnt base linux linux-firmwaregenfstab -U /mnt >> /mnt/etc/fstabarch-chroot /mnt
常用配置配置时区12ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimehwclock --systohc
配置locale1pacman ...
Fail2ban配合Docker使用解决暴力破解
fail2ban正常使用可以参考使用Fail2ban抵御暴力破解和cc攻击,但是对于使用了Docker host网络的容器来说是不生效的。原因最后说, 我们先复原一下部署情况
环境现状服务器是我自己的服务器,使用Nginx做入口,反向代理到不同的后端,后端服务和Nginx都是运行在Docker里,使用Docker的自定义网络进行互联。其中Nginx容器使用的是Host网络
配置fail2ban确定Docker版Nginx日志路径Linux内一切皆文件,Docker会将日志写入到主机的一个日志文件中。通过
1docker inspect nginx --format "{{.LogPath}}"
可以查看到容器的日志位置
创建配置文件/etc/fail2ban/jail.d/nginx-cc.conf123456789[nginx-cc]enabled = trueport = http,httpsfilter = nginx-ccaction = %(action_mwl)smaxretry = 50findtime = 1 ...
使用Fail2ban抵御暴力破解和cc攻击
fail2ban 是一款防止暴力破解和cc攻击的开源工具,采用Python编写。
常用组件
工具
作用
fail2ban-client
客户端工具
fail2ban-regex
验证正则匹配
1234567891011# 查看启用的规则fail2ban-client status# 查看规则详情fail2ban-client status sshd# 重新加载配置fail2ban-client reload# 手动解禁IPfail2ban-client set sshd unbanip 192.168.1.1
配置文件目录
作用
/etc/fail2ban/jail.d
ban的规则,如多少次触发,触发后封禁多久等
/etc/fail2ban/filter.d
过滤规则,匹配日志的正则配置
规则测试创建配置文件/etc/fail2ban/jail.d/nginx-cc.conf
123456789[nginx-cc]enabled = trueport = http,httpsfilte ...
Windows下运行服务的几种方式
原生命令sc微软官方文档: https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/sc-create
第三方工具winsw 2.xhttps://github.com/winsw/winsw/releases/tag/v2.11.0
需要将winsw可执行文件和配置文件放在同一目录, 一般放在程序同级目录. 同样以frpc为例:
service.xml
12345678910111213141516171819202122232425262728293031323334353637383940414243<service> <id>frpc</id> <!-- Display name of the service --> <name>frpc Service (powered by WinSW)</name> <!-- Service description --> <des ...
Python遍历文件或文件夹
说明root: 当前遍历到的目录, 也就是所在的目录, 字符串dirs: 当前目录下的子目录列表files: 当前目录下的文件列表
比如文件结构 /tmp/1/ :
123451├── file1├── file2├── folder1└── folder2
脚本内容:
1234for root, dirs, files in os.walk("/tmp/1/"): print("root", root) print(dirs) print(files)
输出结果
123456789101112131415161718# 当前的root是/tmp/1/# root下的目录列表为:['folder2', 'folder1']# root下的文件列表为['file2', 'file1']# 遍历到的下一个root, 里面的文件和目录都为空./tmp/1/folder2[][]# 遍历到的下一个root/tmp/1/folder1[][]
遍历所有文 ...