Skip to content

Posts

Kubernetes Meetup Tokyo #25

https://k8sjp.connpass.com/event/150873/

何度か応募するも抽選に落ちて、初参加です。

ストレージ系の話が中心です。

18:30~19:00 受付開始 (19:30まで)、ソーシャル

19:00~19:05 Opening (5min)

19:05~19:35 入門、Kubernetes Persistent Volume (30min)

坂下 幸徳(Twitter: @ysakashita3, GitHub: ysakashita), ゼットラボ株式会社

  • ストレージの苦手意識を払拭する
  • データプレーンとコントロールプレーン
    • データ:格納と転送担当
    • コントロール:管理担当
  • ストレージの種別
    • ブロック:内蔵ドライブと同じRawデバイス:性能High:DBやOS
    • ファイル:ネットワークドライブ:性能Mid:ファイル共有
    • オブジェクト:オブジェクト単位でHostからはHTTPアクセス:性能Low:写真や動画格納
  • Persistentとは
    • Ephemeralの対義語。
    • 永続的
  • ストレージのモデル
    • PersistentVolumeClaim, PersistentVolume, StorageClass
    • オブジェクトストレージ以外(オブジェクトストレージはそもそもHTTPでアクセスできるので)
  • リソースの範囲と権限
    • SC, PVはすべてのNamesoaceで共通
  • pvc
    • Volumeの要求仕様を表すリソース
  • ロックメカニズム
    • ブロック:LBAのため、ロックメカニズムを持っていない
      • 複数ホストから同時に書き込まないようにする
    • ファイル
      • ファイル単位でロック
      • 複数ホストから読み書き可能
  • pv
    • Volume を表すリソース
  • sc
    • ストレージプールを表すモデル
    • Provisionerがストレージ装置のAPIを呼び出す
  • CSI(Container Storage Interface)
    • コンテナオーケストレーション向けの標準仕様
    • K8s 1.13 で GA
  • StatefulSet(sts)
    • pv, pvcを便利かつ安全に使う
  • Rolling Update(セルフヒーリングも同様)
    • podは再作成
    • pv, pscはそのまま
  • FAQ
    • ストレージは何を選んだら良いか
      • 用途、データの価値による
    • CinderとA社どちらが良いか
      • 比較対象が異なる
      • K8sやCSIがサポートしてないならCinderを挟むのがあり
    • DB用途
      • 特別な理由がなければブロックストレージが良い
      • 性能問題、ロックメカニズムの問題
      • ファイルストレージはSyncで書き込まれる保証がない
    • Deploymentでpv使ってもよいか
      • ストレージに優しくないのでStatefulSetがオススメ
      • RWXをサポートしていないストレージはsts一択

19:35~20:10 KubernetesにおけるCSIについて (30min)

早川 大貴 (Twitter: bells17_, Github: bells17), 株式会社IDCフロンティア

  • https://docs.google.com/presentation/d/1S0FcCAgZn11ZFbJfU2eUhOa--vONqrsd0waRvwoTBcE/edit
  • CSI移行のモチベーション
    • ストレージプロバイダ
      • CSIプラグインを実装するだけで各種コンテナオーケストレーター(OC)に対応できる
    • K8s
      • ボリュームプラグインを本体から除外できる
      • バイナリサイズの削減など期待
  • 機材トラブル
  • CSIで定義されている仕様
    • ドライバの通信方法や提供方法
      • コンテナイメージ形式で提供する
    • 提供する機能
    • gRPCのインターフェース
  • RPC service
    • Identity Service
    • Controller Service
    • Node Service
  • K8sとCSIの連携
    • Controller Plugin/Node Pluginをサイドカー的に使用する

20:10~20:45 How to develop the high-available Redis database application on Kubernetes (en/英語) (30min)

Ran Xu (Github: fengzixu Twitter: Haierdi0715)

  • Higily Reliable Data
    • backup
  • High Available Service
    • data link
      • LBで分散管理

20:45~21:10 懇親タイム sponsored by CyberAgent

21:10-21:30 LT大会 (5min x 5) -

  • Rook(るーく)/ Ceph
    • Host-based と PVC-based
    • Nodeに特別なNodeが必要なくなる

  • Kubespray
  • CentOSで動かなくてCoreOSにしたら動いた
  • マネージドサービスを使ったほうが楽

