开发者社区> 问答> 正文

如何在 Knative 上实现 GitHub 事件处理?

如何在 Knative 上实现 GitHub 事件处理?

展开
收起
小天使爱美 2020-03-31 16:00:43 621 0
1 条回答
写回答
取消 提交回答
  • 本文介绍了如何在 Knative 上实现 GitHub 事件处理。

    前提条件 您已经成功部署 Serving 组件、Eventing组件及add-on组件,参见部署组件。 您已经在Knative上自定义域名并完成域名配置。参见Knative 自定义域名。 创建服务 登录容器服务管理控制台。 在 Kubernetes 菜单下,选择Knative > 服务管理,进入服务管理页面。 单击右上角的创建服务。 设置集群名称、命名空间、服务名称,选择所要使用的镜像和镜像版本等配置信息。 设置服务信息 说明 本示例中,界面参数取值参考如下: 服务名称:自定义该服务的名称。本例为github-event-display。 镜像名称:您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定。您还可以填写私有 registry。填写的格式为domainname/namespace/imagename:tag。本例中为registry.cn-shanghai.aliyuncs.com/knative-release/eventing-sources-event_display 。 镜像版本:您可以单击选择镜像版本选择镜像的版本。若不指定,默认为 latest。本例中为bf45b3eb1e7fc4cb63d6a5a6416cf696295484a7662e0cf9ccdf5c080542c21d。 界面其他参数详细信息请参见参数说明。 单击创建。 创建 GitHub Token 创建 Personal access token。 Personal access token用于访问 GitHub API。请参见Personal access tokens。 下面是设置一个 GitHubSource Sample token 的示例。创建github token 说明 需要开启 repo:public_repo 和 admin:repo_hook,以便通过公共仓库触发 Event 事件,并为这些公共仓库创建 webhooks 。 您可以自定义token 的名称。

    通过 kubectl 连接 Kubernetes 集群。 secretToken内容可以通过下述方式生成随机字符串。 head -c 8 /dev/urandom | base64 更新githubsecret.yaml。 如果生成的是 personal_access_token_value token,则需要设置 secretToken 。示例如下: apiVersion: v1 kind: Secret metadata: name: githubsecret type: Opaque stringData: accessToken: personal_access_token_value secretToken: asdfasfdsaf 执行如下命令,创建 GitHub Token。 kubectl --namespace default apply githubsecret.yaml 创建 GitHub 事件源 您可以创建 GitHubSource 用于接收 GitHub 产生的事件。

    通过 kubectl 连接 Kubernetes 集群。 创建并拷贝以下内容到github-source.yaml文件中。 apiVersion: sources.eventing.knative.dev/v1alpha1 kind: GitHubSource metadata: name: githubsourcesample spec: eventTypes: - pull_request ownerAndRepository: / accessToken: secretKeyRef: name: githubsecret key: accessToken secretToken: secretKeyRef: name: githubsecret key: secretToken sink: apiVersion: serving.knative.dev/v1alpha1 kind: Service name: github-event-display 执行以下命令,在命名空间default中创建 GitHubSource。 kubectl --namespace default apply github-source.yaml 执行结果 在 GitHub repository 中 Settings > Webhooks,查看会有一个验证成功的 Hook URL。 说明 域名需要备案,否则无法进行访问。 在 GitHub repository 中执行以下命令,创建一个 pull request,此时会产生Event事件。 kubectl --namespace default get pods kubectl --namespace default logs github-event-display-XXXX user-container 在 Knative Eventing 可以看到类似下面的事件结果。 2018/11/08 18:25:34 Message Dumper received a message: POST / HTTP/1.1 Host: github-event-display.knative-demo.svc.cluster.local Accept-Encoding: gzip Ce-Cloudeventsversion: 0.1 Ce-Eventid: a8d4cf20-e383-11e8-8069-46e3c8ad2b4d Ce-Eventtime: 2018-11-08T18:25:32.819548012Z Ce-Eventtype: dev.knative.source.github.pull_request Ce-Source: https://github.com/someuser/somerepo/pull/1 Content-Length: 21060 Content-Type: application/json User-Agent: Go-http-client/1.1 X-B3-Parentspanid: b2e514c3dbe94c03 X-B3-Sampled: 1 X-B3-Spanid: c85e346d89c8be4e X-B3-Traceid: abf6292d458fb8e7 X-Envoy-Expected-Rq-Timeout-Ms: 60000 X-Envoy-Internal: true X-Forwarded-For: 127.0.0.1, 127.0.0.1 X-Forwarded-Proto: http X-Request-Id: 8a2201af-5075-9447-b593-ec3a243aff52

    {"action":"opened","number":1,"pull_request": ...}

    2020-03-31 20:14:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载