kinitを使わずにPython-GSSAPIでKeytabを指定してTGTを発行

kinit を使わずに済む方法を探していたところ、以下の実装で動きました。 gssapi.Credentials.storeのclient_keytabにKeytabファイルのパスを指定します。 import gssapi gssapi.Credentials( usage='initiate', name=gssapi.Name( '<SERVER_PRINCIPAL_NAME>', gssapi.NameType.kerb</server_principal_name>…

カレンダーを和暦にするとDuolingoのデイリークエストができない話

Duolingoで韓国語を勉強しているんですが、なぜかiPhoneだとデイリークエストができない問題に悩んでました。 問題を回避するため、iPad版やブラウザ版をプレイすることでバッジを取得していたんですが、いい加減面倒に感じていたところ、Redditでこんな記事…

DRFのDecimalFieldから末尾のゼロを除外

Django REST framework (DRF) において、DecimalFieldから末尾のゼロを除去する方法です。具体的には以下のように挙動を変更します。 # 現在 Decimal('0.001000000') >> "0.001000000" # 期待する結果 Decimal('0.001000000') >> "0.001" この機能は以下のPR…

EKSのマネージド型ノードを並列更新

ノードを並列更新することで、マネージド型ノードグループの更新時間を短縮できるようなので試してみました。 docs.aws.amazon.com It determines the maximum quantity of nodes to upgrade in parallel using the updateConfig property for the node grou…

python-xmlsecのインストールに失敗(libxmlsec1 1.3)

環境 macOS 12.4 Homebrew 4.1.2 事象 python-xmlsecをインストールしようとすると以下のエラーが出ました。 Using version ^1.3.13 for xmlsec Updating dependencies Resolving dependencies... (0.4s) Package operations: 1 install, 0 updates, 0 remov…

Container InsightsでFluentdをFluent Bitに変更

はじめに EKS 1.24へのアップグレードに伴い、コンテナのログをFluent BitでCloudWatch Logsに送るように変更しました。 Amazon EKS Kubernetes versions - Amazon EKS If you already have Fluentd configured for Container Insights, then you must migra…

EKSでALBに割り当てたWAFV2のACLが自動で解除される問題

事象 WAFV2のACLをIngressで作成したALBにマネコンから割り当てたところ、 20分程した後に設定が解除されてしまいました。 原因を探るため、CloudTrailのイベント履歴を辿ると、 aws-load-balancer-controllerによるDisassociateWebACLの実行が確認できまし…

Nintendo Switch Joy-Conのスティック交換

はじめに Joy-Conのスティックを交換する機会があったので使用したキットや参考動画をメモしておきます。 スティックの交換 似たものがたくさんありますが、修理キットはこれを購入しました。 【2023初心者対応版48in1】Joy-con修理キット JOY-CONスティック…

Ubuntu 22.04 LTS (Jammy Jellyfish)でcollectdが見つからなかった話

# apt install collectd Reading package lists... Done Building dependency tree... Done Reading state information... Done Package collectd is not available, but is referred to by another package. This may mean that the package is missing, ha…

AWS Load Balancer Controllerをv2.0.1からv2.4.5にアップデート

AWS Load Balancer Controllerをv2.0.1からv2.4.5にアップデートにしたので手順をメモします。 リージョンは東京( ap-northeast-1 )です。 ❯ helm history aws-load-balancer-controller -n kube-system REVISION UPDATED STATUS CHART APP VERSION DESCRI…

fluentdでALBのアクセスログを取得(fluent-plugin-elb-log)

fluent-plugin-elb-logでS3からALBのアクセスログを収集してみたので手順をまとめます。 github.com 環境 Ubuntu 22.04(LTS) $ lsb_release -d Description: Ubuntu 22.04 LTS td-agent 4.4.1 $ td-agent --version td-agent 4.4.1 fluentd 1.15.2 (c3284229…

fluentdでCloudWatch Logsのログを収集(fluent-plugin-cloudwatch-logs)

fluent-plugin-cloudwatch-logsのin_cloudwatch_logsでCloudWatch Logsからログを収集してみたので手順をまとめます。 github.com 環境 Ubuntu 22.04(LTS) $ lsb_release -d Description: Ubuntu 22.04 LTS td-agent 4.4.1 $ td-agent --version td-agent 4.…

Conda環境の作成をGitHub Actionsでテスト

Conda環境の設定変更が及ぼすプラットフォーム毎の影響を自動で確認するようにしました。 大したことはせず、GitHub ActionsでPR時にConda環境を作成( conda env create -f <environment.yml> )して、正常終了するかを確認するだけです。 Conda環境を作成するアクション con</environment.yml>…

ELB(ALB)のIPアドレス変更歴を辿る

AWS

動的に変わるELB(ALB)に割り当てられたIPアドレスの履歴を確認する方法です。 アクセスログが取得されていることを前提とします。 ALBのアクセスログ docs.aws.amazon.com S3に保存されたアクセスログのファイル名は以下のフォーマットに従います。 load-b…

DjangoのマイグレーションでPermissionにアクセス

Djangoのマイグレーション時にPermissionにアクセスする方法をまとめます。 実行環境 Django 3.2 マイグレーションファイルの作成 空のマイグレーションファイルを作成します。 python manage.py makemigrations --empty yourappname from django.db import …

Wagtail CMSのElasticsearchバックエンドで日本語の全文検索

Wagtail CMSで日本語の全文検索に対応する方法をまとめます。 実行環境 Ubuntu 18.04 LTS Django 3.2.12 Wagtail 2.15.4 Elasticsearchのインストール www.digitalocean.com $ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-ke…

Djangoのmodels.Field.validatorsに引数を渡す

django.db.models.Field.validatorsの関数に引数を与えられるようにします。 例えば以下のようなバリデータにおいて、ハードコードされた数値 100 をモデルフィールド単位に指定できるようにします。 def equal_to_100(value): if value != 100: raise Valid…

WagtailをTransifexで翻訳してみた

DjangoベースのCMSであるWagtailを使い始めましたが、日本語対応がまだまだな印象なので翻訳していきます。 翻訳はWebベースのTransifexが使われているので簡単です。Djangoと同じですね。 docs.wagtail.io You can find a list of currently available tran…

Synology DiskStation DS215jでドライブの読み込み異常(UNCエラー)を検出

先日、何気なく自宅のNASにアクセスすると、あるドライブで読み込み異常が検出されていました。 6年間使い続けているので遂にディスクの寿命がきたのでしょうか...。 イベントの詳細 「S.M.A.R.T」の拡張テストを実行し、指示に従うように、とのことです。 S…

Kubernetes(EKS)でApacheの統計情報を使用した水平オートスケール(Prometheus Adaptor/Apache Exporter)

本エントリではApache(prefork)のプロセス数でPodを水平オートスケールする手順をまとめます。 大まかな流れとしては、Apache ExporterでPrometheusにメトリクスを収集し、Prometheus AdaptorでHPAにカスタムメトリクスを連携していきます。 実行環境 Prom…

Djangoのフォームウィザードで単一モデルオブジェクトを登録・更新(django-formtools 2.2)

Djangoでモデルオブジェクトの登録・更新機能は、汎用ビューであるCreateViewやUpdateViewで簡単に実装することができます。 しかし扱うモデルフィールドが多い場合、これらのビューは1つの画面に多数のフォームを描画するために使用性が低くなりがちです。 …

VeleroでEKSクラスタをバックアップ

VeleroでEKSクラスタのバックアップを試してみたので手順をまとめます。 今回はプロバイダーがAWS、オブジェクトストアがS3なのでvelero-plugin-for-awsの手順に従ってインストールを行います。 その他サポートしているプロバイダーはこちらを参照してくださ…

JupyterHubをKubernetes(Amazon EKS)にインストール(zero-to-jupyterhub-k8s 0.9.0)

Amazon EKSにJupyterHubを zero-to-jupyterhub-k8s(Z2JH)でインストールする方法をまとめます。 github.com 以下の手順に従って作業を実施します。 Zero to JupyterHub with Kubernetes — Zero to JupyterHub with Kubernetes 0.0.1-set.by.chartpress doc…

DjangoでViewのリクエスト前後に任意の処理を差し込む

デコレータを使用し、DjangoのViewでGETやPOSTリクエストの処理前後に任意の処理を差し込む方法をまとめます。 やりたいこと デコレータの作成 Viewの実装 利用例 事前処理でビューへのアクセス権限を判定 事後処理でレスポンスを更新 まとめ やりたいこと …

SAMLtestでSAML2.0(Shibboleth)認証をテスト

SAML2.0 IdP/SPのテストに便利なサービスSAMLtest.idを見つけました。 実際にShibboleth認証に対応したSPのテストに使ってみたので、本エントリに手順をまとめます。 テスト対象のSP 使い方 SPのメタデータをアップロード IdPの追加 SPにログイン まとめ テ…

EKS(on Fargate)でEFSにデータを永続化

EKSでは積極的にRDS等のマネージドサービスでデータを保存したいところですが、種々の事情により永続ボリュームを用意しなければならないこともあります。 先日、PostgreSQLコンテナのデータをEFSを用いて永続化してみたので以降に手順をまとめます。 Amazon…

MongoDB Node.js DriverでAmazon DocumentDB(TLS有効)に接続するとunable to get local issuer certificate

AWSコンソールで確認したURIを指定してMongoDB Node.js driver( mongodb 3.0.2 )でDocumentDB(TLS有効)に接続しようとしたところ、 MongoNetworkError: unable to get local issuer certificate となってしまいました。 事象 DBの接続情報は作成したクラスタ…

Amazon DocumentDBでcollStatsは機能するがcollstatsだとCollection not found

事象 今まで自前で立てたMongoDBで問題なく動作していた pymongo.database.Database.command("collstats", "<collection-name>") が、Amazon DocumentDBではコレクションが存在するにも関わらず { "ok" : 0, "errmsg" : "Collection not found", "code" : 10 } を返すようにな</collection-name>…

Amazon EKS on AWS Fargate + ALB Ingress Controllerを試す

はじめに 実行環境 eksctlでEKSクラスタを作成 前提 EKSクラスタの作成 サンプルアプリのデプロイ ロードバランサの設定 IAM OIDCプロバイダーの作成 ALB Ingress Controllerポッド用のIAMポリシーを作成 alb-ingress-controllerサービスアカウント、Cluster…

MacでNeovimをソースからインストール

はじめに 以下の投稿で述べたNeovimの不具合がこのPRで直りそうなんですが、なかなかリリースされないので修正されたソースからNeovimをビルドします。 hiroki-sawano.hatenablog.com 実行環境 macOS Catalina Version 10.15.5 前提 macOSなので以下の前提を…