フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

The Graph は何を解決するのか?何が便利なのか?まとめてみた

はじめに&注意 対象読者 ブロックチェーンの課題とThe Graph が解決すること 背景 The Graph が解決すること The Graph の概念 The Graph のシステムアーキテクチャ データを貯める仕組み サブグラフ(SubGraph) とは クエリ関連の仕組み The Graph のインセ…

Google Professional Cloud Developer(PCD) に合格したので振り返り

スキル 勉強期間 勉強方法 感想 スキル インフラエンジニア歴 10年 得意領域:サーバ、k8s、セキュリティ、クラウド、IoTなど 持ってる資格 クラウド:AWS Solution Architect Professional / Google Cloud Architect Associate サーバ / NW:LPIC2 / ネスペ…

PodDisruptionBudget設定時にでる「Cannot evict pod as it would violate the pod's disruption budget.」の解消法

Pod に PodDisruptionBudget(PDB)設定時に以下のエラーがでました。 error when evicting pods/"nginx-deployment-bc88786fd-fq8wv" -n "pdb-test" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget. この解消法に…

【Terraform】null_resourceでシーケンシャルなterraform リソース作成を実現する

Terraform 内のリソースにおいて depends_on という順序制御の仕組みがあります。しかし同じ module を複数呼び出す際に、シーケンシャルに実行したいケースがあるともいます。(私はありました) もちろん呼び出す module ごとに depends_on を書けば解決す…

格言でわかるITエンジニア「急がば回れ」

ことわざ・故事成語・慣用句などの格言が好きです。 人生の色んな場面で助けられてきました。 今回は 「急がば回れ」 という言葉をつかって、ITエンジニアの戒めを書いてみようと思います。 急がば回れとは - コトバンク ITエンジニアに例える 早く着こうと…

Solidity で同名の関数や変数名を継承したらどうなる?

変数と関数を上書きする 変数と関数を上書きする(多重継承) 変数と関数を上書きする(virtual利用) まとめ 変数と関数を上書きする override1 -> test override2 -> test の場合 override1.sol // SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0.…

Solidity で無限ループするコントラクトを作ったらどうなる?

最初 payable にする GAS fee を 0 にする インクリメントにしてみる 1024で条件付してみる 面倒なのでネスト回数を指定できるようにした 結論(答え出ていない) 物は試しでやってみた。 最初 // SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0…

argo-rolloutsが権限不足で起動しない人向け

argo-rollouts がこんな感じのログを発行することがあります。 error retrieving resource lock argo-rollouts/argo-rollouts-controller-lock: leases.coordination.k8s.io "argo-rollouts-controller-lock" is forbidden: User "system:serviceaccount:arg…

memory store for redis の maintenance window を Terraform で設定する

Terraform の google provider 4.9.0 から memory store for redis の maintenance window が設定できるようになりました。 複数の redis を構築する場合は、メンテナンスウインドウをすこしづつずらしたいと思うので工夫した Terraform コードを紹介します…

kubernetesで1TBのディスクをつくったら932GBになった話

小話です。 k8s で1TBのディスクを作りました。 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: example-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1T すると 932GB のボリュームが作られました。 NAME CAPACITY…

Helm パッケージをどうやって OCI 準拠のレジストリに格納しているのか?

OCI について Helm パッケージが OCI 準拠のレジストリに保存できる まとめ Helm OCI をつかった OCI 準拠レジストリへの保存をどのように実施しているのか調べてみました。 OCI について 様々なアーティファクト(Helm や ライブラリ や各種パッケージなど)…

Terraform 本体&provider&module の最新バージョンを取得するコマンド

Provider Registry Protocol | Terraform by HashiCorp terraform curl -sH "Accept: application/vnd.github.v3+json" \\n https://api.github.com/repos/hashicorp/terraform/releases/latest | jq -r ".name" v1.1.3 provider curl -sL 'https://registry…

provider alias を削除したときの挙動を確認する

確認したいこと module に対して alias 名を指定した provider を付与している場合に、これを削除するとどうなるのかを検証したい。 モチベーションとしては公式サイトを見ると provider を明示的に渡す必要が無いので、それにならいたい感じ。 Providers Wi…

関数で使用する変数はいつ宣言すべきか?

シェルスクリプトの変数について、ちょっと試したことを載せます。 #!/bin/bash val1=val1 function test1() { echo $val1 echo $val2 echo $val3 } val2=val2 test1 val3=val3 function の前後に定義した値がどこまで取得できるのかを試してみました。 結果…

Merge Commit を含んだブランチの変更を Squash して綺麗にする

Git

* 0917e6be 2021-12-09 自分 Merge remote-tracking branch 'xxx/main' into 自分のブランチ |\ | * 03234646 2021-12-09 GitHub Merge pull request #xxx | |\ | | * 2514bd4a 2021-12-09 GitHub Merge main into 別の人の作業用ブランチ | | |\ | | |/ | |…

Cloud Monitoringの設定の意味をきちんと理解するまとめ

GCP Cloud Monitoringを利用する際に前提としてわかっておくべき内容を、個人の備忘として残しておきます。適宜追加していくため不完全な内容になっていますがご了承ください。 メトリクスの種類 データの整形 実際にポリシーを読み解く 例1 CPU使用率 Terra…

