OpenStack HeatでDockerコンテナーをデプロイする方法

OpenStackインフラストラクチャを実装しました。また、Dockerについて聞いたことがあり、Dockerが生み出した莫大なバズを​​認識しています。さて、OpenStackとDockerは、通常のデータセンターで作業するチームの運用を合理化する2つの補完的なテクノロジーです。 Dockerは、アプリケーションをコンテナに自動的に配置するために使用されるオープンソースプログラムです。 LXC(Linux Containers)ソリューションを商品化し、ユーザーが1台のサーバーで多数のコンテナーを実行できるようにします。一方、OpenStackは、ネットワーク、ストレージ、コンピューター、その他のサービスに焦点を当てたオープンAPIを提供します。コンテナーのランタイムとオペレーティングシステムを容易にするためにインフラストラクチャの消費を簡素化します(コンテナーホスティングに関するガイドで詳細を確認できます)


OpenStackを拡張する1つの方法は、Dockerプラグインを使用することです。 Dockerは、ハイパーバイザーとしてOpenStack Novaに簡単に統合できます。しかし、OpenStackとDockerを組み合わせる最良の方法の1つは、OpenStack Heatでコンテナーを調整することです。.

これらのテクノロジーの統合に興味がある場合は、適切なページにアクセスできます。このマニュアルは、DockerをOpenStackに統合する方法を学ぶのに役立ちます。さらに、OpenStack HeatでDockerコンテナーを完璧にインストールする方法についての詳細なガイドが提供されます。オーケストレーションは、初心者を含むすべての人に適したものにするための、わかりやすく順を追った説明で詳細に説明されています.

準備はいい?レッツ・ロール!

特別な注意:OpenStackHeatを使用してDockerコンテナーをデプロイする前に、Linux仮想サーバーが必要です。 Hostadviceに相談して、最高のLinuxホスティングプロバイダーを見つけてください。.

パート1:Dockerプラグインのインストール

ステップ1:プラグインをダウンロードする

Dockerプラグインは、GitHubで利用可能なHeatフォルダー(zipフォルダー)に含まれています。

https://github.com/openstack/heat/tree/stable/icehouse

フォルダーをダウンロードし、以下を使用して解凍します。

heat-stable-icehouse.zipを解凍します

フォルダーを解凍したら、testsフォルダーを見つけて削除し、競合を回避します。

CD熱安定アイスハウス/ contrib /
rm -rf docker / docker / tests

ステップ2:ディレクトリを作成する

次に、以下のコマンドを使用して、/ usr / lib / heat /フォルダーの下に新しいディレクトリを作成します。

cp -r docker / * / usr / lib / heat / docker-plugin

ステップ3:プラグインをインストールする

これで、Dockerプラグインのインストールの準備が整いました。次のコマンドを実行してタスクを開始します.

cd / usr / lib / heat / docker-plugin
apt-get install python-pip
pip install -r requirements.txt

/etc/heat/heat.confファイルは、サービスを再起動する前に編集する必要があります。以下のコマンドを使用して、このファイルを編集します。

vi /etc/heat/heat.conf
(追加)
plugin_dirs = / usr / lib / heat / docker-plugin / docker

次のコマンドを使用してサービスを再起動できます。

サービスHeat-API再始動
サービスheat-api-cfn再起動
サービスヒートエンジン再始動

パート2:Heatテンプレートを作成する

このガイドでは、LAMPアプリケーションをドッキングしてデプロイします。このため、2つのDockerコンテナーを作成する必要があります。 1つはMySQLデータベースで実行され、もう1つはPHPを使用するApacheで実行されます.
構成を定義するOS :: Heat :: SoftwareConfigリソースと、Dockerサーバーに構成をデプロイする別の1つのOS :: Heat :: SoftwareDeployementリソースの概要を説明します。次に、フローティングIPをOS :: Nova :: serverにリンクして、インターネットに接続できるようにします。また、Dockerホスト上にDockerInc :: Docker :: Containerという形式の2つのDockerコンテナーを作成します.

