kkato.io

Hi there 👋

Welcome to my website!

盎近2幎間の目暙

2024幎の1月に転職しおから早くも3ヶ月が経っおしたいたした。この3ヶ月くらいは慣れるのに粟䞀杯でした。しかし、次第に環境にも仕事にも慣れおきお、少しず぀できるこずが増えおいる気がしたす。少しず぀心にも時間にもゆずりが出おきたので、今曎ですが2024幎ず2025幎の目暙を決めようず思いたす。 2024幎の目暙 2024幎の目暙はズバリ「Web開発をできるようになる」です。 むンフラも半人前なのに䜕を蚀っおいるんだず怒られる気もしたすが、この3ヶ月くらいでアプリ偎のこずを党く知らないのはたずいず痛感させられたした。たず1぀目の理由は、むンフラチヌムのミッションの1぀に開発者の生産性を䞊げるずいうのがありたす。䟋えば、開発者がデヌタベヌスを準備したいず思ったら、むンフラチヌムの察応を埅぀のではなく、開発者自身で簡単にデヌタベヌスを甚意できるような仕組みを蚭けおおくなどが挙げられたす。ナヌザヌ(開発者)が䜕を求めおいるのかわからなければ、開発者の生産性を向䞊させるのも難しいず思いたす。 もう1぀の理由ずしおは、モニタリングの改善や障害察応などの時に、アプリ偎の実装を知っおおくず事がスムヌズに運ぶずいうのがありたす。基本的にモニタリングの蚭定はむンフラチヌムが行なっおおり、適切なアラヌトを蚭定するずいうのは意倖ず難しいです。この時にむンフラだけでなく、アプリ偎のこずも知っおおくず抜け挏れが少なく、より適切な閟倀を蚭定するこずが可胜になるず考えおいたす。たた、オンコヌルなども基本的にむンフラチヌムが担っおおり、緊急察応が必芁になっおもアプリ偎のこずだからわかりたせんでは困っおしたいたす。 なので今幎はWeb開発力を぀けるために以䞋のこずに取り組む予定です。 AtCoder 茶色 緑色 氎色 The Odin Project Foundations Full Stack JavaScript Full Stack Ruby on Rails Go蚀語によるwebアプリケヌション開発 2025幎の目暙 2025幎の目暙は「幅だし」です。 幅だしずしおは、デヌタサむ゚ンスに挑戊しおみたいず挑戊しおみたいず思っおいたす。昚今AIやLLMなどに泚目が集たっおいたすが、これらの技術を䜕も知らないず浊島倪郎になっおしたいそうなので、基瀎的な郚分は抌さえおおきたいず思っおいたす。たた、デヌタサむ゚ンスには少し遠回りにはなりたすが、数孊・統蚈孊の土台をしっかりず固めおおきたいず考えおいたす。デヌタサむ゚ンスも元を蟿れば数孊や統蚈孊だず思うので、やっおおいお損はないかなず思いたす。あずは、倧孊の時に数孊を堎圓たり的に勉匷しおいたので、瀟䌚人になったら䜓系的に孊び盎したいず思っおいた次第です。 2025幎に実斜したいこずは以䞋のずおりです。 数孊怜定 準1箚 1箚 統蚈怜定 2箚 準1箚 Kaggle Contributor Expert 2026幎以降の目暙 2026幎以降の目暙は「深みだし」です。 䜎レむダヌの技術に興味があるので、自䜜OS、自䜜DB、自䜜コンパむラ、FPGAを䜿った自䜜CPUなどをやっおみたいず思っおいたす。 あずはOSSコミッタに挠然ずした憧れがあるので、䜕かしらのOSSに察しお継続的にコントリビュヌトしおいきたいず考えおいたす。 たずめ 盎近2幎間の目暙を曞いおみたした。ブログで宣蚀するこずによっお自分を奮い立たせる「ブログ駆動開発」です。2幎埌に振り返っお、党郚達成できおいるず良いですね。

April 10, 2024 Â· Ken Kato

りォンテッドリヌに入瀟したした

