Kubernetes上で動かしているRailsアプリでSentryを使うときにpod名などを表示するようにする
コンテナからpod名を取得できるようにする
Sentryが実行時にpod名を取得するには、アプリケーションの実行時にpod名を何らかの方法で渡したり取得しにいく必要があります。
で、これをするための仕組みがkubernetesには用意されていてDownward API
というみたいです。
Downward APIはvolumeにマウントする方法と環境変数経由で渡す方法が用意されていて、今回の用途でいうと環境変数で取得できるようにするのが楽です。 やり方は単にk8sのmanifestのenvのところで書いてあげるだけでOKです。
ドキュメントはこちら Expose Pod Information to Containers Through Environment Variables
Deploymentで基本的に管理していると思うので、そこのenvのところでこんな感じで書けばOK。
env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace
Ravenの設定時にtagを設定する
あとはこんな風に環境変数をtagsで指定してあげるだけでいけちゃいます。
Raven.configure do |config| config.dsn = ************************************** config.tags = { pod_name: ENV['POD_NAME'], pod_namespace: ENV['POD_NAMESPACE'], } end
様子