:このガイドでは、シンプルなHeatテンプレートのみを作成しています。名前、リンク、バインディング、ポートなどの複数のパラメーターを使用して、さらに拡張されたテンプレートを作成できます。拡張されたHeatテンプレートは、Dockerの多面的な使用を容易にします。ただし、使用しているDockerプラグインはこれらのパラメーターをサポートしていません.

ステップ1:テンプレートを作成する

フォルダーにテンプレートを作成する docker-stack.yml 次のコンテンツを追加します。

$ vi docker-stack.yml

heat_template_version:2013-05-23

説明: >
OpenStack Heatを使用してマルチノードアプリケーションをドッキングする.
このテンプレートは、実行中の2つのDockerコンテナーを定義します
phpおよびmysqlデータベースを含むapache.

パラメーター:
キー:
タイプ:文字列
説明: >
インスタンスへのSSHアクセスを有効にするKeyPairの名前。注意してください
デフォルトのユーザーはec2-userです.
デフォルト:key1

味:
タイプ:文字列
説明:Dockerサーバーのインスタンスタイプ.
デフォルト:m1.medium

画像:
タイプ:文字列
説明: >
Dockerサーバーに使用するイメージの名前またはID。これは
Fedoraベースのイメージからos-collect-configツールで構築.
デフォルト:fedora-software-config

public_net:
タイプ:文字列
説明:フローティングIPアドレスが割り当てられるパブリックネットワークの名前.
デフォルト:nova