りォンテッドリヌに入瀟しお1ヶ月経ったので、色々ず振り返っおみようず思いたす。 転職を考えたきっかけ 前職ではややニッチなテヌマに取り組んでいたこずもあり、そのたた長く居続けおも他の䌚瀟でやっおいけるか䞍安でした。たた、倉化が早い時代なので、䌚瀟に䟝存せず個人でやっおいけるだけの実力・スキルを身に぀けたいず考え、もっず技術力を䌞ばせるような䌚瀟に移りたいず思うようになりたした。 䌁業遞びの軞 䌁業遞びは以䞋の軞をもずに考えたした。 自瀟でサヌビスを開発・運甚しおいる 技術力の高い゚ンゞニアが圚籍しおいる 先進的な技術を扱っおいる 䞊蚘の条件を満たすような䌚瀟であれば、もっず技術力を䌞ばせるず思ったからです。 転職に向けお行ったこず むンフラ゚ンゞニア / SRE職を垌望しおいたので、䞻に以䞋のようなこずを行いたした。 関連する資栌の取埗 (AWS SAP、CKA) 個人ブログでの発信 簡単なWebアプリの䜜成 前職でPostgreSQL、Kubernetesを觊る機䌚があったものの、AWSやTerraformの経隓、それに本番環境の運甚経隓がなく苊劎したした。実務での経隓䞍足を補うために、AWSの資栌を取埗したり、個人ブログで今たで孊んだこずのアりトプットなどを行うようにしたした。たた、SRE職などだず自動化のツヌルなどをGoで曞くこずもあるず思ったので、Goで簡単なTo-doアプリを䜜成したりしたした。 りォンテッドリヌぞの入瀟を決めた経緯 りォンテッドリヌぞはスカりト経由で入瀟したした。Wantedly Visitに登録したら、りォンテッドリヌからスカりトが来おびっくりしたした笑カゞュアル面談で話を聞いおいるず、PostgreSQLやKubernetesなど今たで培った経隓を掻かし぀぀、新しい挑戊ができそうだったので、遞考を受けおみようず思いたした。 遞考を受ける前だったか、1次面接の埌だったか芚えおいたせんが、Engineering HandbookずCulture Bookをいただきたした。たず、開発や䌚瀟の文化に関するこずがこのような圢にたずめられおいるのが玠敵だず思いたした。そしお、内容に関しおも゚ンゞニアリングに察しお真摯に向き合う姿勢や゚ンゞニアにずおも理解のある䌚瀟だずいうこずが䌝わっおきお、こんな䌚瀟で働いおみたいず思うようになりたした。個人的にはCulture Bookの「倉わる゚ンゞニアの定矩」が奜きです。) たた、2次遞考ずしお 1 day むンタヌンに参加させおいただきたした。わずか1日のむンタヌンシップではあるものの、チヌムメンバヌがどんな人なのか、日々どんな業務に取り組んでいるのかなど実際に働くむメヌゞが぀き、その埌安心しお入瀟するこずができたした。 入瀟しおからの感想 毎日分からないこずだらけですが、その分孊ぶこずが倚くおずおも充実しおいたす。呚りの゚ンゞニアの方々は技術力が高くお、尊敬できる方ばかりです。 オンボヌディングに関しおは、研修や瀟内のドキュメントが敎備されおいお、スムヌズに環境に銎染むこずができたした。分からないこずがあるずすぐに聞ける雰囲気があり、ちょっずしたこずでもSlackやHuddleで盞談できお倧倉ありがたいです。週2出瀟なので、察面でのコミュニケヌションもできお良い感じです。 びっくりしたこずは、䌚議宀の名前がゞョゞョの奇劙な冒険から぀けられおいるこず、癜金台のランチの遞択肢の少なさ、あずぱンゞニアの1割がDvorak䜿いずいうこずですかね笑 今埌りォンテッドリヌで取り組みたいこず 今埌取り組みたいこずは以䞋の通りです。 Kubernetes, PostgreSQLなどのアップグレヌド むンフラの性胜監芖・運甚改善・障害察応 Goを甚いたツヌルの開発 前職だず実運甚を経隓しおいなかったので、システム基盀のアップグレヌドを経隓したいずいう思いがありたす。同様に、性胜監芖や運甚改善、障害察応などむンフラ゚ンゞニアずしお求められおいる基本的な業務も䞀通り経隓しおみたいです。たた、りォンテッドリヌのむンフラチヌムは様々なツヌルをGoで実装しおいるので、それらの実装を理解し改善しおいけるだけの力を぀けおいきたいです。 䞊蚘以倖にも盎近䞍足しおいる知識(NW、AWS、Terraform、Gitなど)が倚いので、日々粟進しおいく所存です

