簡単なLinkerdnamerプラグインを作成する方法は?

Silk0vsky

カスタムnamerプラグインを使用してlinkerdを実行しようとしていますが、起動に失敗します。io.l5d.fsのソースコードを入手し、すべてのビジネスロジックを切り取って、ハードコードされたアドレスを使用した最小限の例を取得しました。

イニシャライザー:

package com.consg
import io.buoyant.namer.NamerInitializer

class MyInitializer extends NamerInitializer {
  val configClass = classOf[MyConfig]
  override def configId = "com.consg.MyConfig"
}

object MyInitializer extends MyInitializer

構成:

package com.consg

import com.fasterxml.jackson.annotation.JsonIgnore
import com.twitter.finagle.{Path, Stack}
import io.buoyant.config.types.Directory
import io.buoyant.namer.NamerConfig

case class MyConfig(rootDir: Directory) extends NamerConfig {

  @JsonIgnore
  override def defaultPrefix: Path = Path.read("/my.namer")

  @JsonIgnore
  def newNamer(params: Stack.Params) = {
    println("params: " + params)
    new MyNamer(rootDir.path, prefix)
  }

}

ナメル:

package com.consg

import java.nio.file.{Path => NioPath}

import com.twitter.finagle._
import com.twitter.util._
import io.buoyant.namer.EnumeratingNamer

class MyNamer(rootDir: NioPath, prefix: Path) extends EnumeratingNamer {

  def lookup(path: Path): Activity[NameTree[Name]] = {
    println("lookup path: " + path)

    val address1 = Address("127.0.0.1", 7777)
    val addr = Addr.Bound(Set(address1), Addr.Metadata.empty)
    val varr = Var.apply(addr)

    Activity.value(NameTree.Leaf(Name.Bound(varr, path, path)))
  }

  override def getAllNames: Activity[Set[Path]] = {
    println("getAllNames!")
    Activity.value(Set.apply(Path.read("animal")))
  }
}

build.sbt

name := "plug"
version := "1"
scalaVersion := "2.12.1"

libraryDependencies += "io.buoyant" % "linkerd-core_2.12" % "1.3.2" % "provided"

また、META-INF / services /io.buoyant.namer.NamerInitializerの下にある「com.consg.MyInitializer」サービスを公開しました

次に、プラグインjarを作成し、プラグイン(linkerd-1.3.1 / plugins)の下に配置します。

今私はconfigでlinkerdを実行しようとしています:

namers:
- kind: com.consg.MyConfig
  rootDir: disco

routers:
- protocol: http
  dtab: /svc => /#/my.namer;
  servers:
  - port: 8080

そしてその結果、私は次のようになりました。

com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'com.consg.MyConfig' into a subtype of [simple type, class io.buoyant.namer.NamerConfig]: known type ids = [NamerConfig, io.l5d.consul, io.l5d.curator, io.l5d.dnssrv, io.l5d.fs, io.l5d.k8s, io.l5d.k8s.external, io.l5d.k8s.ns, io.l5d.marathon, io.l5d.rewrite, io.l5d.serversets, io.l5d.zkLeader]

したがって、プラグインがまったくロードされていないように見えます。助けが要る。

githubのコード

Silk0vsky

私の問題は未定義の$ L5D_HOME環境変数だったようです。設定後、プラグインが有効になりました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IntelliJ IDEA:プラグインなしでタイプセーフなビルダーを作成するための簡単な方法はありますか?

分類Dev

簡単なJqueryスライディングメニューを作成する方法は?

分類Dev

ファイルをJavascriptプログラムにリンクする最も簡単な方法は何ですか?

分類Dev

mySQLを使用してPHPで簡単なログインを作成する方法

分類Dev

簡単なラッピングCocoaアプリを作成するにはどうすればよいですか?

分類Dev

簡単なラッピングCocoaアプリを作成するにはどうすればよいですか?

分類Dev

Matlabを使用して簡単なグラフを作成する方法

分類Dev

簡単な方法でforボタンのforループを作成する方法は?

分類Dev

コマンドライン(pdflatexなし)を使用してテンプレートからpdfを作成する最も簡単な方法は?

分類Dev

私は簡単なシューティングゲームプログラムの特定の方法を作成して理解するのに苦労しています

分類Dev

Pythonで簡単な折れ線グラフを作成する方法

