Ansible Kubernetes (K8s) インベントリ ソース

Ansible Kubernetes K8s Inbentori Sosu



この投稿では、Ansible ツールで Kubernetes プラグインを使用する方法を学びます。 Ansible では、多数のコンテナーを管理することは困難です。しかし、コンテナを管理する際には、Ansible で Kubernetes を利用すると便利です。このガイドでは、Kubernetes インベントリ ソースとは何か、およびそれが Ansible でどのように機能するかについて学習します。

Google は、K8s としても知られる Kubernetes と呼ばれる簡単にアクセスできる管理ソフトウェアを立ち上げました。これは、Kubernetes プラグインに非常に適応可能なAnsible のアーキテクチャ。必要な機能に REST API を利用できるようにすることで、Kubernetes の主な目標は、多数のコンテナーの制御に関連する複雑さを隠すことです。







Kubernetes の構成は、クライアント サーバーに基づいています。ただし、デフォルトでは、制御ホストとして機能するメイン サーバーは 1 つだけです。 Kubernetes では、Kubernetes の構成にマルチメイン コントローラーを使用することもできます。 K8s インベントリ ソースは、システムを制御し、ポッドを制御するためにリモート ホスト上のサービスを構成するために必要になる場合があります。しかし、その方法について具体的な指示を得るには困難があります。その結果、ドメイン内のポッドを抽出して Kubernetes インベントリ ソースを生成する Ansible Playbook の作成方法に関するこのチュートリアルを実装します。



Ansible で Kubernetes インベントリ ソースを使用するための前提条件

Ansible で Kubernetes インベントリ ソースを使用するには、このガイド全体でステージ プロセスの手順またはコマンドを使用します。先に進みたい場合は、必要な準備が整っていることを確認してください。



  • Ansible シナリオで作業するには、まずサーバーに Ansible ツールをセットアップし、Kubernetes プラグインを簡単に使用できるように、Ansible バージョン 2.11.7 があることを確認します。
  • Kubernetes プラグインを評価するには、Kubernetes クラスターが組み込まれたリモート サーバー デバイスが必要です。
  • リモートホストは現在、Ansible の手順とプレイブック、およびビルドされたインベントリーファイルを実行するように構成されています。対象のリモート デバイスの名前は K8s Master Node です。
  • Python のバージョンは 3.6 以上で、Ansible コントローラーのデバイスにインストールする必要があります。ターゲットのリモート ホスト デバイスにある場合もあります。
  • Python の openshift モジュールのバージョンは 0.6 以上です。バージョン 3.11 以降の pyYAML モジュールも必要です。両方のモジュールをリモート サーバー デバイスとコントローラー デバイスにセットアップする必要があります。

例:





これは、Ansible で Kubernetes を実装する最初の例です。そのために、任意の Ansible 環境を使用して Kubernetes インベントリ ソースを実装します。以下にリストされているプロセスは、Kubernetes Inventory Plugin を使用して、次のシナリオで実行されます。

  • Ansible の K8s クラスターに新しい名前空間を実装します。
  • Ansible Playbook を使用した nginx ポッドの作成。
  • Ansible での nginx デプロイメントの作成。

概念と実行を理解しやすくするために、いくつかのステップで例を実装します。



ステップ 1: Ansible の K8s クラスターに新しい名前空間を実装する

最初のステップでは、プレイブックを作成して、Ansible で「.yml」形式でコンテンツを記述できるようにします。プレイブックを作成するために使用するコマンドは次のとおりです。

[ @ マスターアンシブル ] # ナノ nginx_pod.yml

これで、「pod.yml」プレイブックが作成され、Ansible の新しいターミナルで起動されます。スクリプトを書き始めます。 Playbook では、最初に Ansible ポッドで使用する API バージョン「v1」を定義します。定義する名前空間は「ansible-namespace」です。次に、ansible-namespace のメタデータをリストします。メタデータでは、nginx ソフトウェアと、価値のあるフロントエンドの階層を含むラベルを使用します。 Playbook の仕様では、コンテナーに格納されている名前とイメージをリストします。どちらにもnginxが含まれています。