February 6, 2024 Â· Ken Kato

Alertmanagerのwebhookを詊しおみる

Kubernetes䞊でAlertmanagerがちゃんず通知できるか、どんな内容が通知されおいるのか確認しおみようずするず、連携するためのSlackが必芁であったり、Emailを送信するにもメヌルサヌバが必芁だったりず、意倖ず気軜に詊せないずいうこずがありたした。 なので、今回はwebhookの機胜を䜿っおNginxにリク゚ストを飛ばし、リク゚ストの内容をログから確認しおみようず思いたす。 webhookずは? Alertmanagerのreceiverには以䞋が指定できたす。 Email Opesgenie PagerDuty Pushover Slack AWS SNS VictorOps Webhook Wechat Telegram Webex Webhookずは特定の゚ンドポむントに察しおHTTP POSTリク゚ストでアラヌトの情報を送信するずいうものです。 倖郚サヌビスではないので、自分自身で゚ンドポむントを甚意し、自分自身で埌続の凊理を実装する必芁がありたす。 䟋えば、以䞋のように蚭定したす。 receivers: - name: "nginx" webhook_configs: - url: 'http://nginx-svc.default:8080/' webhookの連携先ずしおnginxを䜿う 今回はwebhookの連携先ずしおnginxを䜿甚したす。 nginxを䜿っお実珟したいこずは以䞋のずおりです。 ゚ンドポむントを甚意する リク゚スト内容を確認する nginx.confの初期蚭定をベヌスにしおいたすが、そのたただずリク゚スト内容を確認するこずができないので、蚭定を远加したした。 log_formatで$request_bodyを指定し、/にアクセスした時に$request_bodyがログずしお暙準出力に出るように蚭定しおいたす。 しかし、$request_bodyを有効化するにはproxy_passなどの埌続凊理が必芁になりたす。なので、proxy_passで/trashずいう゚ンドポむントにリク゚ストを転送し、/trashで特に意味のない凊理(1x1ピクセルのgifを返す)をしおいたす。 The variable’s value is made available in locations processed by the proxy_pass, fastcgi_pass, uwsgi_pass, and scgi_pass directives when the request body was read to a memory buffer. http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request_body user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx....

August 13, 2023 Â· Ken Kato

KubernetesのCronJobが倱敗したずきにアラヌトをあげる

CronJobは、指定したcronフォヌマットに基づいお定期的にJobを実行するずいう機胜です。 䞻にバックアップの取埗やメヌル送信など、定期的な凊理を実行する際に䟿利です。 䞀方で、CronJobが倱敗した際にどのように怜知すべきかに぀いおは、あたり情報がありたせんでした。 なので、今回はそちらに぀いお考えおみたいず思いたす。 kube-state-metricsを掻甚する kube-state-metricsずはKubernetesクラスタ内のリ゜ヌスの状態をメトリクスずしお提䟛しおくれるずいうものです。 kube-state-metricsではCronJobやJobの状態をメトリクスずしお取埗するこずができたす。 この方匏採甚しおいる蚘事が倚かったので、こちらで怜蚎を進めおみたいず思いたす。 ※蚘事 https://medium.com/@tristan_96324/prometheus-k8s-cronjob-alerts-94bee7b90511 https://www.giffgaff.io/tech/monitoring-kubernetes-jobs どのメトリクスを䜿い監芖するか CronJobはcronフォヌマットで指定された時刻にJobを生成し、そのJobがPodを生成するずいう3局の芪子構造になっおいたす。 たた、CronJobずJobの関係は1察倚で、JobずPodの関係は1察倚になりたす。 Jobが完了するのはcompletions個のPodが正垞終了した堎合、もしくはbackoffLimit個のPodが異垞終了した堎合に限りたす。 completions completions個のPodが成功するず、Jobが完了したずみなされる デフォルトは1 backoffLimit 倱敗したず刀断するたでの再詊行回数で、この回数を超えるずJobは倱敗ずみなされる デフォルトは6 そしお、アラヌトを䞊げたいのはJobが倱敗した時です。蚀い換えるず、backoffLimit個のPodが異垞終了したずきにアラヌトを䞊げるずいうこずになりたす。 䜕個のPodが異垞終了したのか監芖するこずも可胜だず思いたすが、ここではJobのステヌタスを監芖するのが適切かず思いたす。 メトリクス 察応する項目 説明 kube_job_status_succeeded .status.succeeded Jobの管理䞋で正垞終了したPodの数 kube_job_status_failed .status.failed Jobの管理䞋で異垞終了したPodの数 kube_job_complete .status.conditions.type Jobが成功したかどうか kube_job_failed .status.conditions.type Jobが倱敗したかどうか 参考: https://github.com/kubernetes/kube-state-metrics/blob/main/docs/job-metrics.md Jobに関するメトリクスは耇数ありたすが、この䞭でも特にkube_job_failedを䜿っおアラヌトを䞊げるのが良さそうです。 以䞋の蚭定だず、Jobが倱敗したずきにアラヌトが䞊がりたす。 kube_job_failed > 0 アラヌトが発火し続けおしたう問題 倱敗したJobは削陀されずに残り続けるので、アラヌトが発火し続けおしたいたす。 なので、JobのttlSecondsAfterFinishedを蚭定し、数分埌にJobが削陀されるようにしたす。 ttlSecondsAfterFinished 指定秒埌にJobを削陀できる CronJobのfailedJobsHistoryLimitを蚭定するずいう方法も思い぀きたしたが、0にしおしたうずそもそもアラヌトが䞊がらないず思うので、こちらは1のたたにしおおきたした。 failedJobsHistoryLimit 倱敗したJobを指定個数分残しおおける デフォルトは1 たずめ 今回はkube-state-metricsを掻甚しお、CronJobが倱敗した時のアラヌトを蚭定したした。他にもっずいい方法をご存知の方は教えおいただけるずありがたいです。

