17个版本 (4个稳定版)
1.0.3 | 2021年12月2日 |
---|---|
1.0.2 | 2021年10月30日 |
0.3.0 | 2021年9月10日 |
0.2.0 | 2021年9月4日 |
0.1.2 | 2021年8月31日 |
#2221 in 开发工具
每月下载量 43次
57KB
1K SLoC
Bovine
使用单个二进制文件 bovine
管理单个节点 Rancher 集群。
% bovine run
Pulling [rancher/rancher:latest], this may take awhile...
Rancher container is running: ead7ff0c711a
% bovine list
ead7ff0c711a [rancher/rancher:latest] (running) > Up 5 seconds
% bovine stop --all
Stopped Rancher container: ead7ff0c711a
描述
bovine
同时设计为Rancher(和Kubernetes)的易于使用的入门级工具,以及为熟悉单个节点Rancher集群的资深用户提供的有效管理器。它通过直接与Docker守护进程通信来创建、升级、停止、删除和管理单个节点Rancher集群。
- 新用户Rancher或Kubernetes?
bovine
旨在成为尝试这两种技术(Rancher和Kubernetes)的第一步。- 熟悉Docker但不太熟悉Kubernetes或Rancher的用户会感到非常亲切。
- 创建您的第一个集群需要一些工作。只需确保Docker正在运行,然后执行
bovine run
,导航到您喜欢的浏览器,并访问127.0.01
。
- 高级用户?
- 单个节点Rancher安装对于尝试新的Rancher版本、为开发提供下游集群和一般实验室用途非常有用。
bovine
是为多平台使用设计的(无需维护Bash和PowerShell脚本)。- 自带Docker镜像,指定自己的Docker套接字位置,选择一些标志,测试和升级场景,无需查阅文档。
先决条件
bovine
的唯一先决条件是 Docker守护进程。根据您的喜好自定义Docker安装,因为 bovine
不需要Docker CLI,并且可以使用自定义套接字路径。
安装
安装 bovine
有三种主要方法。
Cargo(推荐)
bovine
设计用于在任何一级Rust平台上工作,并具有对Docker守护进程的访问权限。您可以使用 cargo
安装和升级应用程序。
cargo install bovine
使用 cargo-update 可以轻松保持软件包的更新。
cargo install cargo-update
cargo install-update -a
cargo
可以通过 rustup(推荐)或您首选的包管理器安装。
Homebrew安装(仅限macOS)
brew install nickgerace/nickgerace/bovine
注意:此tap可能不与Linuxbrew兼容。
发布版本的二进制文件
如果您不想安装cargo
,您可以从发布页面下载二进制文件。以下便利脚本可以在macOS和Linux amd64
系统上使用(需要已安装wget
、jq
和curl
)
(
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
if [ "$OS" = "linux" ]; then OS=linux-gnu; fi
LATEST=$(curl -s https://api.github.com/repos/nickgerace/bovine/releases/latest | jq -r ".tag_name")
wget -O bovine https://github.com/nickgerace/bovine/releases/download/$LATEST/bovine-$OS-amd64
chmod +x bovine
sudo mv bovine /usr/local/bin/bovine
)
用法
默认情况下,bovine run
将创建并运行一个具有常用设置的Rancher容器。使用以下命令查看所有选项
% bovine run --help
有关更多信息,请参阅官方Rancher单节点文档。
关于保存设置以供将来使用怎么办?您可以使用有效的JSON来实现。让我们将其保存到文件中。
% bovine run --dry-run > dry.json
您还可以获取容器(无论其是否正在运行)的配置和状态。由于此信息已打包成JSON,让我们将其保存到另一个文件中。
% bovine get ead7ff0c711a > get.json
在测试这些命令时,我们可能已经构建了许多Rancher容器。让我们从头开始。
% bovine stop --all --delete
Stopped Rancher container: ead7ff0c711a
Deleted Rancher container: ead7ff0c711a
Deleted volumes for container: ead7ff0c711a
Container not modified (may have already been stopped): d39cca6514d8
Deleting Rancher container: d39cca6514d8
Deleted volumes for container: d39cca6514d8
现在有新的Rancher版本发布了!让我们将我们的stable
Rancher实例升级到latest
。
% bovine upgrade bc3ad1bf4fd7 latest
Stopped Rancher container: bc3ad1bf4fd7
Created temporary container for volume backup: b6f3adef1c23
Image found locally: [rancher/rancher:latest]
Rancher container is running: 9cf5f2ead13d
Upgrade from [rancher/rancher:stable] to [rancher/rancher:latest] complete
忘了您唯一的bovine
容器的名字?没问题。
% bovine upgrade $(bovine list --short) latest
当使用latest
标签(bovine run
的默认值)发布新的Rancher版本时,您可能需要强制拉取镜像。
% bovine run --force-pull
当使用本地主机隧道(例如ngrok)时,您可能需要设置--no-cacerts
以使供应正常工作。
% bovine run -n
如果您正在使用Rancher >=v2.6,您可能需要找到引导密码才能访问仪表板。
% bovine bootstrap-password --wait
您还可以在启动时设置引导密码。
% bovine run -b <password>
故障排除
如果我们需要检查一个活动集群,我们可以查看其容器日志。
% bovine logs 8fccc0c04184 --follow
我们还可以将日志导出到文件。
% bovine logs 8fccc0c04184 > bovine.log
如果您发现了一个可能与Rancher无关的bug,您可以将版本信息锁定以深入了解。让我们打印出这些信息,只是为了熟悉一下。
% bovine version
{
"bovine": {
"version": "1.0.0",
"os/arch": "linux/x86_64"
},
"docker": {
"version": "20.10.9",
"os/arch": "linux/amd64",
"api-version": "1.41",
"linux-kernel-version": "5.10.0-1049-oem",
"git-commit": "79ea9d3"
}
}
如果您正在使用自定义套接字路径,bovine
将确认信息是从那里收集的。让我们在Linux主机上尝试一下。
% bovine --docker-socket-path /foo/bar/docker.sock version
{
"bovine": {
"version": "1.0.0",
"os/arch": "linux/x86_64"
},
"docker": {
"version": "20.10.9",
"os/arch": "linux/amd64",
"api-version": "1.41",
"linux-kernel-version": "5.10.0-1049-oem",
"git-commit": "79ea9d3",
"docker-socket-path": "/foo/bar/docker.sock"
}
}
也许Docker是您故障排除会话中的问题?bovine
无论如何都会打印一些版本信息。
% bovine version
{
"bovine": {
"version": "1.0.0",
"os/arch": "linux/x86_64"
},
"docker": {
"error": "could not connect to docker (check if docker is running)"
}
}
Windows
如果您在原生Windows二进制文件上遇到问题,以下提示可能有助于解决问题
- 在执行
bovine
二进制文件时,可能需要安装并使用PowerShell 7.1+。 - 用户可能需要在他们选择的浏览器中导航到
host.docker.internal
而不是localhost
。 - 由于Rancher目前不支持本地集群的原生Windows镜像,因此必须配置Docker以部署Linux容器。
其他
您可能会注意到bovine
在特权模式下运行Rancher容器。自Rancher v2.5以来,这是必需的(并不是bovine
的要求)。更多信息可以在官方文档中找到。
为什么我应该使用这个而不是我的当前工作流程?
在这里我们可以自由讨论。这难道不就是Bash脚本加上docker
CLI命令的华丽版本吗?bovine
确实利用Docker守护进程作为其“引擎”,但其设计远不止于此。以下是一些可能提供背景信息的笔记
bovine
未来可能会使用其他容器运行时。- 在这种情况下,用户可以选择多个运行时(取决于主机操作系统)。
- 多平台支持是至关重要的,但对于一个旨在成为尝试Rancher和/或Kubernetes“第一步”的应用程序来说,尤其如此。
- 错误处理、可维护性、用户体验和“可重构性”是其设计的核心。
- 即使上述观点不存在,
bovine
也试图使Kubernetes和/或Rancher对新手来说更容易。- 有时,一个小抽象就能在尝试和使用底层软件之间做出区别。
bovine
提供一键自动化,例如停止、删除和删除容器卷,而不会影响其他容器,也不检查ID。
免责声明
bovine
目前不是官方的SUSE或Rancher Labs产品。虽然它旨在在其他目的中用于“实际应用”,例如本README
中描述的,但它是由独立维护的。
依赖项
~12–23MB
~332K SLoC