分類Dev

Pythonで簡単なフラグを作成する方法

分類Dev

Python2.7で簡単なグラフを作成する方法

分類Dev

単純なパンダシリーズを考えると、そのヒストグラム(棒グラフ)を作成する簡単な方法は何ですか?

分類Dev

Javaで簡単なプログラムをループする方法は?

分類Dev

ExcelVBAアドインの簡単なヘルプページを作成する方法

分類Dev

ウェブサイトでreCAPTCHAPHPプラグインを使用するための最良の簡単な方法

分類Dev

インタラクティブなJupyterNotebookからWebアプリを作成する最も簡単な方法は何ですか?

分類Dev

Neo4jで簡単なプラグインを作成するにはどうすればよいですか?

分類Dev

ブートストラップを使用して簡単なWebサイトテンプレートを作成する方法は?

分類Dev

onTap関数をWeChatミニプログラムのボタンにバインドする簡単な方法

分類Dev

AndroidStudioでシェイプを作成する最も簡単な方法

分類Dev

テレグラムボットをWebにデプロイする最も簡単な方法は何ですか?

分類Dev

Pythonで簡単なプライムシーブを作成する

分類Dev

Gulpと関連するプラグインのセットアップを自動化する最も簡単な方法は何ですか?

分類Dev

プライベート変数をインクリメントする簡単な方法は?

分類Dev

簡単なReactドロップダウンを作成する方法

分類Dev

デバッグ用のコマンドライン引数を設定する簡単な方法は?

分類Dev

「一意の」バインディングを取得する簡単な方法は?

Related 関連記事

  1. 1

    IntelliJ IDEA:プラグインなしでタイプセーフなビルダーを作成するための簡単な方法はありますか?

  2. 2

    簡単なJqueryスライディングメニューを作成する方法は?

  3. 3

    ファイルをJavascriptプログラムにリンクする最も簡単な方法は何ですか?

  4. 4

    mySQLを使用してPHPで簡単なログインを作成する方法

  5. 5

    簡単なラッピングCocoaアプリを作成するにはどうすればよいですか?

  6. 6

    簡単なラッピングCocoaアプリを作成するにはどうすればよいですか?

  7. 7

    Matlabを使用して簡単なグラフを作成する方法

  8. 8

    簡単な方法でforボタンのforループを作成する方法は?

  9. 9

    コマンドライン(pdflatexなし)を使用してテンプレートからpdfを作成する最も簡単な方法は?

  10. 10

    私は簡単なシューティングゲームプログラムの特定の方法を作成して理解するのに苦労しています

  11. 11

    Pythonで簡単な折れ線グラフを作成する方法

  12. 12

    Pythonで簡単なフラグを作成する方法

  13. 13

    Python2.7で簡単なグラフを作成する方法

  14. 14

    単純なパンダシリーズを考えると、そのヒストグラム(棒グラフ)を作成する簡単な方法は何ですか?

  15. 15

    Javaで簡単なプログラムをループする方法は?

  16. 16

    ExcelVBAアドインの簡単なヘルプページを作成する方法

  17. 17

    ウェブサイトでreCAPTCHAPHPプラグインを使用するための最良の簡単な方法

  18. 18

    インタラクティブなJupyterNotebookからWebアプリを作成する最も簡単な方法は何ですか?

  19. 19

    Neo4jで簡単なプラグインを作成するにはどうすればよいですか?

  20. 20

    ブートストラップを使用して簡単なWebサイトテンプレートを作成する方法は?

  21. 21

    onTap関数をWeChatミニプログラムのボタンにバインドする簡単な方法

  22. 22

    AndroidStudioでシェイプを作成する最も簡単な方法

  23. 23

    テレグラムボットをWebにデプロイする最も簡単な方法は何ですか?

  24. 24

    Pythonで簡単なプライムシーブを作成する

  25. 25

    Gulpと関連するプラグインのセットアップを自動化する最も簡単な方法は何ですか?

  26. 26

    プライベート変数をインクリメントする簡単な方法は?

  27. 27

    簡単なReactドロップダウンを作成する方法

  28. 28

    デバッグ用のコマンドライン引数を設定する簡単な方法は?

  29. 29

    「一意の」バインディングを取得する簡単な方法は?

ホットタグ

アーカイブ