Github: https://github.com/dcos/dcos
DC / OS – データセンターオペレーティングシステム
マイクロサービス、ビッグデータ、およびコンテナを運用環境で実行する最も簡単な方法。
DC / OSとは何ですか?
従来のオペレーティングシステムと同様に、DC / OSはコンピュータハードウェアとソフトウェアリソースを管理し、コンピュータプログラムに共通のサービスを提供するシステムソフトウェアです。
従来のオペレーティングシステムとは異なり、DC / OSはネットワーク内の複数のマシンに分散し、分散アプリケーションによる使用率を最大にするためにリソースを集約します。
詳細は、 DC / OSの概要を参照してください。
どうやって…?
- 詳細 – https://dcos.io/
- ドキュメントを見つける – https://dcos.io/docs/
- インストール – https://dcos.io/install/
- 開始 – https://dcos.io/get-started/
- ヘルプ – http://chat.dcos.io/
- ディスカッションに参加する – https://groups.google.com/a/dcos.io/d/forum/users
- 問題を報告する – https://jira.dcos.io
- Contribute – https://dcos.io/contribute/
リリース
DC / OSリリースはhttp://dcos.io/releases/で公開されています
リリースアーチファクトは、CloudFrontキャッシュを使用して、Amazon S3上のMesosphereによって管理されます。
特定のリリースのgit SHAを見つけるには、GitHubのバージョン管理されたブランチで最新のコミットをチェックしてください : https : //github.com/dcos/dcos/branches/
リリースタイプ | URLパターン |
---|---|
最新の安定 | https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh |
最新マスター | https://downloads.dcos.io/dcos/testing/master/dcos_generate_config.sh |
特定PR、最新ビルド | https://downloads.dcos.io/dcos/testing/pull/<github-pr-number>/dcos_generate_config.sh |
開発環境
LinuxはDC / OSの構築とテストに必要です。
- Linuxディストリビューション:
- DockerにはOS XまたはWindowsに必要な機能がすべてありません
-
tar
は、使用されるフラグセットのGNU tarでなければなりません -
unzip
をインストールする必要があります
- 毒
- git 1.8.5+
- ドッカー1.11+
- さまざまなディストリビューションのインストール手順 。 ユーザーがドッカーコンテナーを実行できるように、ドッカーを設定する必要があります。 コマンド
docker run alpine /bin/echo 'Hello, World!'
新しい端末で実行したときに、ユーザーは単に"Hello, World!"
印刷する必要があります"Hello, World!"
。 「画像を見つけることができません」というようなメッセージが表示された場合は、「アルパイン:最新のローカル」を再実行してください。
- さまざまなディストリビューションのインストール手順 。 ユーザーがドッカーコンテナーを実行できるように、ドッカーを設定する必要があります。 コマンド
- Python 3.6
- アーチLinux:
sudo pacman -S python
- Fedora 23ワークステーション:デフォルトで既にインストール済み/手順なし
- Ubuntu 16.04 LTS:
- pyenv-installer
- Python依存関係:
sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils liblzma-dev python3-venv
- Python 3.6.3を
pyenv install 3.6.3
:pyenv install 3.6.3
- DC / OS virtualenvを作成する:
pyenv virtualenv 3.6.3 dcos
- 環境を
pyenv activate dcos
:pyenv activate dcos
- アーチLinux:
- 10GB以上の空きディスク容量と8GB以上のRAM
- ビルドではハードリンクが使用されるため、VirtualBoxを使用している場合は、ディスクスペースを同期フォルダにすることはできません。
- オプションの pxz(パッケージとブートストラップ圧縮のスピードアップ)
- ArchLinux: AURのpxz-git pxzパッケージは、タールボールをかなり頻繁に破損します。
- Fedora 23:
sudo dnf install pxz
単体テスト
ユニットテストはローカルで実行できますが、上記の開発環境が必要です。
tox
Toxはコードベースの単体テストの実行や標準チェックのコーディングに使用されます。 設定はtox.ini
ます。
統合テスト
統合テストは、展開された任意のDC / OSクラスタで実行できます。 インストール手順については、 https://dcos.io/install/を参照してください 。
統合テストは、 dcos-integration-test Pkgpandaパッケージを介してインストールされます。
統合テストファイルは、 /opt/mesosphere/active/dcos-integration-test
のDC / OSマスターノードに格納されています。 したがって、テストファイルの変更をテストするには、 packages/dcos-integration-test/extra/
から、マスターノードの/opt/mesosphere/active/dcos-integration-test
にファイルを移動します。
テストスイートの結果の標準ソースは、継続的な統合システムです。 このドキュメントで説明されている統合テストの実行結果と、継続的な統合システムによる結果との間には違いがある可能性があります。 特に、一部のテストでは、継続的な統合システムを通過し、ローカルで失敗するか、またはその逆が発生する可能性があります。
最小要件
- 1マスターノード
- 2つのプライベートエージェントノード
- 1パブリックエージェントノード
- タスクリソースの割り当ては現在のところわずかです
- DC / OS自体には、各ノードに少なくとも2(仮想)のCPUコアが必要です
指示
-
SSHをマスターノードにするテストは、テスト対象のクラスタのマスターノードにrootとしてSSHされている間に、Pytestを介して実行できます。
-
ルートに切り替える
sudo su -
-
テストユーザーを追加する
dcos-shell python /opt/mesosphere/active/dcos-oauth/bin/dcos_add_user.py albert@bekstil.net
上記のコマンドを実行すると、結果が出力されます
User albert@bekstil.net successfully added
このテストユーザーには、未来の有効期限を持つ既知のログイントークンがあります。 生産には使用しないでください。 テストの後、テストユーザーを削除することを忘れないでください。
詳細については、「 ユーザー管理 」を参照してください。
-
クラスタ内でpytestを使用してテストを実行します。
cd /opt/mesosphere/active/dcos-integration-test dcos-shell pytest
DC / OSドッカーの使用
統合テストを実行する1つの方法は、 DC / OS Dockerを使用することです。
- DC / OS Dockerを使用してコンテナ内のDC / OSをセットアップします。
これを行う1つの方法は、 DC / OS Docker Quick Startツールを使用することです 。
-
make test
実行make test
。
ビルド
DC / OSはローカルで構築できますが、上記の開発環境が必要です。
DC / OSビルドは、 dcos_generate_config.sh
というbashスクリプトでラップされた自己解凍型Dockerイメージとしてパッケージ化されています。
警告 :最新のdevマシン(4コア/ 8ハイパースレッド、SSD、合理的なインターネット帯域幅)で最初からリリースを構築するには、約1時間かかります。
指示
./build_local.sh
単純なローカルビルドが実行され、その結果生成されたDC / OSインストーラが$ HOME / dcos-artifactsに出力されます。 作成した `dcos_generate_config.sh ‘を以下のように実行することができます:
$ $HOME/dcos-artifacts/testing/`whoami`/dcos_generate_config.sh
ビルドの詳細
bashスクリプトbuild_local.sh
内部を見ると、それぞれの説明があるコマンドがあります。
一般的な流れは次のとおりです。
- 環境が合理的であることを確認する
- 存在しない場合は
release
ツール構成を記述します - 私たちがそれらを実行するためにDC / OSのpythonツールをインストールすることができるpython virtualenvをセットアップしてください
- DC / OSのpythonツールをvirtualenvにインストールする
-
release
ツールを使用してリリースを構築する
これらのステップはすべて手作業で行い、標準のPythonプロジェクトのようにカスタマイズ/微調整することができます。 仮想環境を作成し、編集可能なpipインストール( pip install -e
)をpip install -e
して、 “実行中の”作業環境(ツールを実行して結果を見ることができるコードを変更する)を行うことができます。
リリースツールの設定
このリリースツールは、常に現在のディレクトリのdcos-release.config.yaml
configをロードします。
設定はYAMLです。 内部には2つのメインセクションがあります。 構築された成果物が送られるべき異なる記憶装置の辞書を含むstorage
と、一般的なDC / OS構築構成オプションを設定するオプションとを含む。
設定値は直接指定することも、$ prefixed環境変数を使うこともできます(env変数は値全体を設定する必要があります)。
ストレージプロバイダ
使用可能なストレージプロバイダはすべてリリース/ストレージにあります。 設定は、ストレージプロバイダの参照名(local、aws、my_azure)の辞書へのディクショナリです。
各ストレージプロバイダ(例:aws.py)は、利用可能な種類のプレフィックスです。 辞書factories
は、特定の種類の接尾辞を定義します。 たとえばkind: aws_s3
はkind: aws_s3
にマップされます。
ストレージプロバイダの構成オプションは、ストレージプロバイダのコンストラクタパラメータです。
私のホームディレクトリ(/ home / cmaloney)に保存するサンプル構成ストレージ:
storage:
local:
kind: local_path
path: /home/cmaloney/dcos-artifacts
ローカルアーカイブパスとAWS S3に保存されるサンプル設定。 AWS S3で認証するには、 boto3のドキュメントを参照してアクセスを設定する方法を学んでください。
storage:
aws:
kind: aws_s3
bucket: downloads.dcos.io
object_prefix: dcos
download_url: https://downloads.dcos.io/dcos/
local:
kind: local_path
path: /mnt/big_artifact_store/dcos/
レポ構造
DC / OS自体は、一緒に協働するように正確に構成された多くの個々のコンポーネントで構成されています。
このレポには、さまざまなオンプレミスおよびクラウドプラットフォーム用のインストーラを作成するために必要なリリースおよびパッケージ構築ツールが含まれています。
ディレクトリ | 内容 |
---|---|
cloud_images | 基本OSイメージ構築ツール |
設定 | リリース構成 |
ドキュメント | ドキュメンテーション |
flake8_dcos_lint | コード品質をテストするためのFlake8プラグイン |
dcos_installer | Web用のバックエンド、SSH、および高度なインストーラの一部。 コードがクリーンアップされています |
世 | さまざまなプラットフォーム用のyaml設定ファイルをパッケージにレンダリングするためのPythonライブラリ、CloudFormationで設定された「レイトバインディング」設定などの機能を実行するユーティリティ |
パッケージ | DC / OSを構成するパッケージ(Mesos、Marathon、AdminRouterなど) これらのパッケージはpkgpandaによって構築され、展開のために “ブートストラップ” tarballに結合されています。 |
パックパンダ | DC / OSベースライン/ホストパッケージ管理システム。 マシンのルートファイルシステム/ Mesosの下にあるパッケージをビルド、配備、アップグレード、バンドルするためのツール。 |
解放 | DC / OS用のリリースツール。 (リリースのビルド、リリースのインストーラの構築、チャネル間のプロモーション) |
ssh | インストーラで使用されるAsyncIOベースの並列sshライブラリ |
test_util | さまざまなスクリプト、統合テストに役立つユーティリティ |
プルリクエストステータス
プル要求は自動的に新しいDC / OSビルドをトリガし、いくつかのテストを実行します。 これらは、DC / OSプルリクエストに対するさまざまなステータスチェックの詳細です。
ステータスチェック | 目的 | ソースと依存関係 |
---|---|---|
継続的統合/ゲンキンズ/プリンヘッド | Admin Routerエンドポイントテスト | dcos / dcos / packages / adminrouter / extra / src / test-harnessドッカー依存関係: dcos / dcos / packages / adminrouter |
mergebot / enterprise / build-status / aggregate | EEテスト施行 | プライベート中間圏/分散型企業レポは、SHAに対してテストされます。 |
mergebot / enterprise / has_ship-it | コードレビュー施行 | プロードクラスター内のプライベートMergebotサービス |
mergebot / enterprise / review / approved / min_2 | コードレビュー施行 | プロードクラスターでのMergebotサービス |
mergebot / has_ship-it | コードレビュー施行 | プロードクラスターでのMergebotサービス |
マージボット/レビュー/承認済み/ min_2 | コードレビュー施行 | プロードクラスターでのMergebotサービス |
チームシップ/ dcos / build / dcos | DCOSイメージを構築する(dcos_generate_config.sh) | gen / build_deploy / bash.py |
チームシップ/ dcos / build / tox | チェックスタイル、ユニットテストを実行する | tox.ini |
チームシップ/ dcos /テスト/ aws / cloudformation / simple | single-master-cloudformation.jsonを使用した展開と統合テストの実行 | gen / build_deploy / aws.py 、CIでdcos-launchバイナリを使用する |
チームシップ/ dcos / test / aws / onprem / static | dcos_generation_config.shを介したインストールと統合テストの実行 | gen / build_deploy / bash.py 、CIでdcos-launchバイナリを使用する |
チームシップ/ dcos /テスト/紺碧/腕 | acs-1master.azuredeploy.jsonを使用してデプロイし、統合テストを実行します。 | gen / build_deploy / azure.py 、CIでdcos-launchバイナリを使用する |
チームシップ/ dcos /テスト/ドッカー | このPRに対してdcos-dockerを起動し、dockerクラスタ内で統合テストを実行することにより、dcos-dockerを実行します。 | dcos-docker repo |
チームシップ/ dcos /テスト/ドッカー/煙 | このPRに対してdcos-dockerを起動し、ドッカークラスタ内でスモークテストを実行することにより、dcos-dockerを実行します。 | dcos-docker repo |
チームシップ/ dcos /テスト/アップグレード | 安定版マイナーバージョンからのアップグレード | 中間圏/高度試験レポ(過渡的、 dcos / dcos-test-utils 、dcos / dcos-launch) |
チームシップ/ dcos / test / upgrade-from-previous-major | 以前のメジャーバージョンからのアップグレード | 中間圏/高度試験レポ(過渡的、dcos / dcos-test-utils、dcos / dcos-launch) |
チームシップ/ dcos /テスト/アップグレードから次のメジャーへ | 次のメジャーバージョンへのアップグレード | 中間圏/高度試験レポ(過渡的、dcos / dcos-test-utils、dcos / dcos-launch) |