【備忘】kustomize で resource に外部ディレクトリの一部のリソースを指定する

kubernetes - referring a resource yaml from another directory in kustomization - Stack Overflow . ├── base │ ├── main │ │ ├── kustomization.yaml │ │ └── resource.yaml │ └── stuff │ ├── first.yaml │ └── kustomization.yaml └── cluster └── ku…

GKEでkube-dnsのメトリクスを取りたい話

GCP上のkube-dnsはその裏側にdnsmasqとskydnsが存在しています。 その二つの違いはRedHatの資料に詳しく書かれており OpenShiftの内部DNSについて語る...のではなく、dnsmasqとgdbで遊ぶ話 - 赤帽エンジニアブログ 上記のように紹介されています。GKEだと少…

【備忘】TerraformでGCP monotiringのfilterをうまく設定する方法

cpu_stateでどうにかフィルタするのをTerraformに設定したくて、どうにか辿り着いたTips。 下記のサイトにまとまっている情報をみる。 Legacy Monitoring and Logging agent metrics | Google Cloud 太文字のものはmetric.label.\"cpu_state\"= \"idle\""の…

【Bazel】コンテナイメージのPushをまとめて行う方法

Bazelでコンテナイメージを作成しPushする際に、まとめてPushする方法です。 distroless/BUILD at main · GoogleContainerTools/distroless · GitHub を参考にしました。 事前準備 git clone https://github.com/bazelbuild/examples cd examples/cpp-tutori…

ArgoCD Notificationで失敗検知の時間を短くする方法

ArgoCD Notificationでmanifestの適用後の失敗検知をしていると、10分経たないと通知がされません。これを短くする方法です。 方法 Statefulset / DaemonSetの場合はExceededの処理がArgoCDに見当たらなかったのでその状態にならなさそう。 Deploymentの場合…

【ArgoCD】HPA を使って複数のメトリクスを対象に追加するとOut of Sync状態のままになる

問題 HPA を使うとOut of Sync状態のままになる spec: maxReplicas: 30 metrics: - resource: name: cpu target: averageUtilization: 70 type: Utilization type: Resource - resource: name: memory target: averageUtilization: 70 type: Utilization typ…

【stackdriver】 PUTVALでカスタムメトリクスを送信する(collectd経由)

GoとかPythonでOpenCensusでいちいち書くのが煩わしすぎるので、手軽にシェルでstackdriverでメトリクスを送信する方法です。 元ネタ stackoverflow.com /home/testuser/test.sh duした値を出力するだけです。 #!/bin/bash INTERVAL=10 HOSTNAME=test FOLDER…

gcp_computeを使ったinventoryで動的にグループを作る

gcp_compute を使ってAnsibleのグループを作成するTipsを載せておきます。 GCEの操作 GCEにラベルを付与する(コンソールでもコマンドでも) ansible = true env = development or env = stg or env = production ラベルはなんでもよいし、値もなんでも良い…

IAP越しのAnsible SSHを高速に実行できるようにする

IAP越しのSSHを行ってAnsibleを操作する場合、ネットを調べると以下の二つが存在するようです。 wrapper shellを使用する iap-tunnelコマンドをProxyCommandとして追加してSSHをする 最初1を使っていたのですがあまりにも遅すぎてストレスが溜まっていたので…

LTEからWifiに切り替えたら通信は切断されるのか?(QUIC)

昔ふとした疑問からこんな記事を書きました。 qiita.com そして最近QUICの勉強をしていたら「QUICではLTEとWifiを切り替えても通信が継続できる」という記載があったのでちょっと調べてみることにしました。 5-tuple そもそもTCP/UDP通信は5-tupleと呼ばれる…

google_project_iam_xxxの違いとまとめ

GCPにおけるIAMの構造 メンバー ユーザ / グループ / サービスアカウント / ドメイン ロール(役割) GCPのリソースに対する権限(例:GCSの管理者権限 / Projectの閲覧権限 など) IAMポリシー ロールバインディングという名前で 「どのメンバーにどのロール…

外部IPを持たないインスタンスに対するインターネットからのアクセスについて

GCPにもAWSにも外部IPを持たないインスタンスを作ることができます。 AWSの場合はプライベートサブネットで作成したEC2インスタンスへアクセスをさせるためには、ALBやNLBなどのロードバランサーを使うかプロキシサーバを経由して外部アクセスを許容する方法…

GCP MemoryStore for RedisのFQDN/IPアドレスについて

MemoryStore for Redisを起動するとIPアドレスが発行されます。 クラウド使ってる勢からすると障害が起きて切り替わるようなDBへのアクセスはFQDNがいいわけです。 アプリケーション側でIP切り替えるの嫌ですからね。 で、MemoryStore for RedisでFQDNが使え…

ArgoCDにおけるステータスの意味をコードを追って調べた

結論 調査過程(コードリーディング) 普通の場合(ArgoCDによって用意されているやつ) 独自に定義する場合(Applicationなど) 結論 ArgoCDにおけるSync-Operationのステータスの意味は以下の通りです。 種類 状態 Healthy 正常 Progressing 正常ではないが、…