Skip to content

Commit

Permalink
translate to chinese
Browse files Browse the repository at this point in the history
  • Loading branch information
gofenix committed Dec 26, 2021
1 parent 431f960 commit 8f8ff41
Show file tree
Hide file tree
Showing 13 changed files with 3,177 additions and 0 deletions.
187 changes: 187 additions & 0 deletions translations/cn/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
# openfaas-workshop

这是一个自定进度的研讨会,学习如何使用 OpenFaaS 构建、部署和运行无服务器函数。

![](https://github.com/openfaas/media/raw/master/OpenFaaS_Magnet_3_1_png.png)

在这个研讨会中,你将首先把 OpenFaaS 部署到你的笔记本电脑或使用 Docker for Mac 或 Windows 的远程集群。然后你将对 OpenFaaS 的用户界面、CLI 和函数商店进行测试。在用 Python 构建、部署和调用你自己的无服务器函数之后,你将继续学习以下内容:用 pip 管理依赖关系,通过安全secret处理 API 令牌,用 Prometheus 监控函数,异步调用函数以及将函数连接起来创建应用程序。实验的高潮是让你创建自己的 GitHub 机器人,可以自动响应问题。同样的方法可以通过 IFTTT.com 连接到在线事件流--这将使你能够建立机器人、自动回复器以及与社交媒体和物联网设备的集成。

最后,实验室涵盖了更多的高级主题,并给出了进一步学习的建议。

**译文**

* [日本語](./translations/ja)
* [简体中文](./translations/cn)

## 免费学习,作为 GitHub 赞助商表示感谢

OpenFaaS 连同这些材料都是免费提供的,需要时间和精力来维护。

* 成为[OpenFaaS on GitHub](https://github.com/sponsor/openfaas)的赞助商。

## 要求

我们在[Lab 1](./lab1.md)中讲解了如何安装这些需求。请在参加讲师指导的研讨会之前做[Lab 1](./lab1.md)

* 函数将用 Python 语言编写,所以有编程或脚本经验者优先。
* 安装推荐的代码编辑器/IDE [VSCode](https://code.visualstudio.com/download)
* 对于 Windows,安装[Git Bash](https://git-scm.com/downloads)
* 首选的操作系统。MacOS, Windows 10 Pro/Enterprise, Ubuntu Linux

Docker。

* Docker CE for [Mac](https://store.docker.com/editions/community/docker-ce-desktop-mac)/[Windows](https://store.docker.com/editions/community/docker-ce-desktop-windows) **边缘版**
* Docker CE for Linux

> 注意:作为最后的手段,如果你有一台不兼容的 PC,你可以在<https://labs.play-with-docker.com/> 上运行该研讨会。
## 教员指导的研讨会

如果你正在参加一个由教师指导的研讨会,那么我们将分享一个链接,以加入 OpenFaaS Slack 社区。使用研讨会的指定频道来讨论评论、问题和建议。

## 挑选你的路线

在实验室 1 中,你将选择你的路线,然后在整个实验室中注意你所需要的特殊命令。

### Kubernetes

你也可以使用 OpenFaaS 学习 Kubernetes 上的 Serverless。

OpenFaaS 社区的建议是,你在生产中运行 Kubernetes,但你的所有知识都是可以转移的,函数也不必重新构建。

## [Lab 1 - Prepare for OpenFaaS](./lab1.md)

* 安装前提条件
* 用 Kubernetes 建立一个单节点集群
* Docker Hub 账户
* OpenFaaS CLI
* 部署 OpenFaaS

## [Lab 2 - Test things out](./lab2.md)

* 使用 UI 门户
* 通过函数商店进行部署
* 了解 CLI 的情况
* 用 Prometheus 查找指标

## [Lab 3 - Introduction to Functions](./lab3.md)

* 架构或生成一个新的函数
* 建立 astronaut-finder 函数
*`pip`添加依赖性
* 故障排除:找到容器的日志
* 故障排除:用`write_debug`进行粗略输出
* 使用自定义和第三方语言模板
* 使用模板商店发现社区模板

## [Lab 4 - Go deeper with functions](./lab4.md)

* [通过环境变量注入配置](lab4.md#inject-configuration-through-environmental-variables)
* 在部署时使用 yaml
* 动态地使用 HTTP 上下文--查询字符串/头信息等
* 安全性:只读的文件系统
* [利用日志](lab4.md#making-use-of-logging)
* [创建工作流](lab4.md#creat-workflows)
* 在客户端串联函数
* 从另一个函数中调用一个函数

## [Lab 5 - Create a GitHub bot](./lab5.md)

> 建立 `issue-bot`--GitHub 问题的自动回复者
* 获得一个 GitHub 账户
* 用 ngrok 建立一个隧道
* 创建一个 webhook 接收器`issue-bot`
* 接收来自 GitHub 的 webhooks
* 部署 SentimentAnalysis 函数
* 通过 GitHub 的 API 应用标签
* 完成函数

## [Lab 6 - HTML for your functions](./lab6.md)

* 从一个函数生成并返回基本的 HTML
* 从磁盘读取并返回一个静态 HTML 文件
* 与其他函数协作

## [Lab 7 - Asynchronous Functions](./lab7.md)

* 同步地与异步地调用一个函数
* 查看队列工作者的日志

* 在 requestbin 和 ngrok 中使用`X-Callback-Url`

## [Lab 8 - Advanced Feature - Timeouts](./lab8.md)

*`read_timeout`调整超时时间
* 适配长时间运行函数

## [Lab 9 - Advanced Feature - Auto-scaling](./lab9.md)

* 查看自动缩放的操作
* 关于最小和最大副本的一些见解
* 发现并访问本地 Prometheus
* 执行和普罗米修斯查询
* 使用 curl 调用一个函数
* 观察自动缩放的启动

## [Lab 10 - Advanced Feature - Secrets](./lab10.md)

* 调整 issue-bot 以使用一个secret
* 用 faas-cli 创建一个 Kubernetes secret
* 在函数中访问secret

## [Lab 11 - Advanced feature - Trust with HMAC](./lab11.md)

* 使用 HMAC 对函数应用信任

你可以从第一个实验室[Lab 1](lab1.md)开始。

## 拆解/清理

你可以找到如何停止和删除 OpenFaaS[这里](https://docs.openfaas.com/deployment/troubleshooting/#uninstall-openfaas)

## 接下来的步骤

如果你在一个教师指导的研讨会上,并且已经完成了实验,你可能想回到实验室,编辑/修改代码和值,或者进行一些你自己的实验。

以下是一些后续任务/主题的想法。

### OpenFaaS 云

试试 OpenFaaS 的多用户管理体验--在社区集群上,或者通过托管你自己的 OpenFaaS 云。

* [Docs: OpenFaaS Cloud](https://docs.openfaas.com/openfaas-cloud/intro/)

### TLS

* [用 Kubernetes Ingress 在你的网关上启用 HTTPS](https://docs.openfaas.com/reference/ssl/kubernetes-with-cert-manager/)

### CI/CD

设置 Jenkins、Google Cloud Build 或 GitLab,使用 OpenFaaS CLI 构建和部署你自己的函数。

* [CI/CD 介绍](https://docs.openfaas.com/reference/cicd/intro/)

### 存储/数据库

* [用 Minio 尝试开源对象存储](https://blog.alexellis.io/openfaas-storage-for-your-functions/)

* [尝试用 Mongo 存储数据的 OpenFaaS](https://blog.alexellis.io/serverless-databases-with-openfaas-and-mongo/)

### 仪器仪表/监控

* [探索 Prometheus 中可用的指标](https://docs.openfaas.com/architecture/metrics/#monitoring-functions)

### 其他博文和教程

* [OpenFaaS 博客上的教程](https://www.openfaas.com/blog/)

* [社区博客文章](https://github.com/openfaas/faas/blob/master/community.md)

### 附录

[附录](./appendix.md)包含一些额外的内容。

## Acknowledgements

感谢@iyovcheva, @BurtonR, @johnmccabe, @laurentgrangeau, @stefanprodan, @kenfdev, @templum & @rgee0 对实验室的贡献、测试和翻译。
98 changes: 98 additions & 0 deletions translations/cn/lab1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Lab 1 - 为 OpenFaaS 做准备

<img src="https://github.com/openfaas/media/raw/master/OpenFaaS_Magnet_3_1_png.png" width="500px">

OpenFaaS 需要一个[Kubernetes](https://kubernetes.io)集群来运行。你可以使用一个单节点集群或多节点集群,不管是在你的笔记本电脑上还是在云端。

任何 OpenFaaS 函数的基本原件都是一个 Docker 镜像,它是使用`faas-cli`工具链构建的。

## 前提条件

让我们来安装 Docker、OpenFaaS CLI 以及设置 Kubernetes。

### Docker

适用于 Mac

- [Docker CE for Mac Edge Edition](https://store.docker.com/editions/community/docker-ce-desktop-mac)

适用于 Windows

- 仅使用 Windows 10 Pro 或企业版
- 安装[Docker CE for Windows](https://store.docker.com/editions/community/docker-ce-desktop-windows)

> 请确保通过使用 Windows 任务栏通知区的 Docker 菜单来使用**Linux**容器的 Docker 守护程序。
- 安装[Git Bash](https://git-scm.com/downloads)

当你安装 git bash 时,选择以下选项。`install UNIX commands``use true-type font`

> 注意:请在所有步骤中使用*Git Bash*:不要试图使用*PowerShell**WSL**Bash for Windows*
Linux - Ubuntu 或 Debian

- Docker CE for Linux

> 你可以从[Docker Store]<https://store.docker.com>)安装 Docker CE。
注意:作为最后的手段,如果你有一台不兼容的 PC,你可以在<https://labs.play-with-docker.com/>上面体验。

### OpenFaaS CLI

你可以使用官方的 bash 脚本来安装 OpenFaaS CLI,`brew`也可以使用,但可能会落后一到两个版本。

在 MacOS 或 Linux 下,在终端运行以下程序。

```sh
# MacOS users may need to run "bash" first if this command fails
$ curl -sLSf https://cli.openfaas.com | sudo sh
```

对于 Windows,在*Git Bash*中运行这个。

```sh
curl -sLSf https://cli.openfaas.com | sh
```

> 如果你遇到任何问题,你可以从[releases page](https://github.com/openfaas/faas-cli/releases)手动下载最新的`faas-cli.exe`。你可以把它放在本地目录或`C:\Windows\`路径中,这样它就可以从命令提示符中获得。
我们将使用`faas-cli`来搭建新的函数,构建、部署和调用函数。你可以通过`faas-cli --help`找到 cli 的可用命令。

测试 `faas-cli`。打开一个终端或 Git Bash 窗口,键入

```sh
faas-cli help
faas-cli version
```

## 配置 Docker Hub

注册一个 Docker Hub 账户。[Docker Hub](https://hub.docker.com)允许你在互联网上发布你的 Docker 镜像,以便在多节点集群上使用或与更广泛的社区分享。我们将在研讨会期间使用 Docker Hub 来发布我们的函数。

你可以在这里注册。[Docker Hub](https://hub.docker.com)

打开一个终端或 Git Bash 窗口,用你上面注册的用户名登录 Docker Hub。

```sh
docker login
```

> 注意:来自社区的提示--如果你在 Windows 机器上试图运行这个命令时遇到错误,那么点击任务栏中的 Docker for Windows 图标,在那里登录 Docker,而不是 `登录/创建 Docker ID`
- 为新镜像设置你的 OpenFaaS 前缀

OpenFaaS 镜像存储在 Docker 注册表或 Docker Hub 中,我们可以设置一个环境变量,使你的用户名自动添加到你创建的新函数中。这将在研讨会过程中为你节省一些时间。

编辑`~/.bashrc``~/.bash_profile`--如果该文件不存在,则创建它。

现在添加以下内容--按照你上面看到的 URL 进行修改。

```sh
export OPENFAAS_PREFIX="" # Populate with your Docker Hub username
```

### 设置一个单节点集群

实验室使用 Kubernetes,Swarm 已经不再被 OpenFaaS 社区支持。有些实验室可以用于 faasd,但你可能需要改变命令,而且当使用 faasd 的时候,我们不提供对该实验室的支持。

- Kubernetes。[Lab 1b](./lab1b.md)
93 changes: 93 additions & 0 deletions translations/cn/lab10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Lab 10 - 高级函数 - secret

<img src="https://github.com/openfaas/media/raw/master/OpenFaaS_Magnet_3_1_png.png" width="500px"></img>

在开始本实验室之前,为你的文件创建一个新的文件夹。由于本实验室是建立在先前的实验室基础上的,因此请复制 lab5。

```plain
$ cp -r lab5 lab10\
&& cd lab10
```

## 使用secret

[实验室 5](./lab5.md)研究了`issue-bot`如何从环境变量(`auth_token`)获得 GitHub 的个人访问令牌。 另一种方法是使用**机密**来存储敏感信息。

来自 Docker 文档。
> ... secret是一团数据,如密码、SSH 私钥、SSL 证书或其他数据,不应通过网络传输或未经加密存储在 Docker 文件或应用程序的源代码中。
这是一个比环境变量更安全的选择。环境变量更容易使用,但最适合于非保密的配置项目。 似乎很适合用于存储`auth_token`值。

请参阅[docs](https://docs.openfaas.com/reference/secrets/)中关于secret的更多信息和它的设计。

### 创建一个secret

> secret名称必须遵循 DNS-1123 惯例,由小写字母数字字符或'-'组成,并且必须以一个字母数字字符开始和结束
从一个终端运行以下命令。

```plain
$ echo -n <auth_token> | faas-cli secret create auth-token
```

测试secret是否被创建。

```plain
$ faas-cli secret ls
```
> 注意:请记住,`-g`标志可以在网关之间轻松切换。 这也适用于secret。
```plain
kubectl get secret auth-token -n openfaas-fn -o json
```

> 注意:如果你在远程网关上部署你的函数,确保你在你用于网关的虚拟机上创建你的secret。
当secret被函数挂载时,它将以文件形式出现在`/var/openfaas/secrets/auth-token`下。这可以由`handler.py`读取,以获得 GitHub 的*个人访问令牌*

### 更新 issue-bot.yml

用一个指令取代对`env.yml`的引用,使`auth-token`的secret对函数可用。

```yml
provider:
name: openfaas
gateway: http://127.0.0.1:8080

functions:
issue-bot:
lang: python3
handler: ./issue-bot
image: <your-username>/issue-bot
environment:
write_debug: true
gateway_hostname: "gateway.openfaas"
positive_threshold: 0.25
secrets:
- auth-token
```

### 更新`issue-bot`函数

函数处理程序需要改变,以使其读取`auth-token`secret,而不是环境变量。 这只是一个单行的改动,在这里。

python
g = Github(os.getenv("auth_token"))
```plain
被替换为
```python
with open("/var/openfaas/secrets/auth-token", "r") as authToken:
g = Github(authToken.read())
```

> 完整的源代码可在[issue-bot-secrets/bot-handler/handler.py](./issue-bot-secrets/bot-handler/handler.py)
* 构建和部署

使用 CLI 来构建和部署该函数。

```plain
$ faas-cli up -f issue-bot.yml
```

现在转到[Lab 11](lab11.md)

0 comments on commit 8f8ff41

Please sign in to comment.