Carpe Diem

備忘録

VaultのTokenとLease

概要

HashiCorp VaultのTokenにはLeaseという概念があります。
この概念によってよりローテーションを強制し、秘密情報のセキュアな管理をすることが可能です。

環境

  • Vault 1.2.1

default_lease_ttlmax_lease_ttl

root tokenを除く全てのtokenにはdefault_lease_ttlmax_lease_ttlの2つのTTLがあります。

$ vault read sys/auth/token/tune
Key                  Value
---                  -----
default_lease_ttl    768h
force_no_cache       false
max_lease_ttl        768h
token_type           default-service

説明すると以下です。

TTL 説明
default_lease_ttl tokenをcreate, renewした時のTTL
max_lease_ttl renewの上限値
expire_time>issue_time+max_lease_ttlとなるrenewはNG
デフォルト32日

このように2つの期限でvaultのtokenは管理されています。

続きを読む

Kubernetes の Ingress を理解する

概要

KubernetesにはL4ロードバランサのServiceとL7のIngressがあります。
IngressはControllerによって挙動が大きく変わるので実際に手を動かして学んでみます。

環境

Ingress Controller

Ingress ControllerはIngressリソースを動かすためのものです。

例えば以下のようなIngress Controllerがあります。

Ingress Controllers | Kubernetes

続きを読む

Helm の基本的な使い方

概要

Kubernetesの問題の1つに、マニフェストファイルがたくさんできるYAMLの壁と呼ばれるものがあります。

  • image
  • mountするファイル
  • label
  • リソース割当

といった一部の要素だけ変えたい時、ほとんど構成は同じで似たようなマニフェストファイルが大量に出てしまいます。
そしてそういったファイルは往々にして管理されず負債となっていきます。

それを解決するのがHelmというKubernetesのパッケージマネージャです。
共通部分をテンプレート化し、可変部分を変数で扱えるようになります。

今回はそのHelmの基本的な使い方を説明します。

環境

システム図

Helmをシステムアーキテクチャは以下です。

f:id:quoll00:20190806154207p:plain

ref: Simplifying App Deployment in Kubernetes with Helm Charts

図からわかるようにTillerと呼ばれるサーバがKubernetes Cluster内で起動し、api-serverをコールしてデプロイを行います。

続きを読む

Kubernetes のRBACを理解する

概要

KubernetesではRBACという、各種リソースへのアクセス権限を管理する仕組みが用意されてます。

たとえばPrometheusのようにKubernetesAPIを叩く場合、各リソースへアクセスするための権限が必要になります。

今回はそれの基本的な仕組みや設定方法を説明します。

環境

Service Account

KubernetesにはUserAccountとServiceAccountがあります。大きな違いとしては以下です。

UserAccount ServiceAccount
対象 プロセス
権限範囲 グローバル。
GCPのアカウントや
AWSのIAMとリンクする。
namespace区切り。
Kubernetesの世界で完結する。

ref: Managing Service Accounts - Kubernetes

Pod起動時には必ずServiceAccountを1つ割り当てる必要があります。
指定しない場合はdefault ServiceAccountが割り当てられます。

続きを読む

Prometheus でNodeのモニタリング

概要

christina04.hatenablog.com

でNode exporterを使った基本的な監視方法を説明しましたが、今回は具体的にどんな項目をどう監視すべきかを説明します。

USEメソッド

サーバの監視すべき項目の指標としてUSEメソッドというものがあります。

項目 説明
Utilization リソースの使用率
Saturation リソースを割けずキューで処理待ちになっている仕事の量
Errors エラーイベントの数

各リソース(CPU、ディスク、メモリ、ネットワークなど)で↑の項目をチェックすべき、という指標です。

※とはいうもののリソースによって計測できないものも多々あります

続きを読む

GitHubを使った開発であると便利なツール

概要

GitHubを使った開発で使ってるツールを紹介していきます。
どれもあると無いとでは開発スピードが大きく変わります。

Fork

GUIのGitクライアントです。

git-fork.com

以前はSourcetreeを使っていましたが管理するファイルが増えると非常に重くなったのでリプレースしました。

メリット

  • とにかく軽い
  • タブ型なので複数リポジトリ見ても散乱しない
  • 対話型のリベース・コンフリクト修正機能がある
  • リポジトリの追加しやすい
  • 無料
  • 複数ブランチ扱ってる時に、取り込んでないコミットが非アクティブだから見やすい
続きを読む

Prometheus の監視対象を ServiceDiscovery で動的に設定する

概要

PrometheusはPull型の監視ツールであるため、監視対象がどれかを教えてあげなければいけません。
これまでの記事は全てstatic_configsを用いた静的な値で、スケールした時やサービスが増減した時に柔軟性がありません。

PrometheusはServiceDiscoveryを指定することで動的にターゲットを検知できるのでそれを用います。

環境

利用できるService Discoveryは?

Configuration | Prometheus に対応しているSD一覧があります。
主に使いそうなのは以下でしょうか。

続きを読む