大约 2 个月前,我们向您展示了 MinIO 工程团队正在进行的一些酷炫项目,让您了解构建 MinIO 和支持客户的幕后工作。其中一个项目是 VM Broker。今天,我们将向您展示我们如何使用本地实验室来测试 MinIO 中的一些关键功能。本文的目标不仅是向您展示我们在实验室中如何测试 MinIO,还希望激励您提升实验室的技术和流程,从而让调试任何应用程序变得轻而易举。
今天我们将讨论两个重要的主题
运行操作员并部署租户
请务必查看关于 VM Broker 基础知识的 上一篇博文。在这个过程中,我们假设您已经阅读了该文章中的一些功能,并在此基础上进行构建。本演练展示了如何运行 minio-operator
脚本,deploy-tenant.sh。
我们使用现有的备份实例或新实例启动虚拟机。一旦实例从“实例”>“摘要”页面启动,我们获取 ssh 命令以访问该实例以设置保持活动状态并重启节点。这允许特定用户在引导时为该用户生成用户管理器,并在注销后保留。这使得未登录的用户可以运行长时间运行的服务,例如 Kubernetes。
ssh -p 30086 ubuntu@10.49.37.22
loginctl enable-linger ubuntu
sudo reboot -h now

登录以安装并验证 k3s。
ssh -p 30086 ubuntu@10.49.37.22
安装 k3s
sudo touch /dev/kmsg
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s - --snapshotter=fuse-overlayfs
sudo journalctl -u k3s.service
安装 Docker / Podman
sudo apt-get update
sudo apt-get install -y podman
sudo apt-get install -y podman-docker
sudo apt-get install -y python3-pip
sudo sed -i "s/# unqualified-search-registries.*/unqualified-search-registries\ =\ [\"docker.io\"]/" /etc/containers/registries.conf
pip3 install podman-compose --user --break-system-packages
安装 kind
和 go
。我们除了安装 k3s
之外还安装 kind
的原因是因为我们需要 kubectl
和 kind
来运行 deploy-tenant.sh
脚本
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.kubernetes.ac.cn/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
cd $HOME && mkdir go && cd go && wget https://golang.ac.cn/dl/go1.21.1.linux-amd64.tar.gz && sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
克隆并创建 minio-operator
git clone https://github.com/minio/operator.git
cd $HOME/operator
make binary
运行 deploy-tenant.sh
GITHUB_WORKSPACE=operator TAG=minio/operator:noop CI="true" SCRIPT_DIR=testing $HOME/operator/testing/deploy-tenant.sh
在检查 minio-operator
pod 时,打开另一个终端并运行
kubectl patch deployment -n minio-operator minio-operator -p '{"spec":{"template":{"spec":{"containers":[{"name": "minio-operator","image": "localhost/minio/operator:noop","resources":{"requests":{"ephemeral-storage": "0Mi"}}}]}}}}'
kubectl patch deployment -n minio-operator console -p '{"spec":{"template":{"spec":{"containers":[{"name": "console","image":"localhost/minio/operator:noop"}]}}}}'
验证 minio-operator
pod 正在运行
kubectl -n minio-operator get pods
当检查租户(例如命名空间 myminio)pod 时,打开一个新的终端窗口并运行
kubectl patch tenant -n tenant-lite myminio --type='merge' -p '{"spec":{"env":[{"name": "MINIO_BROWSER_LOGIN_ANIMATION","value": "false"}, {"name": "MINIO_CI_CD","value": "true"}]}}'
验证租户(例如命名空间 myminio)pod 正在运行
kubectl -n myminio get pods
就是这样!仅仅几分钟,我们就部署了一个可运行的 Kubernetes 集群以及 MinIO,这样我们就可以快速轻松地测试功能和调试问题。
实验室注意事项
在您设置 MinIO 测试平台时,最好牢记一些注意事项。确保您的 TCP 端口已标记,并且所需的范围可访问。在我们的案例中,我们确保以下内容可用
https: 443, 9000..9099, 30000..30099
http: 80, 10000..10099, 31000..31099
k8s 上 http/s 的节点端口可以从 30000..30099、31000..31099 范围内获取。

需要启用保持活动状态以在重启或会话注销之间持久化。这使得未登录的用户可以运行长时间运行的服务,例如 Kubernetes。
loginctl enable-linger ubuntu
Podman 有时会遇到以下错误
Error: creating container storage: creating read-write layer with ID "f018abe30704d95279f60d7ddf52bfeba241506974b498717b872c0fa1d1df41": Stat /home/ubuntu/.local/share/containers/storage/vfs/dir/a8dfe82502f73a5b521f8b09573c6cabfaedfd5f97384124150c5afd2eac1d3a: no such file or directory
要解决此问题,请运行以下命令
podman system prune --all --force && podman rmi --all
然后重新启动容器
docker run -itd \
-p 10050:9000 \
-p 10051:9090 \
--name minio1 \
-v /mnt/data/minio1:/data \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
quay.io/minio/minio server /data --console-address ":9090"
另一个注意事项是 podman-compose
不尊重网络指令。这意味着,例如在 IAM 实验室中,其 Docker 容器中的 LDAP 服务器将无法与其各自容器中运行的 minio
服务器进程通信。
为了解决此问题,请使用主机 LXC 容器 IP 地址在 LDAP 服务器和 minio
服务器之间进行通信。在创建 LDAP Docker 容器之前,请获取 LXC 主机私有 IP 地址
echo $(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
然后更改以下配置的值
components."org.keycloak.storage.UserStorageProvider".config.connectionUrl
最后的想法
这只是这种实验室设置所能做到的一个片段。我们使用这些实验室配置来测试新功能和集成,以及帮助我们在 SUBNET 门户中的客户。这种设置可以使用仅几个节点和商品硬件来实现。我们每天帮助人们不仅设置他们的实验室环境,因为沙箱环境中的集群至关重要,而且更重要的是客户的生产 MinIO 设置,我们的工程师会指导他们动手操作,以确保他们运行的是可扩展、高性能、可支持的 MinIO 集群。
如果您想自己构建酷炫的实验室,或者有任何关于将 MinIO 部署到生产系统的问题,请使用博客右下角的实时聊天与我们的专家联系,并通过发送电子邮件至 hello@min.io 了解有关我们的 SUBNET 体验的更多信息。