Mattermostを使ってみる

OracleCloudで動かしてみる。

dockerとdocker-composeとgitをインストール。

https://github.com/mattermost/mattermost-docker をgit cloneして、docker-compose.ymlのパスワードをランダムな文字列に変更したあと、docker-compose up -d

  Running setup.py install for gevent: started
    Running setup.py install for gevent: still running...

が結構時間かかる。

いきなりdocker-compose up -dではなく、docker-compose buildからやったほうが安心かも。

Read more

パイプラインをGitHub Actionsに移行

AWS Amplifyとか、Netlify試したりしていたら、Azure Pipelineでのこのページのビルドが通らなくなってしまったので、設定し直しのついでにGitHub Actionsに移行してみた。

手順はQiitaの記事を見ながらそのままで。

思ったより簡単にできてしまって、最初からこれでよかった感が。。

Go Release 10 Year Anniversary Party in Tokyo

https://gocon.connpass.com/event/153665/

VMwareからのハシゴです。 出る前にDatadogのデモ見てたら出るのが遅くなってしまった。

19:00 - 19:30 Open

  • ケーキ!

19:30 - 20:00 History of Go by ymotongpoo

  • 30 October, 2009
    • 社内公開
  • 11 November, 2009
  • 1960-2007 - Foundations
    • HWごとに言語があった時代(-1950)
    • Jan 1960 ALGOL
    • 1964-2007 Concurrency
      • 1964 Unix Pipe
      • 1978 CSP(Communication Sequential Process)
  • 2007-2009 - Creation
    • C++11のTechTalk行ったら新機能の話ばかりだった
    • C++でコンパイルするのに45分かかる
    • コンパイル待ち時間の間に同僚と議論していたのがGoの始まり
    • Goは創造と収斂
    • No in Temporary, Yes is Forever
    • Ian: I never once failed at implementing generics. I just found out 99 ways not to
    • Goは良いデザインが来るまでは、NOと言う
    • Genericsについて最初に言及したのは2009年
  • 2009-2019 - Reflection
    • 2013頃からクラウド系のツールがgoで書かれ始めている
    • どんどん成長している
  • 2020- - Prediction
    • Go 2 に向けて
    • 教育向け
    • Go 2 というのは後方互換性が保てなかったときに初めて出るもの

20:00 - 20:20 AppEngine Standard for Go の移り変わり sinmetalの思い出から by sinmetal

  • ピザ取りに行ってて最初の方聞き逃した。。
  • 2nd genはGAEの依存を取り除いたもの
    • バージョン追従が早くなった

20:20 - 20:30 Break

ケーキカット

Read more

VMware Cloud Native Day

https://vm-event.jp/cnday/

初参加です。

明日明後日位のイベントのday0的な位置づけ K8sなど中心に。

13:00- General Session

パットゲルシンガー、レイ・オファレル、クレイグ・マクラッキー

  • Technolosists who master multi-cloud will own the next decade.
  • The Five S’s
    • Soeed, Security, Scalability, Stability, (Cost)Savings

14:30- 『クラウドネイティブ人間』になるための自動化入門

