zaki work log

作業ログやら生活ログやらなんやら

Kubernetes

pod内からkubectlを実行する場合はkubeconfigファイルは不要でRBACを設定すれば良い

kubectlコマンドって$HOME/.kube/configファイルか、--kubeconfigかKUBECONFIG環境変数に指定したファイルの接続情報を見て実行するものと思ってたので、「podの中からkubectlコマンドを実行したいときはsecretとか経由でkubeconfigファイルを注入する必要が…

kubectl patchコマンド実行のときの差分を確認する

本来であればマニフェストファイルを更新してkubectl applyの替わりにkubectl diffを実行すれば、リソースの変更箇所をunified diff形式で確認できる。 しかし、いろいろな事情でマニフェストファイルを管理できておらず、リソースの変更をkubectl patchでバ…

[AWX] K8sのRBACで認証するkube-rbac-proxyを経由したAWX Operatorのメトリクス情報の参照

先日AWXデプロイ時にkube-rbac-proxyのpullエラーが発生して代替としてquay.io/brancz/kube-rbac-proxyを使用するよう修正したが、これがそもそも何をやっているのか、という話。 github.com 最新のdevel版で使われていないので、将来はこの機能がなくなるの…

KeycloakのKubernetesクラスターへのデプロイを見直す (Operatorお試し)

ここ最近Keycloakは初めての利用だったため、以下のGetting startedのKubernetesのページに載っているデプロイ方法で用意されているマニフェストをあまり細かく見ずに使用していたが、詳しく(?)確認してみた。 www.keycloak.org よくよく見るとちょっと不思…

NetBox(community版)のログインをKeycloakのOpenIDで認証する

Keycloakでいろいろ認証してみるシリーズ第4弾 今回はNetBox。ログイン時にユーザー名・パスワードでなく、Keycloakを使って認証してみよう、というもの。 環境は以下の通り NetBox Community v4.5.3-Docker-4.0.1 / インストールは公式Helmチャート netbox-…

[HashiCorp Vault] Keycloakを連携したOAuth経由でGitHubのアカウントで認証する

※ 2/21追記: 本記事は初のKeycloak構築・設定だったためなんとなくReal名を vault としたが、「ローカル環境のSSO管理」を目的としてlab-ssoとかの方が良さそう。それならVault以外のシステム(AWXとか)の認証を管理しても自然だからね。 VaultのGitLab認証編…

[HashiCorp Vault] ローカルでセルフホスティングしてるGitLabのアカウントを使って認証する

業務でAuth0を使った構成はさわったけど同じことを検証するとパクリ業務情報の持ち出しと思われそうだったのと、VaultでサポートされているOIDCプロバイダリストを眺めているとローカル環境でも使ってるGitLabがあったのでお試し。 設定に使うのは以下のJWT/…

Docker版K3s(Compose使用)でdown/upした際の動作とノード名固定

Docker Compose版k3sについては以下 zaki-hmkc.hatenablog.com タイトル通りの操作を行うと後処理が必要になるため、情報整理してみた。 なお、上記の記事を書いた当時と比較してagentノード用のボリュームも定義される修正がcomposeファイルに追加されてい…

k3sのアップグレードでTraefikのHelmChartデプロイが「This version of the Chart only supports Traefik Proxy v3」エラーになったので復旧させた(作業ログ)

教訓として、k3sのHelmChartを使って標準でインストールされるコンポーネントをHelmChartConfigで設定上書きする場合、特段の事情がない限りはイメージバージョンをカスタムしないのが吉。 k3sをv1.30から(1.31, 1.32を経て)1.33までアップグレードしたとこ…

[kubectl] アノテーションの編集はラベルと全く同じ要領でkubectl annotateで更新する

デプロイ済みリソースのアノテーションを編集する必要があって操作方法を調べてみたけど、ラベルの編集と全く同じだった。 ラベルの編集は5年前に一度エントリ作っていたので、アノテーションについてもとりあえずメモ。 before $ kubectl describe -n loggi…

