用 ArgoCD 把 OKE 集群从 Flannel 迁移到 Cilium:一次 GitOps 实践
网上关于「OKE 把 CNI 从 Flannel 换成 Cilium」的教程不少,比如 Pratik Borkar 的这篇 和 Oracle 官方的 Learn 教程,写得都很扎实。但它们都是「站在一台笔记本前敲命令」的视角:helm repo add、手改一份几百行的 cilium.yaml、helm install,最后再手动 kubectl delete daemonset kube-flannel-ds——这一步在我们的场景里其实行不通(下面第 6 步会讲为什么)。 这套流程在一个集群上没问题。但当你手上有好几个 OKE 集群——生产、生产的第二个 region、专门跑 ops 组件的集群、还有 QA 环境——手工敲命令的方式很快就会出问题:配置漂移(这个集群改了参数忘记同步到那个集群)、没有变更记录(谁在什么时候把 kubeProxyReplacement 打开的?)、也没有办法方便地做 diff/回滚。 所以这篇文章记录的是我们实际在生产里怎么做的:用 ArgoCD 的 ApplicationSet,把 Cilium 的安装和多集群管理全部变成...
在MacBook M2上构建多架构Docker镜像
在最新的MacBook M2笔记本上,你可能希望构建能够在多种架构上运行的Docker镜像。由于M2芯片基于ARM架构,这为我们提供了一个理想的环境来构建和测试多平台镜像。以下是在MacBook M2上构建多架构Docker镜像的步骤。 1. 安装Docker Desktop for Mac首先,确保你已经安装了最新版本的Docker Desktop for Mac。这个版本的Docker Desktop专为Apple Silicon优化,并支持多平台构建。 2. 创建Buildx构建器使用以下命令创建一个新的Buildx构建器实例,指定你想要支持的平台: 1docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder 3. 构建多平台镜像使用docker buildx build命令来构建多平台镜像。例如: 1docker buildx build --platform=linux/arm64,linux/amd64 --push --tag...
在 Kubernetes 中使用 External-DNS 管理域名
简介在 Kubernetes 集群中,管理域名和将服务公开到外部网络是一个关键的任务。External-DNS 是一个强大的工具,它允许您通过 Kubernetes 资源来自动管理域名。这篇文章将介绍如何在 Kubernetes 中使用 External-DNS,以便轻松地将服务关联到域名,并确保域名与服务的 IP 地址保持同步。 接下来我就以我自身的一个实际用例来介绍一下。 安装 External-DNS首先,您需要安装 External-DNS 到您的 Kubernetes 集群。可以使用 Helm 来简化这个过程。执行以下命令: 1234helm repo add bitnami https://charts.bitnami.com/bitnamihelm install external-dns bitnami/external-dns \ --set provider=your-dns-provider \ --set provider.apiKey=your-api-key 请替换 your-dns-provider 和 your-api-key 为您的...
极路由hc5761刷openwrt
本篇进入主题,将按照以下步骤把极路由HC5761刷成opentwrt系统。 root路由器,开启SSH 输入bread 进入bread模式,修改mac地址 在bread模式中刷入openwrt固件 博主的操作环境电脑: MacBook系统: MacOS Ventura v13.6路由器: Hiwifi HC5761版本: 0.9012.1.9277s root路由器,开启SSH博主在这里整理了三种方法 1.纯手动操作 访问http://192.168.199.1/local-ssh/ 获取local_token 访问http://192.168.199.1/cgi-bin/turbo/proxy/router_info地址,在返回的json中找到uuid, 返回https://www.hiwifi.wtf/网站,填入local_token和uuid提交后就可以获得cloud token 进入路由器http://192.168.199.1/local-ssh/页面,填入第三步获取到的cloud token,提交后即可看到提示Success: ssh port is...
什么是基础设施即代码(IaC)
基础设施即代码简介基础设施即代码(IaC[Infrastructure as Code])是通过代码而非手动流程来管理和置备基础设施的方法。 利用 IaC 我们可以创建包含基础设施规范的配置文件,从而便于编辑和分发配置。此外,它还可确保每次置备的环境都完全相同。通过对配置规范进行整理和记录,IaC 有助于实现配置管理,并避免发生未记录的临时配置更改。 版本控制是 IaC 的一个重要组成部分,就像其他任何软件源代码文件一样,配置文件也应该在源代码控制之下。以基础设施即代码方式部署还意味着您可以将基础架构划分为若干模块化组件,它们可通过自动化以不同的方式进行组合。 借助 IaC 实现基础架构置备的自动化,意味着开发人员无需再在每次开发或部署应用时手动置备和管理服务器、操作系统、存储及其他基础架构组件。对基础架构编码即可创建一个置备用的模板,尽管置备过程仍然可以手动完成,但也可以由自动化工具为您代劳。 IaC 的声明式方法与命令式方法IaC 有两种实施方法:声明式或命令式。 声明式方法定义了系统的预期状态,包括所需的资源以及它们应具有的属性,随后 IaC 工具会为您进行相关配置。...
在mac上使用DBI安装游戏
博主因为工作的缘故,已经使用mac电脑7~8年了。要说有些工具,确实有windows会方便不少。但并不代表mac就做不了。就比如给Switch安装游戏来说。mac依然可以胜任这里就有两种方式: 在mac下安装windows虚拟机,然后在虚拟机中连接DBI给switch安装游戏。 原生mac系统使用”安卓传输助手”或”commander one pro” 方式2是本篇文章的重点 安卓传输助手本章节主要介绍的是使用安卓传输助手给switch安装游戏。下载地址我会放到文章的最后。点开安卓传输助手后显示如下图。这里表示我们还没有连接任何的设备 按照下面步骤打开switch上的dbi软件 点开相册 点选DBI 给switch安装游戏 运行MTP服务 运行MTP服务后,会提示我们将switch和电脑连接上。我们根据提示将switch和电脑通过数据线连接上,之后显示如下现在我们回到电脑上,看到安卓传说助手也连接上了。如图所示 开始安装游戏 接下来,如上图,点击”5:SD Card...
使用pyenv-virtualenv管理python虚拟环境
pyenv-virtualenv 是一个用于管理 Python 版本和虚拟环境的工具。通过 pyenv-virtualenv,您可以轻松地创建和管理多个 Python 版本,并为每个版本创建独立的虚拟环境。 要使用 pyenv-virtualenv,您需要先安装 pyenv。安装方法可以参考这里然后,您可以使用 pyenv-virtualenv 插件来创建和管理虚拟环境。使用该插件,您可以为每个项目选择特定的 Python 版本,并在每个项目的环境中安装特定的库和依赖。 通过 pyenv-virtualenv,您可以避免在全局安装 Python 包时出现版本冲突的问题,并且能够在不同项目中使用不同的 Python 版本和依赖。 总之,pyenv-virtualenv 是一个方便的工具,能够帮助您轻松管理 Python 版本和虚拟环境,使项目开发更加灵活和高效。 安装方法一:Git Clone12cd .pyenv/pluginsgit clone https://github.com/pyenv/pyenv-virtualenv.git #...
Mac上pyenv的安装及使用
pyenv 是一个 Python 版本管理工具,可以让您在系统中轻松管理多个 Python 版本。通过 pyenv,您可以安装不同的 Python 版本,并针对特定项目或需求使用不同的 Python 版本。此外,pyenv 还可以管理全局 Python 版本和本地项目特定版本,让您能够更加灵活地管理 Python 环境。这可以帮助开发人员避免由于不同的项目需要不同版本的 Python 而引起的兼容性和依赖性问题。 安装安装pyenv在这里,使用Homebrew来安装pyenv,如果mac上还没有安装Homebrew,请参考这里 12brew updatebrew install pyenv 为pyenv配置shell环境本博主使用的是zsh环境,所以本篇文章仅以zsh为例,如需要配置其他shell环境,请参考这里 123echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrcecho '[[ -d $PYENV_ROOT/bin ]] && export...
极路由hc5761刷openwrt 之 刷原厂固件
博主手中有一台老物件,极路由Hiwifi HC5761,奔着物尽其用的原则。就想着拿它来刷个openwrt做一个旁路网关,网上搜索了一番,刷openwrt共分成以下几个步骤。 root路由器,开启SSH 输入bread 进入bread模式,修改mac地址 在bread模式中刷入openwrt固件 由于极路由厂家早就黄了,极路由的插件市场也早就不再可用,好在网上还是找到了临时开启ssh的方法,使用https://www.hiwifi.wtf/网站提供的方法,只需要本机访问http://192.168.199.1/cgi-bin/turbo/proxy/router_info地址,就可以获取到极路由uuid,并结合local_token就可以活得cloud token,然后就可以开启ssh了。 但经过博主的多方测试。http://192.168.199.1/cgi-bin/turbo/proxy/router_info 得到的结果如下: 123456789101112131415161718192021{ "code": 0, ...
使用Golang处理POST请求中的JSON数据
在Golang中,我们经常需要处理来自POST请求的JSON数据。处理JSON数据有多种方法,本文将介绍两种常用的方法:使用json.NewDecoder和使用json.Unmarshal。 使用json.Unmarshal一种处理POST请求中的JSON数据的常用方法是使用json.Unmarshal函数。该函数将JSON数据解析为结构体对象,具体示例如下: 1234567891011121314151617181920212223242526272829import ( "encoding/json" "net/http")type User struct { Name string `json:"name"` Email string `json:"email"`}func handleRequest(w http.ResponseWriter, r *http.Request) { body, _ :=...
