我们为什么要用容器(或者说k8s)
起因或现状 公司准备上线 k8s 集群,目前在云上有微软 azure 托管的 aks,aks 上面的用来部署一些对外的业务,数据中心(有两个 - 移动和电信)是我自建的,主要是对内网服务 现在的问题是我们构使用的是 jenkins,构建方式和传统虚拟机发布没什么区别,只是换成了容器,简单来说就是: 传统发布(所有环境流程一致): 拉代码 - 构建 - 可执行文件上传服务器现在发布(所有环境流程一致): 拉容器镜像(基础环境) - 拉代码 - 构建 - 上传镜像仓库 所有环境的发布都需要准备一套环境,也就是说容器并没有解决我们的环境标准化的问题,比如: 我们的 jenkins 的 node 节点在数据中心、办公室内网、azure 云上都有,因为这些环境都需要构建一遍镜像围绕构建需要提供一些基础设施,比如我们 apt、maven、pypi 等的缓存服务(用的 nexus),容器镜像仓库(用的 jfrog)这些都需要在每个环境准备一套,每个服务还需要做高可用,简单算下来也有 6 个 nexus 和 4 个 jfrog 如果我们换成办公室构建完成,上传到公网的 jfrog...
使用 docker buildx 构建不同平台的镜像
一直使用 oracle 提供的免费 arm 云服务器,自己的 pc 又是 x86 架构,x86 构建出来的镜像不能在 arm 平台使用 使用 buildx 可以生成跨平台镜像,跨平台镜像就是同一个镜像名称,同一个 tag,但是 arm 机器和 amd64 机器拉下来的镜像 hash 是不一样的 创建 docker buildx 构建环境 这里的 driver 有两种,一种是 docker-container,一种是 docker,构建多平台版本只能使用 docker-container, –use 是将切换为默认 1docker buildx create --use --name buildx --node buildx --driver-opt network=host 准备 qemu 模拟器构建不通架构的镜像是通过 qemu 来模拟的,你会发现构建过程中,和 build 机器同架构的会构建很快,不同架构构建很慢。 12345678# 安装全部模拟器docker run --privileged --rm tonistiigi/binfmt --install...
使用certbot自动申请ssl证书
certbot 可以自动申请 let’s encrypt https 证书, 并且可以自动续期,另见:使用acme.sh来自动更新https证书 申请证书前准备添加 DNS 解析域名为你需要申请 https 证书的域名,添加 A 记录到服务器 IP 安装 certbot 和 certbot nginx plugin12sudo apt install certbotsudo apt install python3-certbot-nginx 申请证书1sudo certbot --non-interactive --redirect --agree-tos --nginx -d password.zahui.fan -m captain@zahui.fan 以上操作除了申请证书外,还可以自动添加 https 配置到 nginx,很方便。 证书续期1sudo certbot renew 添加到 root 用户的 crontab 里面就可以实现自动续期,距离到期时间太长会自动跳过续期 删除证书1sudo certbot delete
Systemd入门教程all in One
参考自https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html,感谢阮一峰老哥。同样可以看 Arch Wiki:systemd ,Arch Wiki 真的不错。 由来历史上,Linux 的启动一直采用 init 进程。 下面的命令用来启动服务。 123sudo /etc/init.d/apache2 start# 或者service apache2 start 这种方法有两个缺点。 一是启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。 二是启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。 systemd 的诞生Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。systemd 成为系统的第一个进程(也就是 PID=1),其他进程都是它的子进程。 systemd 包括的命令 systemd 不是一个命令,而是一组命令。比如...
Nginx反向代理wordpress并启用https
反向代理 wordpress 遇到了问题,nginx 不启用 https,反向代理没问题(wordpress 和 nginx 之间走 http),但是 nginx 启用了 https,页面上的样式就没有了,f12 查看,发现 js 和 css 走的还是 http,所以 404 根本原因:wordpress 代码里没有开启 https,(wordpress 认为自己是被 http 访问的,毕竟 nginx 是通过 http 来访问它的) 修改 wordpress 配置 感觉这种方案最靠谱,谁的债谁来还。。 在 wp-config.php 的 if ( ! defined( ‘ABSPATH’ ) ) 前面添加: 123$_SERVER['HTTPS'] = 'on';define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN', true); 如果是官方 Docker 容器的话强烈建议 Nginx 的 location...
openSUSE常用配置
安装 vscode12345sudo rpm --import https://packages.microsoft.com/keys/microsoft.ascsudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/zypp/repos.d/vscode.repo'sudo zypper refreshsudo zypper install code 安装 vmware workstation1sudo zypper install gcc gcc-c++ kernel-source kernel-syms 然后正常安装...
通过inode删除文件
有时候会有一些文件名是乱码的文件无法删除,这时候可以通过 inode 来删除。 获取文件的 inode1ls -ali 第一列就是文件的 inode 通过 inode 删除1find -inum 527084 -exec rm -rf {} \;
Bash中双横线的作用
看个例子: 假设有个文件叫 -f, 我想把这个文件删除假设我要用 rm -f -f 来删除,会发现无法删除,bash 把第二个 -f 当作参数了 这个时候可以使用 --(当然有其他方法,这里先不讨论) 1rm -f -- -f 这里的 -- 表示这个程序的参数已经结束了,后面所有的内容都是参数的值了,比如第二个 -f 就不会认为它是 rm 的参数了 现在使用 kubectl exec 也会推荐你用 – 后面再接上命令
Unix口令生成与使用
这个密码有什么用:/etc/shadow linux 用户密码就是通过这种方法 hash 的http basic auth 的密码也是通过这种方式生成的 通过 openssl 生成执行 1234567891011# ubuntuopenssl passwd -6 123456参数的含义: -6 SHA512-based password algorithm -5 SHA256-based password algorithm -apr1 MD5-based password algorithm, Apache variant -1 MD5-based password algorithm# centosopenssl passwd -1 123456 就能生成一串字符串,其中参数 6 是最长的,1 是最短的,后面 123456 是要加密的密码仔细观察会发现每次生成的密码都是不同的,那是因为每次执行 openssl...
在没有密码的情况下给Windows植入恶意软件(离线攻击)
什么是离线攻击,通俗点说就是电脑主人离开了电脑,黑客跑到电脑面前进行破解的方法🤣。这种破解方式主要是通过修改 Windows 的 SAM 文件来达到获取权限的目的。 Windows 的 SAM 文件Windows 的 SAM 文件(Security Accounts Manager)是一个用于存储本地用户账户和密码散列值的数据库文件。它在 Windows 操作系统中扮演着至关重要的角色,用于管理本地安全和账户信息。SAM 文件通常位于 C:\Windows\System32\config 目录中。 SAM 文件的原理 账户信息存储:SAM 文件包含了本地用户账户的信息,包括用户名和相关的安全标识符(SID)。每个用户都有一个唯一的 SID,用于标识用户和控制访问权限。 密码存储:为了安全起见,SAM 文件不直接存储用户的明文密码,而是存储密码的散列值。Windows 使用 NTLM(NT LAN Manager)协议生成这些散列值。具体而言,NTLM 采用 MD4 散列算法对用户密码进行散列。 加密保护:为了进一步保护 SAM 文件中的数据,Windows...