zaki work log

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

Kubernetes

[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…

[Kubernetes] K3sにおける証明書の期限の延長や設定(平たく言うと塩漬け運用したい場合のx年設定)について

オンプレKubernetesにおいて選択肢の一つになりうるK3sで内部で使用する証明書の期限についての調査&検証のまとめ的な作業ログ 確認した環境のホストOSはUbuntu 22.04とFedora39でK3sは1.28.5 デフォルト設定 自動ローテートの確認 手動ローテート 期限のカ…

[Ansible / AWX / AAP] ログアグリゲーター設定でジョブの実行ログをLogstash経由でsyslogサーバーへ転送する

ロギング設定にログアグリゲーターを指定して、リモートのsyslogへジョブの実行履歴を転送してみます。 通常AWX・AAPではDBに記録されたジョブの実行履歴などはスケジュールのCleanup Job Scheduleで設定された期限が過ぎたら削除されるので、基本的にはUIで…

[Ansible] kubernetesコネクションプラグインとインベントリプラグインを使ってみる

本エントリは、Ansible Advent Calendar 2023の14日目の記事です。煽られて(?)即席で書き上げました。 昨年共著で出版させていただいたAnsibleクックブックでは紙面の都合 * で掲載しなかった、kubernetesコネクションプラグインについて簡単に使い方の例を…

[Ansible / K3s] 2023年版AWXクイックインストールガイド

本エントリは、Ansible Advent Calendar 2023の6日目の記事になります。 AWXのセットアップがDocker ComposeからKubernetes環境になって手を出しづらくなったとか、インストール方法がわかりづらいなどの声を観測範囲で聞くことがあったので、ローカル環境で…

[Kubernetes] Fluent Bitを使ってリモートのSyslogサーバーへPodのログを集約する

Fluent Bitを使ってKubernetesのPodのログをSyslogサーバー(rsyslog)へ転送してみた。 Fluent Bitとは KubernetesへのFluent Bitインストール Syslog転送設定 kubernetesフィルタ使用時のデータ構造 Syslog outputプラグイン設定 ホスト名やアプリ名などを指…

[K3s / Kubernetes] KUBECONFIGを通常ユーザーでも読めるように起動オプションを指定または変更する

TL;DR K3sのKUBECONFIGファイル 起動オプションと環境変数の指定方法 起動オプションと環境変数一覧 インストール済みのK3sの設定を変更したい場合 サービス起動用のsystemdユニットファイルを修正する K3sの設定ファイルを作成・更新する TL;DR 結論を先に…

[Kubernetes] 軽量ディストリビューションk3sのコンテナ版の紹介

本記事は「エーピーコミュニケーションズ Advent Calendar 2022」の21日目のエントリです。 軽量Kubernetesディストリビューションの一つにk3sというものがあります。 以下のコマンドで簡単にクラスタをデプロイでき、少ないリソースで動作し、プラットフォ…

[Kustomize / secretGenerator] 初期パスワードを指定したAWXのインストールとSecret作成基礎

本記事は「Ansible Advent Calendar 2022」の8日目のエントリとなります。 AAP(旧Ansible Tower)のadminの初期パスワードはインストール時に使用するインベントリファイルで指定できるので簡単ですが、AWXのadminの初期パスワードはデフォルトではランダムな…

[Kubernetes] KustomizeでConfigMapを扱う (configMapGenerator)

KustomizeにおけるConfigMapの管理おためし。 configMapGeneratorを使用する。 kubectl.docs.kubernetes.io ConfigMapリソースの作成 key=value形式をkusomization.yamlにインライン記述 key=value形式のファイル参照 ファイルそのものをConfigMap化 ConfigM…

[Kubernetes] Kustomize事始め

Helmあるから別にいいかーと避けていたkustomize、仕事で触れる機会があったのでごくごく簡単にまとめ。 kubectl.docs.kubernetes.io ※ Kustomizeの用途でよくあるbaseとoverlayを使った環境(dev/stg/prd)ごとのパラメタセットの切り替えは本エントリではま…

[AWX / AAP] ジョブの実行をリモートのKubernetesクラスタで行う

デフォルトでは、ジョブの実行はAWXをデプロイしているKubernetesクラスタ上でpodがデプロイされて行われる。設定によって、podをデプロイするクラスタを、異なるクラスタ(AWXをデプロイしていないクラスタ)へ変更することができる。 本記事内では便宜上、AW…

Kubernetes v1.24でServiceAccountのトークンを生成・取得する

ここのところKubernetes関連の情報をキャッチアップできておらず、今月作ったk8sクラスタで期待する動作をせずにプチハマりしたので、トークン取得に関連した確認した内容の備忘録。 qiita.com LegacyServiceAccountTokenNoAutoGeneration feature gateがベ…

[Ansible / Docker / K3s] AWX 20.0.0をarm64環境でビルド&デプロイするplaybook

AWXはamd64向けのイメージしか提供されてないので、Oracle CloudのAlways Free枠で使用できる4コア・RAM24GBのA1.FlexインスタンスのようなARMアーキテクチャの環境ではそのままでは利用できません。 イメージをARM環境でリビルドしてやれば動作するので、さ…

[YAML] 複数行テキストの行頭にインデントを設定するには (Ansible/Kubernetes)

YAMLで複数行のテキストを記述しつつ、その先頭にインデントを設定するにはどうするか。 YAMLの複数行テキスト インデント設定 複数行表記で使用する記号の種類と効果 記号まとめ インデント量の指定 Ansibleの場合は YAMLの複数行テキスト --- data: sample…

[Kubernetes] MetalLBがHelmを使ったインストールに対応してたのでお試し(on kind)

任意のKubernetesクラスタでLoadBalancerタイプのServiceを使えるようにできるMetalLBが0.10.0からHelmを使ったインストールに対応してるようなので試してみた。 環境 MetalLBインストール with Helm リポジトリ追加 チャートとデフォルト値の確認 インスト…

[Ansible] ターゲットノードのvenvのPythonを指定して実行する (interpreter_python / ansible_python_interpreter / PYTHONPATH)

コントロールノードでなくターゲットノードで(pipで追加パッケージが必要などの理由で)venvを使いたい場合の方法について。 といっても、venvの中にあるPythonインタプリタのパスをinterpreter_pythonなどで指定すればOK。 Python2/Python3の切り替えでイン…

「Kubernetes Novice Tokyo #9」でkindをPodman環境で使う内容でLT登壇した振り返り

「Kubernetes Novice Tokyo #9」で「kind on Podman」というタイトルでLTしたので、内容について振り返ります。 k8s-novice-jp.connpass.com 発表資料 speakerdeck.com 内容 Kubernetesのノードとして動作するDockerコンテナを使うことでDocker上でKubernete…

[ssh / docker / kubectl] ローカルの標準出力をリモートの標準入力にする

sshやdocker exec、kubectl execで、シェルを起動せずに直接コマンドを実行できるが、sshなどを実行するローカルの標準出力をリモートホストやコンテナの標準入力として処理する方法について。 SSHの場合 前提。 ローカルのhostnameはcloud-devで、リモート…

kind on Podman on RHEL8でK8sを入れて、Bookinfo on Istioが動くことを確認

先日のContainer Runtime Meetup #3で「Podmanでkind動かせるよ」という話になり、どういうわけか「Podmanではkindは(まだ)動かせない」と思い込んでいたため、実際に試してみました。 ドキュメントは多分ないですが、 sudo KIND_EXPERIMENTAL_PROVIDER=podm…

[Kubernetes / Ansible] containerdをCRIに指定してクラスター構築するAnsible Playbook

明けましておめでとうございます。 年末に話題になった「KubernetesのコンテナランタイムでDocker(Dockershim)がv1.20で非推奨になる」にともない、CRIに「containerd」を指定したkubeadmを使ったクラスター新規構築を(お正月に)試してみたので簡単にまとめ…

SNMP Exporterを使ってArista EOSのSNMPの情報をPrometheusから参照する

SNMP Exporterをお試し。 環境は、SNMP ExporterもPrometheusもCentOS 7上で直接バイナリを実行している。(非K8s環境) SNMPエージェントについてはDockerで動作するArista EOSを使用。 Prometheusバージョンは2.23を使用。 実行用バイナリの入手 SNMP Export…