[kubectl] jsonpathでドットをキー名に含むパスにアクセスするには逆スラッシュでエスケープする

知ってれば何てことないんだけどプチはまりで時間をだいぶ溶かしてしまったので備忘録。 というか.dockerconfigjsonであれば以下の通り。 kubectl get secret ecr-credential -o jsonpath='{.data.\.dockerconfigjson}' | base64 -d ドットを含むキー名に含…

[Docker / Kubernetes] コンテナでOpenSSHサーバーを立てる

検証用などでリモートにSSHサーバーが必要な際に、linuxserver/openssh-server のコンテナを使うと簡単に準備できる。 github.com 認証情報やrootへの昇格設定をすべて環境変数でセットできるためアクセス方法の自由度が高いのが特徴。たぶん。 ベースはAlpi…

[AAP/AWX] コンテナーグループを作成するAnsibleプレイブック

以前まとめた以下の「[AWX / AAP] ジョブの実行をリモートのKubernetesクラスタで行う」内容はwebのUIで手動で設定するものだったが、本記事ではこの設定操作をplaybookで自動化する方法についてのメモ。 zaki-hmkc.hatenablog.com 大きな流れとしては以下の…

[K3s] Helmを使ったKubernetesクラスターへのNetBoxデプロイ (helmリポジトリ込み)

zaki-hmkc.hatenablog.com 昨年末にHelm版の存在に気づいて試したときはリポジトリを追加する手順がなくいきなりhelm installを実行する方式だったけど、改めて公式サイトを見てみるとリポジトリのURLなど一般的なHelmチャートインストールと同じ内容になっ…

[K3s / Prometheus] リモートのPrometheusサーバーを使う構成でkubectl topするためのK3sメトリクスサーバー構築

Prometheus Adapterの設定にPrometheusサーバー本体のアドレスを設定する箇所があったのは覚えてたので、ここにリモートで動作するサーバーを指定すれば、クラスター内にPrometheus本体や溜めたデータのストレージを持つ必要がなくなるはずと見込んで、ラズ…

[K3s] K3s構築後のコンポーネントのon/off

結論としては、構築済みK3sの場合でも他の設定変更と同様に起動オプションに設定してサービス再起動すればOK --disableを追加すれば削除され、削除フラグを除外すれば再デプロイされる。 K3sのインストールオプションで以下のコンポーネントは--disableに指…

[K3s] opensslで用意した自前のサーバー証明書でTraefik Ingress Controllerを運用する設定

K3sインストールで標準でついてくるTraefik Ingress Controllerは、デプロイしたPodへ簡単にHTTPSアクセスを実現できるので大変便利です。 デフォルトではダミーの証明書が使われるので、プライベート環境などであれば証明書エラーを無視して運用するという…

[K3s] 手動のクラスターアップグレード備忘録

ドキュメント通りなので特に問題ないけどメモとして残してなかったので一応。 docs.k3s.io 概要 スクリプト再実行によるアップグレード 実行ファイル入れ替えによるアップグレード 概要 ポイントは「インストールした時と同一のオプションで」再度インストー…

[NetBox on arm64 K3s] NetBox公式のHelmチャートを使ったKubernetesへのデプロイ (リポジトリとOperatorメモ追記)

2025.05.05:チャートのリポジトリが追加された件について&K3sのHelmChart使用について追加記事作成 zaki-hmkc.hatenablog.com 2025.02.06追記:チャートのリポジトリ追加について追記 しばらくキャッチアップしてなかったNetBox、職場のチームの周りでNetB…

[K3s] 設定ファイルを使ったインストール時のパラメタ指定

K3sのインストール時にコマンドラインオプションや環境変数でパラメタをいろいろ設定できるが、数が多くなると見通しが悪くなりメンテ性も落ちる。 そんな時は設定ファイルにパラメタを指定すれば管理しやすい。 設定のコメントも書ける docs.k3s.io ファイ…

