用于在S2I图像中工作的powershift命令插件。

powershift-image的Python项目详细描述


此包为powershift命令行客户端提供插件 其中包含用于帮助构建和运行python的命令 基于s2i的openshift图像。

这包括添加openshift v2风格的动作挂钩和作业脚本, 以及额外允许环境变量 为生成和部署动态设置。附加挂钩 可以提供与生成后验证映像相关的脚本, 执行应用程序所需数据的初始设置,数据 使用更新的应用程序源代码在部署上迁移,准备就绪 检查和活性检查。还提供了用于启动 交互式shell或运行与 应用程序与一起部署。

此包要求同时安装powershift-cli包。 安装powershift-cli包和powershift命令 包含在该包中的行程序,以及该插件,您应该 使用pip安装包powershift-cli[image],而不是 只要powershift-image

请注意,此包仅在构建和 使用python s2i将正在构建的应用程序部署到映像中 建设者。在你的个人发展中安装它是没有意义的 环境,因为它依赖于python的特定环境 s2i生成器映像及其如何向该映像添加应用程序源代码 在构建过程中。

安装包以供使用的正常方式是 到正在使用的应用程序源代码的.s2i/bin/assemble脚本 使用python s2i生成器:

#!/bin/bash
pip install --no-cache-dir powershift-cli[image]
exec powershift image assemble

还将创建相应的.s2i/bin/run脚本 包含:

#!/bin/bash
exec powershift image run

这两个脚本都应该是可执行的。

插件提供的所有其他命令都将在 python s2i构建器创建的运行容器这些脚本 成立于。

有关如何安装powershift命令行程序的详细信息 以及可用的插件请参见:

可用命令

要查看所有可用的命令,可以使用 powershift image

Usage: powershift image [OPTIONS] COMMAND [ARGS]...

  Assemble S2I based image and run application.

  Extends S2I based image build and execution to incorporate action
  hooks which can customize installation and setup of the application,
  as well as the environment used when the application is run.

  Provides the means to create an interactive shell or run commands in
  the container with the same environment as the application.

  Also, allows the manual running of custom action hooks for initial
  setup of data, run data migration when updating to a new version of
  the application, verify an application after a build, test for
  readiness or liveness of an application.

Options:
  --help  Show this message and exit.

Commands:
  alive     Trigger action hook which tests if alive.
  assemble  Runs the build process for the image.
  exec      Run a command with application environment.
  jobs      Run job scripts in specified category.
  migrate   Triggers action hook to migrate any data.
  ready     Trigger action hook which tests if ready.
  run       Runs the application built into the image.
  setup     Triggers action hook to setup any data.
  shell     Create a shell with application environment.
  verify    Trigger action hook which verifies image.

动作钩类型

在openshift v2下,提供的动作挂钩是:

  • pre_build-在生成应用程序人工制品之前执行。
  • build-在生成应用程序人工制品之后执行。
  • deploy-在启动应用程序之前执行。
  • post_deploy-在应用程序启动后执行。

除了post_deploy之外,其他所有钩子都可以很容易地实现 在v3中。无法实现post_deploy的原因是 使用Docker时,应用程序通常作为进程运行 身份证1。也就是说,在运行中通常不使用流程管理器 码头集装箱。

由于没有总体的流程管理器,因此很难 在应用程序作为应用程序启动后运行 实际上保持控制,不在后台运行。解决方案,如 在后台运行post_deploy,由于睡眠而延迟,不是 实际操作,因为您不能确定应用程序是否已实际启动 在运行之前正确。

如果需要,像post_deploy这样的东西最好在 容器,使用openshift的特性,比如生命周期挂钩。

以及不实现post_deploy,个人经验 在python中工作表明,在 与添加了附加功能的v2略有不同。为了这个 尽管我们必须在 openshift v2因为无法打开原始的s2i assemblerun脚本来插入其他挂接点。这个 确实对pre_build施加了某些限制,如下所述。

两个新动作钩t是通过build_envdeploy_env。从技术上讲,这些不是钩子脚本 现有的OpenSHIFT V2操作是。这是因为他们不会 作为不同的进程执行,但内联到替换的assemble 以及run脚本。他们的目的是允许额外的环境 要动态设置的变量。这在需要设置时很重要 基于信息提取的动态环境变量 作为生成过程的一部分安装的包。

最后还允许使用runaction钩子。如果提供的话 取代s2i生成器中提供的run脚本。这是预料之中的 它运行要部署的应用程序。它不能再回来了 必须确保应用程序运行继承脚本的进程ID。

使用动作挂钩

要添加自己的动作挂钩,请根据需要创建以下文件:

  • .s2i/action_hooks/pre_build
  • .s2i/action_hooks/build_env
  • .s2i/action_hooks/build
  • .s2i/action_hooks/deploy_env
  • .s2i/action_hooks/deploy
  • .s2i/action_hooks/run

pre_buildbuilddeployrun脚本都必须是 可执行。这是必要的,因为Docker对某些文件的支持有缺陷 系统。assemble脚本无法执行chmod +x 在脚本上运行之前。如果你忘记了行动的实施 提供的钩子会警告你。

