Alodi:環境を作成することは容易ではありませんでした

あなたが迅速かつ容易に生成システムの一時的な環境の多様性を満たす想像

では「Alodi:私はシステムを開発した秘密を維持するために、」記事は、私たちがわずか3ヶ月の何百もの環境は仕事や保存を簡単にするために作成された、すぐに一時的なテスト環境を生成するためのシステムを開発した言及しました時間、だけでなく、小さなパートナーによる達成Alodiの原理を紹介するこの記事を肯定だけでなく、更新された機能

目的を達成します

Alodi主な目的は、ランダム・アクセス・アドレスを生成しながら、一時的なアクセスを提供し、テスト環境を作成する最も簡単かつ最速の方法です

正確にどのようにシンプルな環境を作成しますか?次のような:項目を選択 - >「ビルド&展開」をクリックしてください - - >入力タグ - >「環境の作成」をクリックしてください>作成を待ちます

作成したら、あなたは、コンテナターミナルのトラブルシューティングに、このようなログビューの作成など、あなたが新たに作成されたドメイン環境から直接アクセスすることができ、展開リスト、または管理の数でコンテナログビューを環境を作成するタスクを見つけることができます新しいドメイン名、または環境破壊をバインド

作成プロセス

一時的な環境を作成しますセロリDjangoのを通じて、非同期完了にDjangoはあるチャンネルのWebSocketチャンネルのリアルタイムアクセスタスクのログ出力を確立します

例のJavaWebプロジェクトは、すべてのJavaWebプロジェクトのテンプレートを書きますための統一テンプレートを展開するためのプロジェクトを立ち上げるのと同じプロセスは、書き込まれます、NodeJSプロジェクトの一時的な環境を作成し、すべてのNodeJSプロジェクトのテンプレートを書きますが、実際にタスク・テンプレートセロリによって行われます

タスク・テンプレートでは、一般的に、実行するタスクを定義し、以下が含まれます。一時ディレクトリを作成 - >コードを引いて - >コンパイル - > DOCKERFILEを生成 - >ドッカーイメージをパッケージング - >民間の倉庫にアップロードされた画像 - - > Kubernetesリソースを作成 - > [ポッドの状態を確認 - >完了

每一次任务都会生成一个全新的环境,一个全新的域名,所以无论有多少个版本多少个用户在并行测试都不会相互影响

临时域名

每一次都生成一个临时的域名提供访问,这样做的初衷是希望自己生成的环境只有自己知道,避免公共域名的传播,在一定程度上实现保密

域名绑定Kubernetes的ingress,可以实现通过域名访问到对应的容器,这里需要思考的一个问题是:需要给每个临时域名创建DNS解析吗?

员工的电脑上都配置了内部DNS,而这个DNS不支持API操作,所以在开始的时候考虑的两种方案

  1. 用户自己绑定hosts
  2. 新建DNS,支持API

这两种方案都不是很好,新建DNS还需要用户都修改自己的DNS指向到新DNS,而绑定hosts无疑会增加使用成本,那该如何处理呢?

DNS泛域名解析,利用通配符*来做次级域名以实现所有的次级域名均指向同一IP地址

在内部DNS上创建一条匹配所有的次级域名的记录,指向到Kubernetes的Ingress服务器,例如

*.ops-coffee.cn -> 192.168.107.143

这样无论生成任何xxx.ops-coffee.cn的域名都可以请求到Kubernetes的Ingress,然后Ingress转发请求到对应的service,最终到pod,完美的解决了这个问题

域名绑定

解决了域名访问的问题,还面临另外一个问题就是用户有需求绑定生产域名进行测试,因为有一些第三方平台,例如微信分享等是有域名白名单的,只有白名单内的域名可以进行操作,这种情况下生成的临时域名就无法使用了,需要支持绑定生产域名进行测试

Alodi系统内绑定新域名也非常简单,只需要点击“绑定新域名”按钮,填写对应的域名提交就好

绑定新域名实现原理是多添加一个Ingress,与已存在的service相关联,同时会维护一个新绑定域名与Service的关系表,主要目的是在绑定新域名时判断域名是否已经被绑定,因为Ingress绑定的域名不能重复,如果发现有用户绑定已经被绑定过的域名则会提示其与先绑定的用户协商使用

由于可以绑定任意域名,所以没办法添加DNS解析,故这里需要用户自己绑定hosts了

容器操作

毕竟是测试环境,出现问题是难免的,一旦有问题用户就需要拉日志,甚至是登陆系统debug排查

应用内的日志有接入ELK系统,容器的启动日志Alodi系统也提供查看功能,点击“Log”按钮即可查看

Log查看通过调用Kubernetes API的read_namespaced_pod_log方法来实现,Kubernetes的API比较多,鉴于篇幅不在文章中细说,有整理一份文档:Kubernetes Python API中文使用说明

SSH进入Pod容器也给集成到了Alodi系统中,之前有一篇文章专门介绍:Django实现WebSSH操作Kubernetes Pod,有很多小伙伴按照文章内容实现了集成

销毁环境

Alodi系统希望用户能够快速创建环境,用完销毁环境,不长时间占用资源,所以设计了定期销毁和用户主动销毁策略,定期销毁是会销毁超过n天没有使用的环境,而主动销毁只需要点击“点击销毁”按钮即可

销毁环境会删除创建的临时目录,拉取的代码,生成的文件,以及Kubernetes上的各种资源

扫码关注公众号查看更多实用文章

这便是Alodi,一个快速创建临时环境的系统


相关文章推荐阅读:

おすすめ

転載: www.cnblogs.com/37Y37/p/12190404.html