B.6 etcdの詳細を使用したYAMLファイルの更新

トランザクション・コーディネータのYAMLファイルにetcd資格証明およびetcdエンドポイントを指定する必要があります。MicroTxは、この情報を使用して、サービスのインストール後にetcdへの接続を確立します。

MicroTxのトランザクション・ログを格納するためにetcdを使用しない場合は、このステップをスキップします。

開始する前に、サーバーおよびクライアントのRSA証明書を生成します。生成された証明書の内容を含むJSONファイルを作成します。「etcdのRSA証明書の生成」を参照してください。

etcdにアクセスするための詳細を含むDockerシークレットを作成するには:
  1. tcs-docker-swarm.yamlファイルを更新し、etcdエンドポイント、etcdの資格証明へのパス、etcdのRSA証明書へのパスを指定します。次のコード・スニペットは、「etcdのRSA証明書の生成」で使用されているサンプル値を示しています。これらのサンプル値を環境内の実際の値に置き換えます。
    storage:
      type: etcd
      etcd:
        endpoints: https://etcd:2379
        credentialsFilePath: "/app/etcd/etcdecred.json"
        cacertFilePath: "/app/etcd/ca.pem"
        skipHostNameVerification: false

    各フィールドの詳細は、「トランザクション・ストアのプロパティ」を参照してください。

  2. tcs-stack-compose.yamlファイルをservicesの下のetcdの詳細で更新します。

    サンプル値

    次のコード・スニペットは、「etcdのRSA証明書の生成」で使用されているサンプル値を示しており、etcdとトランザクション・コーディネータがDocker Swarmの同じネットワークにあるものとしています。

    これらのサンプル値を環境内の実際の値に置き換えます。

    services:
      etcd:
        image: "bitnami/etcd"
        ports:
          - "2379:2379"
          - "2380:2380"
        volumes:
          - <PATH_TO_CFSSL_DIRECTORY>/cfssl:/etcdssl
        environment:
          - ETCD_ROOT_PASSWORD=password
          - ETCD_CERT_FILE=/etcdssl/server.pem
          - ETCD_KEY_FILE=/etcdssl/server-key.pem
          - ETCD_LISTEN_CLIENT_URLS=https://0.0.0.0:2379
          - ETCD_ADVERTISE_CLIENT_URLS=https://127.0.0.1:2379

    説明

    • imageは、etcdイメージ・ファイルへのパスです。
    • portsは、etcdがトランザクション・コーディネータと通信するポートです。
    • volumesは、Docker Swarmのetcdボリュームへの一意のパスです。Docker Swarmの各サービスは、独自のボリュームを使用します。MicroTxは、インストール・プロセス中にこのボリュームを作成し、証明書ファイルをローカル・ディレクトリからボリュームにコピーします。名前を<absolute_path_to_certificate_directory_in_your_local_machine>:/<unique_name_of_etcd_volume>の形式で指定します。たとえば、<PATH_TO_CFSSL_DIRECTORY>/cfssl:/etcdsslです。
    • ETCD_ROOT_PASSWORDは、etcdに必要な環境変数です。etcdにアクセスするためのパスワードです。
    • ETCD_CERT_FILEは、etcdに必要な環境変数です。Docker Swarmのetcdサービス・ボリューム内のサーバー公開キー・ファイルへのパスです。名前を<unique_name_of_etcd_volume>/<name_of_server_certificate>の形式で指定します。たとえば、/etcdssl/server.pemです。
    • ETCD_KEY_FILEは、etcdに必要な環境変数です。Docker Swarmのetcdサービス・ボリューム内のサーバー秘密キー・ファイルへのパスです。名前を<unique_name_of_etcd_volume>/<name_of_server_private_key_file>の形式で指定します。たとえば、/etcdssl/server-key.pemです。
    • ETCD_LISTEN_CLIENT_URLSは、etcdに必要な環境変数です。<etcd_IP_address>/<etcd_port>の形式で値を指定します。たとえば、etcdとトランザクション・コーディネータがDocker Swarmの同じネットワークにある場合は、https://0.0.0.0:2379です。etcdが別のネットワークに設定されている場合は、etcdのIPアドレスを指定します。2379は、etcdとの通信に使用されるポートです。portsにetcdが使用するポートを指定しています。
    • ETCD_ADVERTISE_CLIENT_URLS=は、etcdに必要な環境変数です。<etcd_IP_address>/<etcd_port>の形式で値を指定します。たとえば、https://127.0.0.1:2379です。etcdが別のネットワークに設定されている場合、127.0.0.1のかわりにetcdのIPアドレスを指定します。2379はetcdとの通信に使用されるポートです。portsにetcdが使用するポートを指定しています。
  3. tcs-stack-compose.yamlファイルのotmm-tcsにある証明書を含むディレクトリへの絶対パスの詳細を追加します。
    次のサンプル・コードは、otmm-tcs下のエントリのスニペットを示しています。
    otmm-tcs:
       volumes:
         - <PATH_TO_CFSSL_DIRECTORY>/cfssl:/app/etcd

    ここで、/app/etcdは、Docker Swarmのトランザクション・コーディネータ・ボリュームへの一意のパスです。Docker Swarmの各サービスは、独自のボリュームを使用します。MicroTxは、インストール・プロセス中にこのボリュームを作成し、証明書ファイルをローカル・ディレクトリからボリュームにコピーします。名前を<absolute_path_to_certificate_directory_in_your_local_machine>:/<unique_name_of_transaction_coordinator_volume>の形式で指定します。たとえば、<PATH_TO_CFSSL_DIRECTORY>/cfssl:/app/etcdです。

  4. 変更内容を保存します。