pre_buildbuilddeployrun脚本通常 是shell脚本,但技术上可以是任何可以执行的程序 跑去做你需要的事。如果使用shell脚本,建议 设置:

set -eo pipefail

这样脚本将很快失败,并将错误传播回 assemblerun脚本。你可以打印这些邮件 脚本(如果需要)以帮助调试。

build_envdeploy_env脚本必须是shell脚本。是的 不需要是可执行的,也不需要有#!行。他们将被处决 内联到assemblerun脚本,被解释为 bash脚本。

这些build_envdeploy_env脚本可用于设置 需要设置的环境变量。不需要出口 变量作为脚本中设置的任何变量将自动 出口。作为shell脚本计算,可以包括shell逻辑或 使用内联参数替换。您可以这样做:

LOGLEVEL=${LOGLEVEL:-1}

只要记住如果包含复杂的逻辑 临时变量,它们将被自动导出。你也许希望 使用shell函数和bash局部变量来限制 导出到全局范围内设置的任何对象。

您不应该打印来自deploy_env的任何消息 对任何shell会话执行,输出可能会干扰结果 使用powershift image exec运行一次性命令时。

对于pre_buildaction钩子,请注意,与v2不同, 应用程序源代码不会复制到该位置 要点。如果此脚本需要引用随 应用程序源代码,它需要从 /tmp/src在将它们移动到 通过原始assemble脚本更正位置。

运行操作命令

除了在构建和 部署应用程序时,还可以提供附加的操作挂钩 可以用特定的命令执行。这些是:

  • verify-用于验证图像的命令。会从 postCommit生成配置在映像之前测试映像的操作 在部署中使用。
  • ready-用于测试应用程序是否准备好接受的命令 请求。将从部署的就绪状态检查运行 配置。
  • alive-用于测试应用程序是否仍在运行的命令 可以。将从部署的活动健康检查运行配置。
  • setup-初始化应用程序的任何数据的命令,包括 也许是建立一个数据库。将手动运行,或由 对多次运行的检查可以从^{tt14}运行$ 动作挂钩脚本。
  • migrate-执行任何数据迁移的命令,可能包括 正在更新数据库。如果使用 重新创建部署策略,或者从deployaction hook脚本 它不是可扩展的应用程序,也不使用滚动部署。

一个具有相应名称的适当可执行脚本将被添加到 .s2i/action_hooks目录。它将与相应的 powershift image的子命令。在所有情况下,deploy_env脚本 将获得资源以确保环境变量与 用于部署应用程序的也用于这些。

使用这些由命令触发的动作挂钩的好处是 在构建或部署中只需要列出不变的action命令 配置(如果需要)。这样就可以对 是从钩子脚本运行的,不需要确保更新 生成或部署配置与对 应用程序源代码。

执行cron作业脚本

在openshift v2下,除了action hooks机制之外,它还 可以提供一组脚本,以便通过 cron在openshift环境中运行。

此脚本不提供cron的替换,但提供 用于在指定的 类别,例如“小时”。此命令可以在不同的 从openshiftcronjob或 在实现 类似cron的功能。

作业脚本的类别名称没有限制,但是 作为起点,建议您使用下面支持的相同名称 openshift版本2。对于要使用的每个类别,创建一个子目录 在.s2i/jobs下。例如:

  • .s2i/jobs/minutely
  • .s2i/jobs/hourly
  • .s2i/jobs/daily
  • .s2i/jobs/weekly
  • .s2i/jobs/monthly

在该子目录中,添加作业脚本并生成脚本文件 可执行。例如,如果您运行的web应用程序 django,您可以创建cron作业脚本:

.s2i/jobs/hourly/clearsessions

可执行脚本文件的内容包含:

#!/bin/bash

set -eo pipefail

python manage.py clearsessions

openshiftcronjob中使用的命令设置为每小时执行一次 然后是:

powershift image jobs hourly

交互式shell和命令

如果需要使用与 部署的应用程序,使用powershift image shell。执行一次性 命令,使用powershift image exec并提供 程序和选项作为参数。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
固件文件的java容器:二进制数据部分的集合   java如何查找和跳过单词开头和结尾的特殊字符   JavaFXMaven插件:com。zenjava jfx:jar是否包含所有依赖项?   用户界面使Java Netbeans GUI生成器在读取文本文件的某些部分之前等待事件发生   由于Kotlin中存在未解析的引用,java无法设置文本或可绘制   java JSON解析嵌套数组对象   java如何使用Hibernate(EntityManager)或JPA调用Oracle函数或过程   链接列表末尾的java插入节点   jaxb EclipseLink Moxy:Java类型绑定不使用子类型(组合)   java为什么选择事件源模式中的事件流?   java为什么我的Eclipse项目与ClearCase没有关联?   通过Talend正确完成java数据库迁移   java如何自动调用数字键盘?   swing Java反射,投射到未知对象?   正则表达式如何在java中提取文本文件的键和值?   java rmi应用程序   线程“main”java中出现异常。lang.NoClassDefFoundError在我的测试中出现错误   java open失败:API 21中的EACCES(权限被拒绝)   java(RxJava)移植的Groovy方法不起作用   java AndroidStudio:如何在片段中移动按钮