kakakakakku blog

Weekly Tech Blog: Keep on Learning!

2022-01-01から1年間の記事一覧

Killercoda : ウェブ上ですぐに試せる Kubernetes 環境 と Ubuntu 環境

今回の記事では Killercoda を使ってウェブ上ですぐに試せる学習コンテンツを作る.前回の記事で紹介した「Katacoda インポート機能」 ではなく,以下のドキュメントを参考にイチからシナリオを作る. killercoda.com 環境 現在 Killercoda は「3種類」の環…

Killercoda : Katacoda の学習コンテンツをそのままインポートできる!

Katacoda は「2022年6月末」にサービス停止になってしまった.今まで本当によく使っていたから残念だった 特に「ウェブ上ですぐに試せる手軽さ」や「学習コンテンツの豊富さ」や「独自コンテンツを作って公開できる仕組み」など,魅力的なポイントが多くあっ…

Pluto : Kubernetes apiVersion の「非推奨と削除」を検出する

Pluto を使うと Kubernetes マニフェストの apiVersion に対して deprecated(非推奨)と removed(削除)を検出できる.警告自体は Deprecated API Migration Guide | Kubernetes を見れば確認できるし,kubectl apply コマンドを実行したときにも表示され…

Python コードでアーキテクチャ図を生成できる Diagrams がめっちゃ便利!

「Diagrams」を使うと Python コードでアーキテクチャ図を生成できる.サポートされているアイコンセットがとても多く AWS や Google Cloud や Microsoft Azure もあれば,Kubernetes やプログラミング言語なども使える.試してみたけどめちゃくちゃ便利!ま…

tree コマンド風のディレクトリ構造を簡単に生成できる「tree.nathanfriend.io」

ブログ記事に「ディレクトリ構造」を載せるときは tree コマンドを使っている.ディレクトリ構造が深すぎるときは tree -L で深さを指定できるし,不要なディレクトリがあるときは tree -I で除外もできる.今まで書いたブログ記事にも多くディレクトリ構造…

jupyter nbconvert コマンドを使って Notebook を変換する

jupyter nbconvert コマンドを使うと Jupyter Notebook を Python コード / PDF / HTML などに変換できる.指定できるフォーマットの一覧は GitHub に載っている.また Jupyter Notebook で使える Download as メニューも同じ仕組みを使っている. github.co…

ytt を使ってテンプレートから YAML を生成する

記述したテンプレートから YAML を生成するツール 「ytt」 を試す.ytt は YAML に対して「テンプレート機能」と「オーバーレイ機能」が使える.VMware 社を中心に開発されているツールセット Carvel に含まれている. carvel.dev YAML のテンプレート機能や…

実験管理を便利に行う MLflow Tracking に入門した

実験管理やモデルレジストリなど,機械学習ライフサイクルをうまく管理するプラットフォームとして有名な「MLflow」に入門する.GitHub リポジトリの Star は 12000 もあってスゴイ!MLflow は MLOps の文脈でもよく聞くので,1度試しておこうと思った. 現…

CKS 対策にもおすすめ /「Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド」を読んだ

