Openshiftでアプリケーションを起動し、既存のツールを比較します

これは結構です


Openshiftでアプリケーションがどのように起動されたかについて話をしたいと思います。 また、プレイの過程で、Openshift内のアプリケーションを管理するためのユーティリティを検討します。 これは、 kubernetes SPBミートアップ#3でのパフォーマンスの転写です。


目的


通常、クライアントは別々のサーバーにデプロイされますが、ここでは、openshiftで実行してレーキを収集する可能性をテストするタスクが来ました。


最初に、アプリケーションについて説明する必要があります。 豊かな歴史を持つプロジェクト。 大規模な組織で使用されており、おそらく各自が間接的に交差しています。 アプリケーションは、多くのデータベース、統合などをサポートします。


前提条件


展開する


アプリケーションは、まったく異なる環境で動作するはずです。 その結果、インストールドキュメントは非常に広範囲に渡ります。 しかし、あなたを見下していれば、複雑なことは何もありません:



展開する


しかし、世界は残酷であり、多くの制限がありました。



Ansible-containerデモ


アンシブルコンテナ


Ansible Containerは、コンテナーの組み立て、展開、およびプロセス制御の自動化を目的としたオープンソースソフトウェアです。 名前から推測できるように。 Ansibleはコンテナの構築に使用されます。 サーバー上にアプリケーションをインストールおよびデプロイするためのAnsibleロールをすでに作成したため、ホイールを再発明して再利用しないことにしました。 完璧なツールであるだけでなく、既存の役割をすばやく再利用できることがデモの決定的な要因でした。


概して、デモを行うために、すべてを構成する既存の役割を引き受け、「モノリシックコンテナー」を作成しました。 コンテナの収集に特別な問題はありませんでした。 Openshiftには優れた推奨事項がいくつかありますが 、個別に言及します。



この時点での主なアイデアは、デモをすっきりさせたということです。


複数コンテナのデモ


複数のコンテナ


デモコンテナーはその役割を果たし、別のコンポーネントに分割しました。


  1. 私たちのアプリケーション。
  2. データベース。
  3. 外部サービスなど...

複数のコンテナ


最初に遭遇したのは、データベースを初期化する方法ですか? 移行を使用することは明らかですが、いつ、どのように適用するのですか? ここでは、デバイスPODを説明するすばらしい記事へのリンクを与える価値があります: PODの寿命 。 概して、いくつかのアプローチがあります。



Init-containerパスに従うことにしました。 つまり アプリケーションのPODでは、アプリケーションの開始前に、移行をロールするコンテナーが開始されます。 しかし、アプリケーション自体と外部統合を構成する方法は?


アプリケーションを初期化する


複数のコンテナ


すでに述べたように、私たちのアプリケーションは、異なるデータベースと統合を備えた完全に異なる環境で動作することができ、動作するはずです。 繰り返しますが、問題はそれをすべて設定する方法ですか?



最後のアプローチを選んだのは、 これにより、構成を再現可能かつ自立させることができます。 しかし、何らかの理由で、最初にこのコンテナを1の係数を持つ別のレプリケーションコントローラで作成しました。


複数のコンテナ


OK、もう一度ドキュメントを読んでください。


ポッド(クジラのポッドやエンドウ豆のポッドなど)は、共有ストレージ/ネットワークを備えた1つ以上のコンテナ(Dockerコンテナなど)のグループであり、コンテナの実行方法の仕様です。

PODはコンテナのグループです 。 その結果、潜水艦は3つのコンテナで構成されていました


  1. PostgreSQLを初期化するコンテナを初期化します。
  2. アプリ付きコンテナ。
  3. アプリケーション構成のあるコンテナー。

ツールキット


デプロイされたアプリケーションの外観図を取得しました。 自然の中でツールについて議論する時が来ました。すでに準備が整っているものがたくさんあります。以下のリストのいくつかを検討し、主観的な結論を導きます。



Openshiftテンプレート


Openshiftテンプレート


Openshiftテンプレート


長所:



短所:



スクリプトとテンプレート


カスタムスクリプト


長所:



短所:



Terraform k8sプロバイダー


Terraform k8sプロバイダー


Terraform k8sプロバイダー


長所:



短所:



アンシブルコンテナ


アンシブルコンテナ


アンシブルコンテナ


長所:



短所:



Ansible k8sモジュール


Ansible k8sモジュール


Ansible + k8sモジュール


長所:



短所:



Ansible Playbookバンドル


Ansible Playbookバンドル


Ansible Playbook Bundle (APB)ユーティリティはアプローチを提供します:k8s / openshift内のアプリケーションをコンテナーにデプロイし、k8s / openshift内で実行するためのansibleロールをパックしましょう。


長所:



短所:



結果


結果


私は最後の手段になりたくありませんが、結論を共有します。



PS




Source: https://habr.com/ru/post/J441928/


All Articles