阅读本文的其他语言版本:English。
Rotisserie 采用了美式橄榄球比赛中的红区这一概念, 将其应用于非常受欢迎的网络大逃杀游戏 PLAYERUNKNOWN'S BATTLEGROUNDS。这里的 设想始终是观看游戏中存活人数最少的 最受欢迎的 PUBG Twitch 直播。
必须具备以下软件才能在本地运行 Rotisserie:
您可以使用以下两个命令之一来安装这些依赖项 (具体取决于您的操作系统):
- Ubuntu:
$ sudo apt-get install tesseract-ocr ffmpeg imagemagick
$ pip install livestreamer
- macOS:
$ brew install tesseract ffmpeg imagemagick
$ pip install livestreamer
使用 Minikube 创建 Kubernetes 集群以执行本地测试,或者使用 IBM Cloud Container Service 创建 Kubernetes 集群以部署到云中。使用 Travis,针对来自 IBM Cloud Container Service 的 Kubernetes 集群定期来测试这里的代码。
2.设置环境变量
3.构建映像
4.在本地部署
1.在安装有浏览器的机器上,运行以下命令:
$ livestreamer --twitch-oauth-authenticate
2.将打开一个浏览器窗口,系统将提示您授权 Livestreamer 使用
您的 Twitch 帐户。单击 Authorize
。
3.您的浏览器将进行刷新,并出现一个显示“SORRY, this page does not exist
yet”消息的页面。请忽略此消息。地址栏中将出现一个回调
URL,其中包含 access_token=<TOKEN>
。这是您的 OAuth 令牌,将其复制下来,
前进到下一部分。
- 为您的 Docker 用户名创建一个环境变量。
$ export docker_username="YOUR_DOCKER_USERNAME"
- 为您在上一步中检索的令牌创建一个环境变量。
$ export token="YOUR_OAUTH_TOKEN"
- 为您的 clientID 创建一个环境变量。
必须使用开发人员方式 (https://dev.twitch.tv/) 在 Twitch 帐户中创建应用程序以检索 clientID
$ export clientID="YOUR_CLIENT_ID"
- 为 ROTISSERIE_OCR_SERVICE_HOST 和 ROTISSERIE_OCR_SERVICE_PORT 创建一个环境变量。如果在本地运行的话,可以将此项设置为
localhost
和3001
, 或者如果在容器运行的话,可以将其设置为远程 OCR 主机的 IP 地址和端口。模拟 Kubernetes 导出的环境变量。
$ export ROTISSERIE_OCR_SERVICE_HOST="localhost"
$ export ROTISSERIE_OCR_SERVICE_PORT="3001"
- 克隆存储库。
$ git clone https://github.com/IBM/rotisserie.git
$ cd rotisserie
- 构建并推送 Docker 映像。如果要在 Kubernetes 中部署应用程序,那么需要推送 Docker 映像。
$ docker build -t $docker_username/rotisserie-ocr -f deploy/images/ocr.Dockerfile .
$ docker build -t $docker_username/rotisserie-app -f deploy/images/app.Dockerfile .
$ docker push $docker_username/rotisserie-ocr
$ docker push $docker_username/rotisserie-app
- 使用 npm 执行安装。
$ npm install .
- 如果不在
rotisserie
目录中,请浏览至该目录,然后启动 该应用程序:
$ node ocr.js 2>&1 >/dev/null &
$ node app.js
现在,您可以打开浏览器并浏览至 http://localhost:3000
以观看
Rotisserie。
您还可以在 Docker 容器中运行 Rotisserie。
- 启动容器:
$ docker run -d -p 3001:3001 --name rotisserie-ocr $docker_username/rotisserie-ocr
$ docker run -d -p 3000:3000 --name rotisserie-app -e ROTISSERIE_OCR_SERVICE_HOST=$ROTISSERIE_OCR_SERVICE_HOST -e ROTISSERIE_OCR_SERVICE_PORT=$ROTISSERIE_OCR_SERVICE_PORT -e token=$token -e clientID=$clientID $docker_username/rotisserie-app
现在,您可以打开浏览器并浏览至 http://localhost:3000
以观看
Rotisserie。
注:确保将 $OCR_HOST
环境变量设置为 cluster_public_ip:3001
。
1.为您的 OAuth 令牌创建 Kubernetes 密钥。必须对 Kubernetes 密钥所需的数据进行 Base64 编码。
$ echo -n "YOUR_OAUTH_TOKEN" | base64
2.修改 rotisserie-secrets.yaml 文件以使用您的令牌。
...
data:
token: YOUR_OAUTH_TOKEN_IN_BASE64
3.最后,创建 Kubernetes 密钥。
$ kubectl create -f rotisserie-secrets.yaml
4.修改 rotisserie-app.yaml
和 rotisserie-ocr.yaml
yaml 文件以使用您的映像。
...
containers:
- name: rotisserie-app
image: <docker_username>/rotisserie-app
5.部署 OCR 服务,然后部署主应用程序。
$ kubectl apply -f rotisserie-ocr.yaml
$ kubectl apply -f rotisserie-app.yaml
- 要访问该应用程序:需要集群的公共 IP 地址。如果没有负载均衡器,那么可以使用 Node Port。
# For clusters provisioned with Bluemix
$ bx cs workers YOUR_CLUSTER_NAME
# For Minikube
$ minikube ip
- 现在,您可以转至
http://IP_ADDRESS:30080
生产版 Rotisserie 的操作过程略有不同。生产版 Kubernetes 清单位于部署目录中。通常使用提供的 Makefile 来与之交互。在生产版 Rotisserie 与开发人员教程中使用的 Rotisserie 之间的主要差别在于:在 Kuberenetes 中使用入口控制器并添加了 Letsencrypt。
可使用以下几个命令来处理部署。
要在不使用 Letsencrypt 的情况下进行部署,可以使用 make roll
make roll
要在使用 letsencrypt 的情况下进行部署,可以使用 make full-roll
make full-roll
要在不移除 svc/ing/other 的情况下重新部署,可以使用 make redeploy
make redeploy
要删除整个部署,可以使用 make purge
make purge
注:这取决于是否是使用唯一 sha 进行部署。请参阅 Makefile 中的 make-rev 规则。在大多数情况下应可以使用 git pull; make roll
。如果滚动失败或应用程序因未连接到代码而失败,可能需要在重新滚动之前添加虚拟提交。请仅从主项滚动。
要加入白名单,只需将名为 ROTISSERIE_ALLOWLIST
的环境变量设置为包含空格分隔的用户名的字符串。加入黑名单的过程与此相同,但使用的是环境变量 ROTISSERIE_BLOCKLIST
。
Rotisserie 当前是在 Apache 2.0 许可 下授予许可的。