コンテナワークロードにおけるセキュリティ対策の理解を深めるため「Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド」を読んだ.実は本書は 2021年7月頃 に1度読み終わっていたけど,実際に気になった部分を試したり,CKS (Certified Kubernet…

Kubernetes 関連のエントリー資格 KCNA (Kubernetes and Cloud Native Associate) に合格した

CNCF (Cloud Native Computing Foundation) の Kubernetes 関連資格 KCNA (Kubernetes and Cloud Native Associate) に合格した! ついに「4冠」になったー まだまだ KCNA の日本語情報は少なく,資格の普及も兼ねて紹介記事としてまとめておこうと思う. w…

Kubernetes の Service で「環境変数」を使ったサービスディスカバリを試す

Kubernetes の Service ドキュメントを読み直していたら「サービスディスカバリ」のモードとして「環境変数」と「DNS」をサポートしていると書いてあった.一般的によく使うのは「DNS」で {ServiceName}.{NamespaceName}.svc.cluster.local というレコードで…

kubectl で Taint を一覧するコマンド例

Kubernetes でノードの Taint を確認するときに「一覧する」コマンドがなくて困るときがある.--show-labels オプションのように --show-taints オプションがあったら良いのに!例えば kubectl describe node xxx | grep Taints コマンドを実行すれば「ノー…

Pandas で指数表記を無効化する

Jupyter Notebook で Pandas のコードを実装しているときに「指数表記を無効化」する場合は pd.options の display.float_format を設定する.以下にサンプルとして「桁数 2」と「桁数 6」の例を載せておく. # 小数点以下 桁数 2 pd.options.display.float_…

Re:VIEW で「節単位」に分割したファイルをビルドする

Re:VIEW で catalog.yml に設定するファイルの分割粒度は「章単位 (Chapter)」になっている.しかし,文章量が増えてくると運用面で「節単位 (Section)」にファイルを分割したくなってくることもある.例えば,以下のように「1章(1節)」と「2章(2節)」と…

CKS (Certified Kubernetes Security Specialist) に合格した : 勉強方法をまとめる

Kubernetes の資格 CKS (Certified Kubernetes Security Specialist) に合格した やったー!Kubernetes 関連は3個目! 今回の記事では「勉強方法」をまとめようと思う. www.cncf.io 時系列で書くと,2021年2-3月に CKAD (Certified Kubernetes Application…

Kubernetes と Falco を組み合わせて脅威検出に入門する

Kubernetes でコンテナワークロードの脅威検出として使える「Falco」に入門する.CNCF (Cloud Native Computing Foundation) で Incubating に位置しているプロジェクトで,今回は実際に Falco を使って Pod に対する操作(振る舞い)を検出したり,独自ルー…

Flux v2 で Image Ops を実現する「自動イメージ更新機能」を試した

GitOps ソフトウェアの Flux v1 にはイメージレジストリを監視してイメージタグを自動的に最新化する「Automate image updates(自動イメージ更新)機能」が組み込まれている.別名で「Image Ops」と言ったりもする.具体的には Deployment YAML などの anno…

Pod でルートファイルシステムを読み取り専用にする securityContext.readOnlyRootFilesystem

Kubernetes で Pod(正確にはコンテナ単位)に securityContext.readOnlyRootFilesystem: true を設定すると,ルートファイルシステムを読み取り専用にして書き込み操作を抑止できる.アプリケーションのセキュリティ対策として使える.補足をすると Kuberne…

kubelet が他ノードのラベルを操作しないように制限できる NodeRestriction を試した

Kubernetes で有効化できる Admission Plugin である「NodeRestriction」の動作確認をした.簡単にまとめておく! 「NodeRestriction」は kubelet に対して Node / Pod の操作範囲を制限できる.具体例を挙げると kubelet によるラベル操作を自ノードに制限…

Re:VIEW で textlint-filter-rule-comments を使う

textlint で textlint-filter-rule-comments を使うとコメント記法で「特定のルールを無視する」範囲を設定できる. github.com しかし textlint-plugin-review と組み合わせて Re:VIEW で textlint-filter-rule-comments を使う場合は ではなく #@# という…

Kubernetes と AppArmor を組み合わせてファイル操作を制限する

AppArmor (Application Armor) とは Linux Security Modules の1つで,プログラムに対して「ファイル操作」や「マウント操作」などを制限する.詳しくは以下のドキュメントに載っている. ubuntu.com コンテナワークロードのセキュリティ対策として,AppArmo…

便利な Kubernetes マニフェスト用エディタ「Monokle」

最近「Monokle」を使っている.Monokle(モノクレ)は「Kubernetes マニフェスト用エディタ」とも言えるアプリで,2週間ほど使って操作にも慣れてきたので紹介する!macOS でも Windows でもアプリをダウンロードすればすぐに使えるぞ! github.com 機能 ☸️ …

Software Design 2022年4月号の特集「本質から学ぶ Git」を読んだ

「Software Design 2022年4月号」を読んだ.本誌の第2特集「堂々と使える!人に教えられる!本質から学ぶ Git」に寄稿をされた id:syobochim に献本(ギフトコード)をもらったので第2特集を中心にまとめる.献本ありがとうございます! Software Design (ソ…

Descheduler for Kubernetes : 戦略に違反する Pod を他のノードに移動する

Kubernetes を使っていると,運用面で起動中の Pod を他のノードに移動(再スケジューリング)したくなる場面がある.以下に具体的な例を挙げる.理由としては,Kubernetes では kube-scheduler によって Pod を起動する前にノードが決まる仕組み(スケジュ…

Pod Topology Spread Constraints : Pod を Multi AZ 配置する

Kubernetes で「Pod Topology Spread Constraints」を使うと Pod をスケジューリングするときの制約条件を柔軟に設定できる.今回は Zone Spread (Multi AZ) を試す!詳しくは以下のドキュメントに載っている! kubernetes.io spec.topologySpreadConstraint…

Pandas で NDJSON (.jsonl) を読み込む

Pandas で NDJSON (Newline Delimited JSON) を読み込む場合 read_json() 関数に lines=True パラメータを設定すれば OK! pandas.pydata.org NDJSON サンプル dataset.jsonl { "id": 1, "name": "Alice" } { "id": 2, "name": "Bob" } { "id": 3, "name": "…

Airflow : SlackAPIPostOperator と SqsPublishOperator に入門する

前回の記事では Airflow 検証環境にプリセットされている DAG を使って BashOperator と PythonOperator と BranchPythonOperator を試した.今回は新しく DAG を作りつつ,気になる他のオペレーターを試す. kakakakakku.hatenablog.com SlackAPIPostOperat…

無料で受験できる Python 新試験「PythonZen & PEP 8 検定試験」に合格した

2022年3月1日に β リリースになった「一般社団法人 Python エンジニア育成推進協会」の新試験「PythonZen & PEP 8 検定試験」に合格した現在まだ β だけど合格すると「本認定」になる.PythonZen (PEP 20 - The Zen of Python) と PEP 8 から出題されるため…

プロダクトのロードマップを公開できるサービス「Roadmap.show」を試した

プロダクトのロードマップを公開できるサービス「Roadmap.show」を試した! サービス自体はとてもシンプルで,例えば「機能 A は開発中だよ!」とか「機能 B は予定してるけどまだ未着手だよ!」という状況をユーザーに伝えることができる.以下の YouTube …

Airflow : PythonOperator と BranchPythonOperator に入門する

前回の記事では Airflow 検証環境を使って「Airflow Tutorial」を進めた.BashOperator を使った基本的な DAG を理解できるようになった!今回はプリセットされている他の DAG を使って BashOperator と PythonOperator と BranchPythonOperator を試す. ka…