ステップ 2: Ansible でマニフェスト ドキュメントを作成する

ここで、「.yml」形式のデプロイメント ドキュメントである別のドキュメントを Ansible の同じディレクトリに作成します。マニフェスト ドキュメントを作成するには、Ansible ターミナルで次のコマンドを使用します。

[ @ マスターアンシブル ] # nano nginx_deployment.yml

マニフェスト ドキュメントでは、最初に「app/v1」であるアプリ バージョンを再度定義します。次に、それがどのような種類のファイルであるか、展開ファイルであるかどうかを示します。次に、ansible-namespace である名前空間を定義します。実装を構築するために、 ansible-namespace 内の 2 つのレプリカがポッドの数を示します。 nginx イメージは、ポッドで起動される 1.14.2 です。 matchLabels パラメーターは、pod のタグと spec パラメーターの下のそれらの仕様を提供します。 Pod のタグが構成情報で指定されたものと何らかの形で一致する場合、Ansible のマニフェスト ドキュメントで実装が行われます。

ステップ 3: Ansible で Kubernetes 実装用の Playbook を作成する

ここで、Ansible で別の Playbook を作成します。この Playbook では、Kubernetes の機能を実装します。次のコマンドを使用してプレイブックを作成します。

[ @ マスターアンシブル ] # nano kubernetes_main.yml

プレイブックは、前のプレイブックとマニフェスト ドキュメントが Ansible に保存されているのと同じディレクトリに作成されます。プレイブックでは、最初に実装したいプレイブックの機能を定義します。接続を構築するために、対象とするリモート ホストを提供します。ここでは、「すべて」のホストを対象としています。次に、格納されているパスを使用して、Ansible で Python インタープリターをチェックする変数を定義します。ここで、プレイブックでタスクを定義します。まず、minikube デバイスの状態を確認します。次に、プレイブックに新しい Kubernetes 名前空間を作成します。次に、nginx_pod.yml と nginx_deployment .yml をリモート デバイスに複製します。

これらの yml ドキュメントを通じて、リモート デバイスにポッドの実装を構築します。次に、Kubernetes ポッドがリモート デバイスの指定された場所に存在するかどうかを確認します。

Playbook の終了後、Ansible コントローラーとターゲット リモート ホスト間の接続を確立するために、インベントリ ファイルを作成します。

全て:
ホスト:
k8s_Master_Node:
ansible_host: 192.168.3.229
ansible_user: アンシブル
ansible_password: ********
ansible_connection: ssh
ansible_port: 22

[ @ マスターアンシブル ] # ansible-playbook kubernates_main.yml

以下は、タスクがターゲット マシンに正常に配置されていることを示す目的の出力です。

タスクがターゲット マシンに配置された後、「ansible-namespace」が Kubernetes クラスター内にあるかどうかを確認します。次の「grep」コマンドを使用します。

[ @ マスターアンシブル ] # kubectl は名前空間を取得 | grep ansible-namespace

Kubernetes クラスターの名前空間で作成されたポッドを確認する場合は、次のコマンドを記述して確認します。

[ @ マスターアンシブル ] # kubectl get pods --namespace ansible-namespace

前の出力でわかるように、デバイスで実行されているポッドを取得します。次に、Kubernetes クラスターで行ったデプロイを確認します。次のステートメントを使用して、既に作成されたデプロイメントを確認します。

[ @ マスターアンシブル ] # kubectl get deployments --namespace ansible-namespace

結論

Ansible の Kubernetes インベントリ ソースとは何かを学びました。また、Ansible で Kubernetes インベントリを利用する方法も学びました。次に、Ansible での Kubernetes インベントリ ソースの動作についてより明確に学習できるように、例を実装しました。