2024-03-01から1ヶ月間の記事一覧

vim-lsp/clangd/bear/compdb

clangd clangdはclangのLSPサーバ。 例えば、Makefileで-Iオプションとかを使ってて、それによってエディタがincludeパスを正しく見つけられなくて、エラーを出すみたいな問題を解決できる。 vim-lsp LSPクライアントはvim-lspをつかって、その設定はvim-lsp…

perfがうまくいかなかったメモ

xdp_exceptionのイベントを確認したくて、perfを実行したら、以下のようにエラーに遭遇した。 sudo perf record -a -e xdp:xdp_exception sleep 4 event syntax error: 'xdp:xdp_exception' \___ unsupported tracepoint libtraceevent is necessary for tra…

XDPプログラムをCLIでロード/アンロードする方法

iproute2 ロード sudo ip link set dev DEVICE [ { xdp | xdpgeneric | xdpdrv | xdpoffload } { object FILE [ section NAME ] [ verbose ] | pinned FILE } ] アンロード sudo ip link set dev DEVICE xdpgeneric off xdp-loader xdp-loaderはxdp-toolsに…

seccomp

seccompとは Seccompとは、Linuxカーネルが持つセキュリティ機構の一つで、Secure Computing Modeの略です。 簡単に言うと、Seccompはシステムコールの許可・不許可を設定できるようにし、危険なシステムコールを実行できなくするためのものです。 突然の「O…

手元のクラスタ(kind)でgvisorを試す

kindでgvisorを使用できるようにする。 nodeに入る。(自分のケースでは1node構成なので、control-planeになっている。) docker exec -it kind-control kind-control-plane bash gvisorをインストールする。 以下はInstallation - gVisorにあるインストール…

Kubernetesにおけるetcd内のデータの暗号化

問題点:etcdには平文でデータが格納されている。 k8sの各種マニフェストははetcdに平文で保存されている。 secretであっても平文で保存されている。 twoという文字列を隠蔽したくてone-plus-oneというsecretを作成する。 $ k create secret generic one-plu…

etcdv3の探索でetcdctl lsはできない

etcdv3ではもはやetcdctl lsはできない。。。 というより、もはやディレクトリライクな構造になっていないようだ。 似たようなことをやりたければ以下のようにする。 etcdctl get / --keys-only --prefix

NodeRestriction

NodeRestrictionはKuberntesによって提供されるAdmissionPluginでkube-api-serverで--enable-admission-plugins=NodeRestionを指定することで有効化できる。 kubernetes.io 効果1 nodeが他のnodeのラベルを変更することを禁じる。 効果2 nodeにおけるnode-re…

curlでKubernetesAPI

方法 caとclient-certとclient-keyをkubeconfigから抽出する。 k config view --raw | yq .clusters[0].cluster.certificate-authority-data | tr -d '\n' | base64 -d > ca k config view --raw | yq .users[0].user.client-certificate-data | tr -d '\n' …

Kubernetes Authorization

authorization mode kubernetesではauthorizationに関していくつかのモードを提供してくれている。 authorization modeの指定はkube-api-serverで--authorization-modeを使って行う。 よくある、設定は--authorization-mode=Node, RBACになっている。 Kubern…

AppArmor

AppArmor(Application Armor)とは、Linux Security Modulesの一種であり、各プログラムにセキュリティプロファイルを結びつけ、プログラムのできることに制限をかけるプログラムである。プロファイルは、ネットワークアクセス、Raw socket アクセス、ファ…

コンテナのPID namespaceの共有

docker runコマンドの--pidオプションで使用するPID namespaceを指定できる。 このオプションに与える引数は以下の2パターン container:CONTINAER_ID host container:XXXを指定すれば、他のコンテナとPID namespaceを共有できる。 $ docker container run -…