リソース:
構成:
タイプ:OS :: Heat :: SoftwareConfig
プロパティ:
グループ:スクリプト
構成:|
#!/ bin / bash -v
setenforce 0
yum -y install docker-io
cp /usr/lib/systemd/system/docker.service / etc / systemd / system /
sed -i -e ‘/ ExecStart / {s、fd://、tcp://0.0.0.0:2375、}’ /etc/systemd/system/docker.service
systemctl start docker.service
docker -H:2375 pull marouen / mysql
docker -H:2375 pull marouen / apache

展開:
タイプ:OS :: Heat :: SoftwareDeployment
プロパティ:
config:{get_resource:configuration}
サーバー:{get_resource:docker_server}

docker_server:
タイプ:OS :: Nova :: Server
プロパティ:
key_name:{get_param:key}
画像:{get_param:画像}
フレーバー:{get_param:フレーバー}
user_data_format:SOFTWARE_CONFIG

server_floating_ip:
タイプ:OS :: Nova :: FloatingIP
プロパティ:
プール:{get_param:public_net}

Associated_floating_ip:
タイプ:OS :: Nova :: FloatingIPAssociation
プロパティ:
floating_ip:{get_resource:server_floating_ip}
server_id:{get_resource:docker_server}

mysql:
タイプ:DockerInc :: Docker :: Container
depends_on:[デプロイメント]
プロパティ:
画像:marouen / mysql
port_specs:
– 3306
docker_endpoint:
str_replace:
テンプレート:http:// host:2375
パラメータ:
ホスト:{get_attr:[docker_server、networks、private、0]}

Apache:
タイプ:DockerInc :: Docker :: Container
depends_on:[mysql]
プロパティ:
画像:marouen / apache
port_specs:
– 80
docker_endpoint:
str_replace:
テンプレート:http:// host:2375
パラメータ:
ホスト:{get_attr:[docker_server、networks、private、0]}

出力:
url:
説明:Apacheのパブリックアドレス
値:
str_replace:
テンプレート:http:// host
パラメータ:
ホスト:{get_attr:[docker_server、networks、private、0]}

パート3:スタックのデプロイ

テンプレートを作成したら、スタックのデプロイを続行できます.

ステップ1:認証情報ファイルを作成する

スタックをデプロイする前に、次のコマンドを使用して認証情報ファイルを作成する必要があります。

vi creds

#以下を貼り付け:
OS_TENANT_NAME = adminをエクスポートする
OS_TENANT_NAME = adminをエクスポートする
OS_PASSWORD = admin_passをエクスポートします。
OS_AUTH_URL =をエクスポート"http:// controller:5000 / v2.0 /"

以下の手順に従って、fedoraベースのイメージを作成します

$ git clone https://git.openstack.org/openstack/diskimage-builder.git
git clone https://git.openstack.org/openstack/tripleo-image-elements.git
git clone https://git.openstack.org/openstack/heat-templates.git
git clone https://git.openstack.org/openstack/dib-utils.git
エクスポートPATH ="$ {PWD} / dib-utils / bin:$ PATH"
エクスポートELEMENTS_PATH = tripleo-image-elements / elements:heat-templates / hot / software-config / elements
diskimage-builder / bin / disk-image-create vm \
fedora selinux-permissive \
os-collect-config \
os-refresh-config \
os-apply-config \
heat-config-ansible \
heat-config-cfn-init \
heat-config-docker \
heat-config-puppet \
heat-config-salt \
heat-config-script \
-o fedora-software-config.qcow2
glance image-create –disk-format qcow2 –container-format bare –name fedora-software-config < \
fedora-software-config.qcow2 $

まだキーを作成していない場合は、次のコマンドを実行します。

ssh-keygen
nova keypair-add –pub-key〜/ .ssh / id_rsa.pub key1

Dockerサーバーへのアクセスを有効にするために、デフォルトのセキュリティグループにルールを組み込みます。

$ ICMP(ping)を許可:

nova s​​ecgroup-add-rule default icmp -1 -1 0.0.0.0/0

$セキュアシェル(SSH)アクセスを許可します。

nova s​​ecgroup-add-rule default tcp 22 22 0.0.0.0/0

$ 2375ポートアクセスを許可(Dockerエンドポイント):

nova s​​ecgroup-add-rule default tcp 2375 2375 0.0.0.0/0

次に、次のコマンドを使用してプライベートネットワークを作成します。

ソースクレジット

$プライベートネットワークを作成します。

nova network-create private –bridge br100 –multi-host T –dns1 8.8.8.8 \
–ゲートウェイ172.16.0.1 –fixed-range-v4 172.16.0.0/24

次に、フローティングIPプールを作成します。

nova-manage floating create –pool = nova –ip_range = 192.168.100.100 / 28

ステップ2:スタックを作成する

次に、新しく作成したテンプレートからスタックを作成します.

ソースクレジット

スタックを作成する-f docker-stack.yml docker-stack

次に、スタックが正常に作成されたことを確認します。

ヒートスタックリスト

スタックが起動すると、次のウィンドウが表示されます。

次のコマンドを実行して、コンテナが正常に作成されたことを確認します。

ssh [email protected]

sudo docker -H:2375 ps

次の出力が表示されます。

それでおしまい! OpenStack HeatでDockerコンテナーを正常にインストールしました.

Linuxホスティングサービスのトップ3をご覧ください

FastComet

開始価格:
$ 2.95


信頼性
9.7


価格
9.5


使いやすい
9.7


サポート
9.7


特徴
9.6

レビューを読む

FastCometにアクセス

Hostinger

開始価格:
$ 0.99


信頼性
9.3


価格
9.3


使いやすい
9.4


サポート
9.4


特徴
9.2

レビューを読む

Hostingerにアクセス

ChemiCloud

開始価格:
$ 2.76


信頼性
10


価格
9.9


使いやすい
9.9


サポート
10


特徴
9.9

レビューを読む

ChemiCloudにアクセス

関連するハウツー記事

  • Ubuntu 16.04 VPSまたは専用サーバーでDocker Swarmクラスターをセットアップする方法
    専門家
  • CentOS 7 VPSまたは専用サーバーでDocker Swarmクラスターをセットアップする方法
    専門家
  • Ubuntu 18.04専用サーバーまたはVPSに独自のクラウドをインストールする方法
    中間
  • Ubuntu 18.04 VPSまたは専用サーバーにDocker Composeをインストールして構成する方法
    初心者
  • CentOS 7専用サーバーまたはVPSにRedisをインストールする方法
    中間
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me