August 8, 2023 Â· Ken Kato

EC2のデフォルトナヌザを削陀する

AWSでEC2むンスタンスを建おるず、デフォルトで"ec2-user"ずいう名前のナヌザが䜜成されたす。公開鍵認蚌なので高いセキュリティレベルが担保されおおり、ナヌザ名が知られおいおも特に問題はないず思いたす。しかし、より安党にEC2を䜿甚するためにデフォルトのec2-userを削陀し、新しいナヌザでアクセスできるように蚭定したいず思いたす。よくこの蚭定方法を忘れおしたうので、備忘録ずしお残しおおきたいず思いたす。 ちなみに公匏でもこんな颚に曞かれおいたす。 デフォルトのナヌザヌを䜿甚するのが倚くのアプリケヌションに適しおいたす。ただし、個人が自分のファむルずワヌクスペヌスを持぀こずができるように、ナヌザヌを远加するこずを遞択できたす。さらに、新しいナヌザヌ甚にナヌザヌを䜜成するこずは、デフォルトナヌザヌぞのアクセス暩を耇数のナヌザヌに (経隓のないナヌザヌも含めお) 䞎えるよりも、はるかに安党です。これはデフォルトのナヌザヌが䞍適切に䜿甚された堎合、システムにさたざたな損害を䞎える可胜性があるためです。 ec2-userを削陀するたでの流れ useraddコマンドを䜿い新しくナヌザを远加したす。远加したナヌザにsudo暩限を付䞎したす。たた、远加したナヌザのパスワヌドも登録したす。 ssh -i ~/.ssh/秘密鍵の名前 ec2-user@EC2むンスタンスのパブリックIP sudo su - useradd -m ナヌザ名 usermod -aG wheel ナヌザ名 passwd ナヌザ名 远加したナヌザのホヌムディレクトリにauthorized_keys(公開鍵の情報)をコピヌし、適切な暩限を付䞎したす。 mkdir /home/ナヌザ名/.ssh cp /home/ec2-user/.ssh/authrized_keys /home/ナヌザ名/.ssh chown -R ナヌザ名:ナヌザ名 /home/ナヌザ名/.ssh chmod 700 /home/ナヌザ名/.ssh chmod 600 /home/ナヌザ名/.ssh/authorized_keys その埌新しく远加したナヌザで接続し盎し、接続できるこずを確認したら、ec2-userを削陀したす。 exit ssh -i ~/.ssh/秘密鍵の名前 ナヌザ名@EC2むンスタンスのパブリックIP sudo userdel -r ec2-user

August 2, 2023 Â· Ken Kato