ipunkt/rancherize

简化你的开发工作流程

2.51.3 2020-04-08 08:41 UTC

README

Latest Stable Version Latest Unstable Version License Total Downloads Docker Pulls Docker Build Status

Rancherize 是一个基于 symfony/console 的 PHP CLI 脚本。它使得没有特定知识的开发者也能轻松地使用 docker 和 rancher 进行开发。这是通过选择适合您应用所需环境的蓝图,并设置抽象需求而不是添加和连接服务来实现的。

关于配置如何通过这种方式变得更容易的具体示例,请参见本页底部的示例。

重要更新

从 2.23.0 版本开始,推送服务的默认行为已更改为在升级时始终拉取镜像。
可以通过在默认值或环境中设置 docker.always-pull: false 来禁用此功能。

作为 Docker 容器的使用(首选)

Rancherize 随 Docker 容器捆绑提供 ipunktbs/rancherize

要求

Rancherize 创建配置以用于外部 docker 工具。因此,要使用 Rancherize,必须安装以下工具

在 Linux 上安装

无需单独安装。要使用它,只需创建一个 shell 别名

alias rancherize='docker run -it --init -v $HOME/.rancherize:/home/rancherize/.rancherize -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):$(pwd) -w $(pwd) -e "USER_ID=$(id -u)" -e "GROUP_ID=$(id -g)" ipunktbs/rancherize:2-stable'

或使用提供的脚本 script/rancherize.sh

从现在起,除了 docker 以外,不要使用其他依赖项来使用 rancherize 进行本地环境。

在构建工具中的使用

对于 jenkins 或 gitlab-ci 等构建工具,您不能依赖于家目录中存在 .rancherize 文件。对于此用例,您可以在运行时通过环境变量在 docker 容器 上设置帐户设置。最佳实践是通过密钥将这些变量包含在内。

  • DOCKER_SERVER - 仓库服务器(例如 registry.gitlab.com),忽略或留空以使用 dockerhub
  • DOCKER_USER - dockerhub / 仓库的用户名
  • DOCKER_PASSWORD - dockerhub / 仓库的密码
  • DOCKER_ECR - 如果使用 AWS ECR
  • RANCHER_URL - rancher 环境的 api-url
  • RANCHER_KEY - rancher api-key
  • RANCHER_SECRET - rancher api-secret
  • RANCHER_ACCOUNTNAME_URL - 当使用 rancher.account = 'ACCOUNTNAME' 时使用的替代 rancher 环境api-url
  • RANCHER_ACCOUNTNAME_KEY - 当使用 rancher.account = 'ACCOUNTNAME' 时使用的替代 rancher api-key
  • RANCHER_ACCOUNTNAME_SECRET - 当使用 rancher.account = 'ACCOUNTNAME' 时使用的替代 rancher api-secret

请注意,当 RANCHER_URL 设置时,才会解析 RANCHER_ACCOUNTNAME_{URL,KEY,SECRET}。如果不设置默认帐户,则设置它们将不起作用。

在项目中使用

要求

Rancherize 创建配置以用于外部 docker 工具。因此,要使用 Rancherize,必须安装以下工具

安装

Rancherize 使用 composer 安装

composer require 'ipunkt/rancherize:^2.5.0'

配置

帐户

Rancherize 知道两种类型的帐户

  • docker 帐户。它们用于将镜像推送到 docker hub
  • rancher 帐户。它们用于将您的应用程序部署到您的 rancher 环境

它们都由 ~/.rancherize 中的 json 文件管理,该文件应仅对您的用户可读。
为了方便编辑,请使用以下命令。它会用您的 $EDITOR 打开文件,如果文件尚不存在,则会创建默认文件。

vendor/bin/rancherize rancher:access

环境

Rancherize 配置被分成 环境。一个典型的应用程序至少知道一个 本地 和一个 生产 环境。环境通过编辑应用工作目录内的 rancherize.json 文件进行配置。

注意,所有配置值也可以在 defaults 部分设置。如果配置值没有出现在 环境 中,将使用此部分的值。有关如何最佳使用环境的更详细解释,请参阅 环境和默认值

可以使用 init 命令为环境创建初始配置。
它会提示蓝图创建一个合理的默认生产配置。如果使用了 --dev 标志,则创建一个本地开发环境的配置。

vendor/bin/rancherize init [--dev] BLUEPRINT ENVIRONENTNAME1 ENVIRONEMNTNAME2... ENVIRONMENTNAMEX

e.g.
vendor/bin/rancherize init --dev webserver local
vendor/bin/rancherize init webserver production staging

设置环境变量

存在一个名为 environment:set 的命令,用于方便地为所有 环境 设置环境值。它将遍历所有 环境,显示当前值并询问新值。如果没有提供新值,则将再次使用旧值。

vendor/bin/rancherize environment:set VARIABLENAME

e.g.
vendor/bin/rancherize environment:set APP_KEY

开发环境

存在一个名为 start 的命令,用于在本地机器上启动应用程序的环境。

vendor/bin/rancherize start ENVIRONMENTNAME

e.g.
vendor/bin/rancherize start local

请注意,此命令目前不会从工作目录构建 docker 镜像,因此应将 环境 设置为直接挂载工作目录。对于 WebserverBlueprint,这意味着设置

  • "use-app-container": false
  • "mount-workdir":"true"

这些设置在用 --dev 标志初始化时包含在内

部署

推送

存在一个名为 push 的命令,用于将您工作目录的当前状态部署到 Rancher。

vendor/bin/rancherize push ENVIRONEMNT VERSION

e.g.
vendor/bin/rancherize push staging v1
  • 您工作目录的当前状态将构建为 docker 镜像,并标记为 $(docker.repository):$(docker.version-prefix)VERSION
  • 使用全局配置中名为 $(docker.account) 的凭据将构建的镜像推送到 docker hub
  • 检索 rancher 中堆栈的当前配置
    • 如果堆栈尚不存在,则创建一个空堆栈
  • 将应用程序配置添加到堆栈配置中
  • 将应用程序部署到堆栈中
    • 如果没有找到该服务的其他版本,则创建它
    • !NEW! 如果 rancher.in-service 设置为 true,则将触发滚动升级到非版本化名称,然后是此服务的在服务升级
    • 如果找到相同版本的服务,则触发在服务升级
    • 如果找到不同版本的服务,则触发滚动升级
    • 在服务升级的情况下,rancherize 等待堆栈达到 upgraded 状态并确认升级。
      您可以将 rancher.upgrade-healthcheck 设置为 true,以便等待它报告 healthy。请注意,这仅在服务具有健康检查定义的情况下有效(目前尚未通过 rancherize 支持)

构建镜像

存在一个名为 build-image 的命令,用于将您工作目录的当前状态构建到 docker 仓库,然后通过 push -i 将它们部署。这本质上与 push 命令相同,但不与 rancher 进行任何交互。

蓝图

蓝图中性配置

已知蓝图

开发蓝图

有关如何开发您自己的蓝图的更多信息,请参阅 蓝图说明文件

示例

示例列表