第 9 章 在集群中构建和部署功能


您可以直接在集群中构建功能,而不是在本地构建功能。在本地开发机器上使用此工作流时,您只需要使用功能源代码。例如,当您无法在集群功能构建工具(如 docker 或 podman)安装时,这非常有用。

9.1. 在集群中构建和部署功能

您可以使用 Knative (kn) CLI 启动功能项目构建,然后直接将功能部署到集群中。若要以这种方式构建功能项目,您的功能项目的源代码必须存在于可供集群访问的 Git 存储库分支中。

先决条件

  • 在集群中必须安装 Red Hat OpenShift Pipelines。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 Knative (kn) CLI。

流程

  1. 创建以下资源:

    1. 创建 s2i Tekton 任务,以便在管道中使用 Source-to-Image:

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.29.0/pkg/pipelines/resources/tekton/task/func-s2i/0.1/func-s2i.yaml
    2. 创建 kn func 部署 Tekton 任务,以便在管道中部署该功能:

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.29.0/pkg/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yaml
  2. 创建功能:

    $ kn func create <function_name> -l <runtime>
  3. 实施您功能的业务逻辑。然后,使用 Git 提交并推送更改。
  4. 部署功能:

    $ kn func deploy --remote

    如果您没有登录到功能配置中引用的容器 registry,系统会提示您为托管功能镜像的远程容器 registry 提供凭证:

    输出和提示示例

    🕕 Creating Pipeline resources
    Please provide credentials for image registry used by Pipeline.
    ? Server: https://index.docker.io/v1/
    ? Username: my-repo
    ? Password: ********
       Function deployed at URL: http://test-function.default.svc.cluster.local

  5. 要更新您的功能,使用 Git 提交并推送新的更改,然后再次运行 kn func deploy --remote 命令。
  6. 可选。您可以使用 pipelines-as-code 将功能配置为在每个 Git 推送后在集群中构建:

    1. 为您的功能生成 Tekton PipelinesPipelineRuns 配置:

      $ kn func config git set

      除了生成配置文件外,这个命令会连接到集群并验证是否已安装管道。通过使用令牌,它还会创建代表功能存储库的 Webhook。每次更改推送到存储库时,webhook 都会在集群中触发管道。

      您需要具有具有存储库访问权限的有效 GitHub 个人访问令牌,才能使用此命令。

    2. 提交并推送生成的 .tekton/pipeline.yaml.tekton/pipeline-run.yaml 文件:

      $ git add .tekton/pipeline.yaml .tekton/pipeline-run.yaml
      $ git commit -m 'Add the Pipelines and PipelineRuns configuration'
      $ git push
    3. 在对功能进行更改后,提交并推送它。该函数通过使用创建的管道自动重新构建。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.