草間一人(Pivotal Labs)

  • 自動化:アプリにもインフラにも共通する項目
  • なぜ自動化したいのか
    • 生産性を上げるため
      • 他者の力を借りる
        • 「水車」紀元前200年
          • 昔からあったが、普及していなかった
            • 奴隷を使ったほうが効率が良かった(コスト)
        • 現代最強の労働力:コンピューター
  • クラウドのメリット
    • APIがある
  • アウトプットの違い
    • 数十倍の差がある組織は実際ある
    • エンジニア個々の能力がそうであるとは限らない
  • 0リング理論
    • たった1箇所の問題が全体に影響すること
    • スペースシャトルチャレンジャーの事故から
    • 逆に、一部のを劇的に改善しても、大して変わらない
    • ステップを減らすと出力が改善する
    • マイクロ秒、ミリ秒の世界では、人間の介在自体が0リングである
  • クラウドに置き換えて改善という考え方から脱却しないといけない
    • →クラウドネイティブ
  • IaC, オーケストレーション
    • K8s
  • NoOps
    • No Uncomfortable Ops
    • なぜ運用は嬉しくないのか
      • たくさんの問題が発生する
        • サーバーダウン、NW障害、、ログ対応、昼夜問わず・・
  • 手続き的vs宣言的
    • K8sは宣言的
    • APIを順番に叩いていくのが手続き的
  • Project Pacific
    • vSpereの中でK8sが動くようになる
    • コンテナもVMもK8sクラスタ自体も宣言的にデプロイできる
  • 自動化の不都合な真実
    • 自動化は腐る
      • リポジトリからパッケージがなくなっていて死ぬ
      • パッケージの依存関係が壊れて死ぬ
      • 継ぎ足ししていたら環境が汚れて
      • 自動化ツールのバージョンアップで
      • 自動化ツールがオワコンになって
      • 前任者に寄る自動化が魔窟で
      • 上記の問題点を運用でカバーしてじわじわ
    • クラウドネイティブな技術も腐る
      • ツールのバージョンアップで死ぬ頻度は高い
      • 様々なツールが出てきているが多くは淘汰される
      • 正しく理解せず使うと、結局運用でカバーすることに
      • 例:istioのテスト保証K8sバージョン
    • 良くなっている麺も多い
      • IaCが矯正される
      • 環境変数を使うので環境の汚染が置きにくい
      • 決まったフォーマットでコード化するので魔窟になりにくい
      • コード化しているので複数人でレビューできる
      • なりにくいだけで、ならないわけではない
    • テストをしよう
    • いきなり全部を自動化しようとは考えないこと
      • 自動化した部分がトラブル続きだった場合は、結果として出力が落ちてしまう
    • 全体プロセスの見直しも重要
      • テクノロジーだけで解決するのではなく、全体フローから見直し、不要なものを削除する
  • Factorioおすすめ

15:30- Anthosで実現すつモダンなアプリケーション開発

篠原一徳(Google Cloud)

  • Anthosとは
    • アプリケーションのモダナイぜーションのためのプラットフォーム
    • GKEをオンプレや他社クラウドでも利用できるようにする
    • 従量課金ではなく、サブスクリプションライセンスで提供している
    • 古代ギリシャ語で「花」
  • モダナイぜーションの目指すところ
    • 高速なリリースサイクル
    • 追加・変更につよい
    • 容易に拡張
    • 高可用性の維持・向上
  • モダナイぜーションに向けた技術観点でのアプローチ
    • マイクロサービス化
    • インフラとアプリの疎結合化
      • コンテナに関連をまとめる
    • サーバーレス
    • 自動化
    • マネージドサービス活用(注目)
      • Toil(面倒ごと)を抱えない
  • Anthos Config Management
    • NamespaceやQuota, ROleBindingなどの設定をハイブリッドがK8s環境に自動的に展開
      • 設定をクラスタ間で同期
      • コンプライアンスポリシーを継続的に適用
    • Policy as code
    • 各クラスタがgitに保存した設定を監視している。変更があれば差分を自動的に反映する。
    • クラスタごとに設定を分けたい場合は、gitのブランチを分けて管理する
  • Anthos Service Mesh
    • マネージドIstio
    • コントロールプレーンをGoogleが管理
    • Envoy(あんぼい)
  • ユースケース
    • ハイブリッド構成
      • スケーリングを柔軟に行いたいアプリをクラウドに
      • パブリッククラウドに保存できない情報を扱うアプリをオンプレに
      • 既存システム(オンプレ)との連携がタイトなアプリをオンプレに
      • パブリッククラウドのマネージドサービスと連携したいときにクラウドに
    • マネージドK8sをどのクラウドでも同じように動くように
      • クラウドベンダー間でもサポートバージョンなどの差異がある
    • Monitoring / Logging の一元化
      • Stackdriverに集約できる
    • ソフトウェアサプライチェーンの統一
      • 野良Jenkinsの駆逐

16:30- Kubernetesセキュリティのベストプラクティス

