DigitalOceanでCoreOSクラスターをセットアップする方法
ステータス:期限切れ
この記事は最新ではありません。 この記事の更新を書くことに興味がある場合は、DigitalOceanが技術チュートリアルを公開したいのをご覧ください。
理由: 2016年12月22日、CoreOSはフリートを維持しなくなったことを発表しました。 CoreOSは、すべてのクラスタリングのニーズにKubernetesを使用することをお勧めします。
代わりに参照してください:フリートなしでCoreOSでKubernetesを使用するガイダンスについては、CoreOSドキュメントのKubernetesを参照してください。
序章
インフラストラクチャでCoreOSを使用することを計画している場合、最初にセットアップする必要があるのはCoreOSクラスターです。 CoreOSマシンがクラスターを形成するために、 etcd2
インスタンスを接続する必要があります。 このチュートリアルでは、DigitalOcean上に3ノードのCoreOSクラスターをすばやく作成するための手順を説明します。
前提条件
CoreOSが構築されているコンポーネント(docker、etcd2、およびフリート)に慣れていない場合は、CoreOSシステムコンポーネントの概要を読むことを強くお勧めします。 あなたはカバーするセクションに特に注意を払いたいと思うでしょう etcd2
、そのコンポーネントはクラスター検出プロセスに不可欠であるため。
SSHキー
作成するすべてのCoreOSサーバーには、作成プロセス中に少なくとも1つのSSH公開鍵がインストールされている必要があります。 キーはにインストールされます core
ユーザーの許可されたキーファイル。CoreOSサーバーにログインするには、対応する秘密キーが必要です。
DigitalOceanアカウントにSSHキーをまだ関連付けていない場合は、このチュートリアルの手順1〜3に従ってください。DigitalOceanドロップレットでSSHキーを使用する方法。 次に、次のコマンドを実行して、クライアントマシンのSSHエージェントに秘密鍵を追加します。
ssh-add
この手順の詳細については、この記事を参照してください。
DigitalOceanパーソナルアクセストークン
DigitalOcean APIを使用してCoreOSマシンを作成することを計画している場合は、書き込み権限を持つパーソナルアクセストークンを生成して使用する方法について、このチュートリアルを参照してください。
前提条件が整ったので、CoreOSクラスターの構築を始めましょう。
新しい検出URLを生成する
新しいCoreOSクラスターをセットアップするための最初のステップは、ピアCoreOSアドレスとメタデータを格納する一意のアドレスである新しい検出URLを生成することです。 これを行う最も簡単な方法は、 https://discovery.etcd.io
、無料の発見サービス。 新しい検出URLは、Webブラウザで https://discovery.etcd.io/new にアクセスするか、次のコマンドを実行することで生成できます。 curl
指図:
curl -w "\n" "https://discovery.etcd.io/new?size=3"
どちらのメソッドも、次のような新しい一意の検出URLを返します(強調表示された部分は一意のトークンになります)。
https://discovery.etcd.io/5c1574906b3502aa9d8dc43c1b185775
結果の検出URLを使用して、新しいCoreOSクラスターを作成します。 同じ検出URLをで指定する必要があります etcd2
特定のCoreOSクラスターに追加する各サーバーのcloud-configのセクション。
検出URLができたので、作成方法を見てみましょう。 cloud-config
それを使用するファイル。
Cloud-Configファイルを作成する
CoreOSはというファイルを使用します cloud-config
これにより、ネットワーク構成、systemdユニット、およびその他のOSレベルのアイテムを宣言的にカスタマイズできます。 このファイルはYAML形式で記述されており、インデントを使用してデータ階層を示します。 The cloud-config
ファイルはマシンの起動時に処理され、マシンを構成する方法を提供します etcd2
参加する必要のあるクラスターを検出できるようにする設定。
最小限の書き方をカバーします cloud-config
動作するCoreOSクラスターを稼働させるため。 cloud-configで構成できるアイテムの完全なリストについては、公式ドキュメントを確認してください。 また、cloud-configファイルの構文 Cloud-ConfigValidatorをチェックできる便利なツールも提供します。
最小限のCloud-Config
前述のように、クラスター内の各CoreOSマシンのピアアドレスは、検出URLとともに保存されます。 したがって、クラスター内の各マシンは同じ検出URLを使用し、独自のIPアドレスを渡す必要があります。 etcd2
サービスに到達することができます。 これらはで指定されています cloud-config
下 etcd2
セクション、および以下のコードブロックに示されています。
また、を指定する必要があります units
セクション、開始します etcd2
と fleet
動作するCoreOSクラスターに必要なサービス。
これが基本です cloud-config
CoreOSマシンで使用して新しいクラスターを作成できるファイル(の値を discovery
以前に生成した検出URLを使用):
#cloud-config
coreos:
etcd2:
# generate a new token for each unique cluster from https://discovery.etcd.io/new:
discovery: https://discovery.etcd.io/<$><discovery_token><$>
# multi-region deployments, multi-cloud deployments, and Droplets without
# private networking need to use $public_ipv4:
advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
initial-advertise-peer-urls: http://$private_ipv4:2380
# listen on the official ports 2379, 2380 and one legacy port 4001:
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://$private_ipv4:2380
fleet:
public-ip: $private_ipv4 # used for fleetctl ssh command
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
注: #cloud-config
行は必須です。 The $private_ipv4
と $public_ipv4
置換変数は、DigitalOceanのcloud-configで完全にサポートされています。これらの変数は、新しいVPSの実際のそれぞれのIPアドレスに置き換えられます。 また、 fleet
使用する予定がない場合は、セクションは必要ありません。 fleetctl ssh
指図。
これ cloud-config
スクリプトを使用して、テスト目的で使用できる基本的なCoreOSをセットアップできます。 残念ながら、それはあまり安全ではありません。 より深刻なセットアップについては、次のチュートリアルに従って安全なCoreOSクラスターをセットアップする必要があります: TLS/SSLおよびファイアウォールルールを使用してCoreOSクラスターを保護する方法。
CoreOSクラスターを作成する
今、あなたはあなたの何を知っています cloud-config
新しいCoreOSクラスター内の各マシンのファイルはで構成されます。CoreOSクラスターを作成しましょう。 ドロップレットはDigitalOceanコントロールパネルまたはAPIを介して作成できるため、両方の方法を使用してCoreOSクラスターを作成する方法を示します。
DigitalOceanコントロールパネル
まず、 DigitalOceanコントロールパネルにアクセスし、ドロップレットの作成ボタンをクリックします。
次に、LinuxディストリビューションとしてCoreOSを選択し、使用するチャネル(Stable、Beta、またはAlpha)を選択します。
次に、希望の液滴サイズを選択します。 基本的なテストを行う場合は、サイズを小さくしても問題ありません。
次に、ご希望のデータセンターリージョンを選択します。
追加オプションの選択ヘッダーの下で、プライベートネットワークおよびユーザーデータを選択します。 コピーして貼り付けます cloud-config
スクリプトを[ユーザーデータ]テキストフィールドに入力します。 次のようになります。
次に、ドロップレットへのログインに使用するSSHキーを少なくとも1つ選択します。
Finalize and create セクションで、少なくとも3つのドロップレットを作成し、それらのホスト名を指定します。 この例では、それらを coreos-01 、 coreos-02 、およびcoreos-03と呼びます。
最後に、 Create ボタンをクリックして、CoreOSクラスターを形成するドロップレットを作成します。
DigitalOceanコントロールパネルを使用したドロップレット作成プロセスの詳細については、このガイドを参照してください。
DigitalOcean API
DigitalOcean APIを使用してCoreOSドロップレットを作成する場合は、 cloud-config
経由 user_data
ドロップレット作成POSTリクエストのパラメータ-スクリプト全体をそこに貼り付けるだけです。
NYC3で、プライベートネットワークを使用して coreos-01 、 coreos-02 、およびcoreos-03という名前の3つの1GBドロップレットを作成するとします。 CoreOS Stableチャネルイメージを使用するデータセンター、および cloud-config
前に示したファイル。 これがその例です curl
DigitalOceanAPIを使用して作成するために実行するコマンド:
curl -X POST "https://api.digitalocean.com/v2/droplets" \
-d'{"names":["coreos-01","coreos-02","coreos-03"],"region":"nyc3","size":"1GB","private_networking":true,"image":"coreos-stable","user_data":
"#cloud-config
coreos:
etcd2:
# generate a new token for each unique cluster from https://discovery.etcd.io/new:
discovery: https://discovery.etcd.io/<$><discovery_token><$>
# multi-region deployments, multi-cloud deployments, and Droplets without
# private networking need to use $public_ipv4:
advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
initial-advertise-peer-urls: http://$private_ipv4:2380
# listen on the official ports 2379, 2380 and one legacy port 4001:
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://$private_ipv4:2380
fleet:
public-ip: $private_ipv4 # used for fleetctl ssh command
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start",
"ssh_keys":[ <SSH Key ID(s)> ]}' \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
注:これは、通常のマルチドロップレット作成リクエストと同じですが、例が追加されています cloud-config
通過した user_data
パラメータ。
SSHキーIDまたは指紋を代わりに使用する必要があります <SSH Key ID(s)>
、および確認してください $TOKEN
読み取り/書き込みDigitalOceanパーソナルアクセストークンの1つに設定されます。
適切な置換を使用してこのコマンドを実行すると、3ノードのCoreOSクラスターが作成されます。
APIの使用方法の詳細については、このチュートリアルを参照してください。
クラスターの確認
3台のマシンのクラスターが正しく形成されたことを確認するには、クラスターメンバーの1つにSSHで接続する必要があります。
coreos-01マシンにログインします。 core
SSH経由でユーザーを使用し、 -A
SSHエージェントを転送するオプション。 パブリックIPアドレスを置き換えることを忘れないでください。
ssh -A core@coreos-01_public_IP
コマンドプロンプトで、これを入力します fleetctl
クラスタのすべてのメンバーを表示するコマンド:
fleetctl list-machines
クラスタ内のすべてのオンラインマシンのリストが表示され、それぞれで識別できるはずです。 peer-addr
IPアドレス。 出力の例を次に示します。
MACHINE IP METADATA
59b2fffd... 10.131.29.141 -
853b0df3... 10.131.63.121 -
cd64a2e3... 10.131.63.120 -
作成したすべてのマシンを見ると、それらはすべて、を介してお互いを認識しています。 etcd2
、そしてあなたのクラスターは適切に形成されました!
警告:クラスターのセットアップ後、ポート4001へのアクセスをCoreOSクラスター内のマシンに制限するようにIPTablesをセットアップしてください。 これにより、外部の許可されていないユーザーがCoreOSマシンを制御するのを防ぐことができます。 本番環境で使用する場合は、このガイドの手順に従って、TLS/SSL証明書とファイアウォールルールを使用してCoreOSクラスターを保護することを強く検討する必要があります。
新しいマシンの追加
既存のCoreOSクラスターに新しいマシンを追加する場合は、同じものを使用して新しいドロップレットを作成するだけです。 cloud-config
(および検出URL)。 新しいCoreOSマシンは、既存のクラスターに自動的に参加します。
使用した検出URLを忘れた場合は、クラスターのメンバーの1つで検索できます。 以下を使用してください grep
既存のマシンの1つでコマンドを実行します。
grep DISCOVERY /run/systemd/system/etcd2.service.d/20-cloudinit.conf
次のように、元の検出URLを含む行が表示されます。
Environment="ETCD_DISCOVERY=https://discovery.etcd.io/575302f03f4fb2db82e81ea2abca55e9"
結論
基本的なCoreOSクラスターがセットアップされ、これでテストに進むことができます。 安全なCoreOSクラスターのセットアップを検討している場合は、次のチュートリアルに従ってください: TLS/SSLおよびファイアウォールルールを使用してCoreOSクラスターを保護する方法。
このシリーズの残りのチュートリアルでは、CoreOSの詳細と、CoreOSクラスターでDockerコンテナーとサービス検出を使用する方法について説明します。