Vectorとは

現在参画している現場で、ログコレクターとしてVectorを利用しています。 本記事ではVectorの紹介と併せて、Kubernetes環境へデプロイできるようにHelmChart化してみたいと思います。 ログコレクターとは ログコレクターは複数のソース (ファイル、system な…

【Kubernetes】k8s上のPodmanコンテナでDockerイメージをビルドする

現在、PJでk3上にJenkinsのCICDパイプラインを構築しています。 その中でDockerイメージのビルドはkanikoで行っているのですが、メンテに不安がある為、Podmanに置き換える事になりました。 kanikoについてはこちらの記事で紹介しています。 Podmanとは Red …

【Docker】コンテナ上にHadoop + Spark実行環境を構築する

+ 案件でHadoopを扱う事になりそうなので、勉強のためにDockerコンテナでHadoop + Spark環境を構築してみました。擬似分散モードでの起動を想定しています。 ソースコードはgit hubに上げてあります。 github.com Hadoopのインストール 公式サイトからファイ…

【AWS】Ansible & KanikoでECRにDockerイメージをpushする

Kubernetesクラスタ上でDockerイメージをビルド&プッシュするためのツール「Kaniko」について、仕様を調査したのでメモ。 Kanikoとは 実体はKubernetesクラスタ上でDockerイメージをビルド、プッシュを行うためのOSSのDockerイメージです。 Googleが開発して…

【AWS】ansibleでECRにDockerイメージをpushして、EKS環境にデプロイする

目的 EC2から、AWS EKSにansibleでデプロイしてみる AWS ECRにDockerイメージをプッシュする とりあえず動かしてみて、各ツールの使い方を学習する 前提条件 作業する環境にPythonとAnsible、kubectlのインストールが必要 aws eks update-kubeconfig ...でco…

【Docker】PythonのAWS LambdaLayerをDockerで作成する

AWS LambdaのLayerモジュールをzip化するまでの処理をDockerで行えるようにしたので、その方法をメモ。 coin-look.pages.dev Dockerfile amazonlinuxのイメージを利用することで、EC2などを用意せずにx86_64のアーキテクチャに対応させます。 Pythonのバージ…

【Oracle Cloud】ORA-28001: the password has expiredの際の対処方法【Oracle Autonomous Database】

Oracle Cloudで稼働させているOracleDBがパスワードの有効期限切れで落ちるようになっていたので、対処方法をメモ。 coin-look.pages.dev sqlplusのインストール yumでsqlplusをインストールします。 バージョンは使用しているDBと同じものを選択してくださ…

【AWS】API Gateway マッピングテンプレートの設定方法

AWS

AWSのAPI Gatewayを介してlambda関数にHTTPヘッダやPOSTパラメータを渡す際の設定方法をメモ。 Lambda プロキシ統合にチェックを入れるだけでもパラメータを参照することはできますが、レスポンスに不要な情報が含まれてしまう為、そちらは利用せずにパラメ…

【Python】toxで複数のPythonバージョンをテストする

Pythonのテストコードを実行する際に、複数のPythonバージョンで動作確認したい時があり、toxの設定が便利だったので備忘メモ。 インストール $ pip3 install tox tox.ini 設定ファイルにlintとtestの設定を記載できます。 波括弧で複数バージョンの指定が可…

【Hive】beeline実行時のオプションについて

beelineでHQLを実行する際のオプション指定方法について記載します。 coin-look.pages.dev --hiveconf Hiveの設置をオプションで指定可能です。 $ beeline -u 'jdbc:hive2://xxx.co.jp:10000/default;...' --hiveconf hive.execution.engine=tez --hiveconf …

【React.js】makeStylesのスタイル指定方法

React.js(Next.js)で実装する際にmakeStylesの利用方法を調べたので、忘れないようにメモ。 気になるものがあったら、順次追記していきます。 coin-look.pages.dev first-child 特に迷うことは無い。 const useStyles = makeStyles({ root: { '& div:first…

【HiveQL】pyhiveとPrestoでテーブル操作

beelineで実行していたクエリをpyhive + Prestoで再実装した際に書き方が違う部分があった為、備忘メモ。 coin-look.pages.dev LOCATIONを指定してテーブル作成 元のクエリはこちら。 CREATE EXTERNAL TABLE <テーブル名> (<カラム名> <型>, ...) ROW FORMAT…

【Node.js】npmパッケージの脆弱性対応

CIで脆弱性チェックがエラーとなり、npm audit以外の方法で応急処置をしたのでメモ。 修正後は要動作確認。 coin-look.pages.dev npm audit まずは npm audit 等で検出されたパッケージのレポジトリを調べ、必要であれば package.json のバージョンを修正後…

【Python】urllibでプロキシ設定

urllibで社内のプロキシサーバーを経由して外部接続という処理を実装しました。 外部接続先のAPIでBasic認証が必要で、少し詰まったのでメモ。 requestsモジュールだと、プロキシ設定 + 接続先でBasic認証が上手く動かなかった為、urllibモジュールを使用し…

【Kubernetes】IngressのURL Rewrite設定

Ingressのpath設定でリクエストを振り分ける際にURLのrewriteを行ったのでメモ。 設定がコントローラーにより異なるようです。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScript ||c.s…

【Python】smtplibでメール送信

Pythonでメール通知の実装メモ。 ホスト名などは適宜変更してください。 実装 ライブラリは不要です。 # -*- coding: utf-8 -*- import getpass import platform import smtplib from datetime import datetime from email.mime.text import MIMEText from e…

【Kubernetes】kubectl の便利コマンド

使わなくなると忘れそうなので、kubectlコマンドをメモ。 alias k=kubectl 実行済の想定です。 随時、追加します。 入門ならこの一冊 Docker/Kubernetes実践コンテナ開発入門 [ 山田明憲 ]価格: 3718 円楽天で詳細を見る トークン取得 $ (k describe secret…

【Python】FastAPIのディレクトリ構成

クラウドソーシングでFastAPIの実装を行う機会があったので、調べた事などをメモ。 作成したソースコードはGit Hubに上げてあります。 ドキュメント 公式ドキュメントは分かりやすく書かれていた印象です。 fastapi.tiangolo.com ディレクトリ構成 公式ドキ…

【Python】pyhive で Presto 接続

PyHiveでPresto接続方法のメモ。 認証方法はプロダクト毎に違うと思いますので、適宜変更。 この辺りを見れば実装方法が分かると思います。 github.com インストール $ pip3 install pyhive[presto]==0.6.4 実装 # -*- coding: utf-8 -*- import base64 from…

【Kubernetes】Job・CronJobの設定方法

Job・CronJobの実装方法をメモ。 kubernetes環境上で実行するjobは並列起動してもエラーとならない様な設計にすると良いそうです。 後はdockerイメージ更新はタグをベースに行う事により、imagePullPolicy: IfNotPresentで更新の必要がない時はpullをskipさ…

【Kubernetes】PODの安全な起動・終了について

KubernetesのPODを安全に起動・終了する方法をメモ。 アプリケーションのGraceful shutdownは言語によって異なる為、都度実装する事になります。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.cu…

【curl】通信時間の計測

curlのオプションで通信時にかかる時間の計測ができます。 どの時間帯が長引いているか等で、不具合の原因切り分けができるかもしれません。 manページ curl.se コマンド $ curl -w "\ntime_namelookup: %{time_namelookup}\ntime_connect: %{time_connect}\…

【Python】Sanicでoracle接続

pythonでoracle接続を実装したのでメモ。 非同期処理用のフレームワークsanicを使用しました。 ドキュメント sanic Python v3.7~が必要です。 v3.6は2021年末にサポートが終了するので、バージョンアップを検討した方が良いと思います。 sanic.readthedocs.i…

【shell】便利コマンド

忘れそうなので、業務で実装したバッチ処理などで利用したshellコマンドのメモ。 随時、追加して行きます。 現在日時からの加減算 # 1時間後 $ echo $(date "+%Y%m%d %H%M%S" -d '1 hour') # 1時間前 $ echo $(date "+%Y%m%d %H%M%S" -d '1 hour ago') ファ…

【Kubernetes】サイドカー方式でOAtuh2-proxyの認証処理を追加する

kubernetes上でのOAuth2 proxyコンテナの利用方法をメモ。 nginxの使い方について詳しく知りたい方は、この本がお勧めです。 手元にあれば、実装時にいちいち検索しなくて済むかもしれません。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b…

【Kubernetes】kustomizeで環境毎のマニフェストを作成

kubernetesで環境毎の設定管理にkustomizeを使用したのでメモ。 ingressのannotationsにスラッシュが含まれていた為、patchesJson6902のプロパティ指定はどうやるのだろうと思ったのですが、エスケープに「~1」を用いる事で解決しました。 ⬇️ これからkubern…

【Node.js】Expressからcassandraにアクセスする

Node.jsとExpressでAPIを実装した際にcassandraに接続したので、やり方をメモ。 Markdown 記法に変えたので、若干書体が変わっています。 ⬇️ 分かりやすい良書です お金のこと何もわからないままフリーランスになっちゃいましたが税金で損しない方法を教えて…

【Python】DataStax Python Driverでcassandraにアクセスする

Pythonでcassandraの登録処理や取得処理を実装したのでメモ。 DataStaxのpython driverを使用しています。 テーブル設計なども行ったのですがパーテションキー=nodeという概念で、1pk=1nodeに多くても100レコード以内が望ましいそうです。 一意なID等なら問…

【Python】PyWebHdfsでHDFSを操作する

PythonでHDFSにファイルアップロードする処理を実装したのでメモ。 単純な処理ならcurlで十分なのですが、色々やりたい時は便利そうです。 事前にKerberos認証済みの想定です。 ⬇️ まだ読めてないです データウェブハウスツールキット―Web+データウェアハウ…

【Python】PyHiveでHiveQL

業務でPyHiveを使用したのでメモ。(忘れる自信しかない ) 環境によっては認証周りが変わりそうです。 ⬇️ クリーンアーキテクチャの事が分かりやすく書かれていて、お勧めです Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ) …