仙波慎也(VMware)

  • CNCFのクラウドネイティブ定義
    • 2015年から
  • CNCFのK8sセキュリティベストプラクティス
    • 全部で9つある
    • 最新バージョンへのアップグレード
      • インプレースアップグレード
      • 新しいクラスタを立ち上げる
      • データタイプ
        • ステートレス:マスターノード、ワーカノード
        • ステートフル:etcd、永続ボリューム
    • RBAC
      • ロールスプロール問題
        • クラスタとNAMESPACEの乱立に寄り、無秩序な状態になっている
        • 考えすぎない。プリセットで用意されているロールを活用する
          • Developer(単一のNSへのadmin), Mangers(view), Cluster-Administrator
    • ネットワークポリシー
      • NS、pod、ipセレクタで制御する
    • 監査ログの有効化
      • APIサーバーは、監査目的ですべての要求を記録する
      • 監査ログは、非常にノイズが多い場合があるため、必要なもののみ記録する
    • ノードセキュリティの強化
      • TLSは、それをサポートするすべてのコンポーネントで有効にする必要がある
      • etcdはコントローラーから分離し、ファイアウォールで保護する必要がある
  • 一貫性のあるセキュリティ運用が求められる
    • VMware NSXでできる

17:30- お客様事例から学ぶKubernetesプロジェクト成功の秘訣

スコット・ロウ(VMware)

  • 銀行のシステムリプレイスの話
  • K8sに移行
  • CustomResourceDefinitions(CRD)を使った
  • Key takeaways
    • Start with a single use case, and solve that user case first.
    • The solution doesn’t have to be perfect from the beginning.
      • Find what works and replace what doesn’t work.
      • Using a building block approach makes it easier to swap components.

Oracle Cloudにインスタンス作成

Oracle Cloudに登録してから、なかなか無料インスタンス作成できずにいたけれど、今日試したら作れた。

sshログインしようとして、Console Connections作ってそこに出たコマンドコピペして、ログインアカウントとパスワードがわからずに詰む。

インスタンス作成時に特に指定してなかったけど、opcが割り当てられている。

Read more

Bump loofah from 2.2.3 to 2.3.1

GitHubからgem更新を促すメールがきた。

今回からdependabotがやってくれるようになったらしく、すでにPullReqが作成されていた(すごい)。

Gemfile.lockの差分確認して問題なければマージして終わり。これは便利だ。

Chromebookで画像編集

イベントの写真をブログに載せるのに、スマホのそのままだとサイズでかすぎるし、トリミングやリサイズもしたいときにどうすれば良いのか定まっていなかった。

とりあえずこれで行けそうな方法が見つかったのでメモ。

  • やりたいこと

    • 画像のリサイズ、トリミング
    • Googleフォトにアップした画像を選択したい
    • 編集した画像はGithubにアップロードする
  • 試したこと

    Read more

golang.tokyo #27

https://techplay.jp/event/753881

先日のGo Conferenceには参加できなかったので、当選できてよかった。

19:00 ~ 開場・受付

乾杯!

19:30 ~ 19:35 オープニング

  • DevQuizの解説。思ってた動作と違かった。。
  • 当日発表になった登壇者とスケジュール。予定より本数が少なくなっていました。

19:35 ~ 19:55 Session 1

Creating shell magager with golang / @yusuke_k0matsu

19:55 ~ 20:15 Session 2

Multi Cloud Serverless Architecture / @shibu_jp

20:20 ~ 20:35 休憩

20:35 ~ 20:55 Session 3

uber-go/guide の解説 / @knsh14

  • https://docs.google.com/presentation/d/10H6tvkVG2Qb9DNeSITAiKP-5BJKHqwnWFRCxEQYbpYQ/edit#slide=id.p
  • Uber社内で使われているスタイルガイド
  • ガイドライン / パフォーマンス / スタイル / パターン
  • Be Consistent
    • 可読性、保守性のためにコードの一貫性を保ちましょう
  • linter
    • go vet, goimports, golangci-lint
    • ulinter 作成中
  • Handle Tpe Assertion Failures
    • 型アサーションの結果をハンドリングしているかチェック
  • linterの作り方
    • ASTを作ってパターンを見ていく
  • Start Enums as One
    • enumのゼロ(iota)は、初期化(goのデフォルト初期値)しただけなのか明示的に設定したのか区別しにくいため
  • Converting number to string
    • fmt.Printfよりstrconvパッケージを使ったほうがパフォーマンス有利なので

20:55 ~ 21:00 LT1

SaaS関連系における静的解析の活用 / @yoheimiyamoto_

21:00 ~ 21:50 終了・撤収