オフラインK3sクラスタでworkerノード追加

少し前に実施したシングルノード構成の「オフライン環境へのK3sインストール」に、workerノードを追加する。 環境は引き続きインターネット接続のないオフライン環境。 zaki-hmkc.hatenablog.com 手順はAir-Gap Installの通りで大丈夫。 docs.k3s.io 構成 (…

[Kubernetes] DaemonSetで動いてるPodを停止(スケールを0に)したい

業務で元リソースはそのままでPodを一時的に停止していろいろ確認するなんやかやがあり、DeploymentやStatefulSetはkubectl scaleでレプリカ数を0にすれば良かったんだけど、DaemonSetってそういえばレプリカ0にできないというかそもそもレプリカの概念がな…

(4/11追記) arm64版AWXをデプロイするだけなら自前のビルドは全く不要になってる件の補足とまとめ

2024.04.11追記 forum.ansible.com AWX 24.2.0とAWX Operator 2.15.0がリリースされ、GitHub Container Registryにしかなかったarm64版awxイメージがquay.ioからもpullできるようになりました。 image repository tag awx-operator quay.io/ansible/awx-oper…

[追記あり] 2024年3月現在のAWXのarm64ビルドの状況 (AWX 24.0.0 / Operator 2.13.1)

2年前にKubernetesで動くAWXをarmアーキテクチャのホストで動かそうとした際には、armプラットフォーム用のコンテナイメージが何一つ用意されてなく全部自前でビルドしてた。が、2024年現在、状況が結構変わってかなり簡単になってたので、今時点でどうすれ…

オフライン環境へのK3sインストール

いろんなものを業務でオフライン動作させてきた身としては一度はやっておきたかったインターネット接続の無いオフライン環境へのインストールお試し。 K3sは軽量Kubernetesとして様々な環境で動作するのが特徴の一つで、インターネット接続の無い環境でもAir…

[Kubernetes] Helmを使ってインストールすると生成されるシークレットの内容についてのメモ

Helmチャートをインストールすると、sh.helm.release.v1.<リリース名>.v1というシークレットリソースが作成されるけど、これ何だっけ?と思って調べてみた。 結論から言うと、Helmでインストールしたリリース情報がgzip形式で格納されている。これを手動で消…

[K3s / Helm] K3sのHelmChartカスタムリソースを使ったチャートのインストール (Fluent Bit)

K3sにHelmを使って何かをデプロイする場合、K3s自体にHelmChartカスタムリソースを使ったチャートのインストールがサポートされており、helmCLIコマンドを使わずにマニフェストを作成するだけでチャートのインストールが可能なので試してみた。 docs.k3s.io …

Azure Key Vaultを使ったHA構成HashiCorp Vaultの自動unseal / join / remove

ここのブログでHashicorp Vaultを扱うのはそういえば初めてだったけど、Vault使う上で面倒なunsealなどを自動処理する方法を調べる機会があったのでまとめました。 なお、unseal keyやroot tokenを記事用に全部書き出してますが、機密情報なので実際は厳重に…

[Kubernetes] K3sのバージョン指定インストール

K3sをインストールする際は、特に指定がない場合は「最新安定板」がインストールされますが、これはKubernetesの最新版の1個前だったりします。 このエントリ執筆時点(2024.02.08)のKubernetesのバージョンは1.29.1が最も新しいですが、K3sのインストールで…

[Kubernetes] ヘルスチェックAPIを試す (bearer token認証付き)

KubernetesのヘルスチェックのAPIエンドポイントを試す。 といっても提供されているエンドポイントをcurl叩けばよいだけ。 kubernetes.io 現在は3つのエンドポイントが提供されているが、1つは非推奨とのこと。 healthz (非推奨) livez readyz livezとreadyz…