5st7 IN THE SHELL

俺は強い

istioで Redisのクライアント証明書認証 をやってあげるという話

こんにちは、たけるです。 今日はistioでk8s外においてあるRedisのクライアント証明書認証 をやってあげようという話をします。 アプリケーションはTCPでサイドカーのistio-proxyに対してサイドカーのistio-proxyが外部のRedisに対して暗号化しつつトラフィックを送るメリット的なのは以下? アプリケーションで証明書を管理する必要がないアプリケーション側のライブラリがMutual TLSによるクライアント認証に対応していなくても問題なく使えるこんな感じのServiceEntryとDestinationRuleを宣言してあげます apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: external-redis spec: hosts: - hoge.redislabs.com location: MESH_EXTERNAL resolution: DNS ports: - name: tcp-redis protocol: TCP number: 16936 --- apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: external-redis spec: host: hoge.

Redis on k8sの選択肢

ざっと調べて色々あったので紹介します そもそもk8s上でRedisを動かすのはしんどい helm Chart https://github.com/bitnami/charts/tree/master/bitnami/redis スタンドアローンかSentinel構成を取れる https://github.com/bitnami/charts/tree/master/bitnami/redis-cluster Redis Clusterを組める https://github.com/DandyDeveloper/charts/tree/master/charts/redis-ha Sentinelで動かしつつHAProxyを前段に立ててくれる Operator https://github.com/spotahome/redis-operator Sentinelを管理してくれる https://github.com/OT-CONTAINER-KIT/redis-operator スタンドアローンかRedis Clusterを管理してくれるOperator、Clusterのmasterとslaveを分けたStatefulsetで配置するのでbitnamiのチャートより柔軟な配置戦略が取れそう?

k8s schema validationにkubeconformが便利という話

こんにちは、たけるです。 皆さんk8sのマニフェストが構文が正しい、ということをどうやって確認していますか? 必須フィールドに抜けがないのかということを確認していますか? マニフェストのValidationをする方法としては以下があると思います(他にもあるかもしれません) kubectl apply --dry-run=clientkubectl apply --dry-run=serverkubevalkubeconformkubectl applyのdry runはserverモードだと、色々な設定ミスを検出できます(たぶん)が、実際に動いているKubernetes環境が必要で色々と面倒です kubevalやkubeconformはKubernetes環境がなくてもKubernetesマニフェストを検証できるツールです。 たとえばこんな感じのマニフェストがあった として apiVersion: apps/v1 kind: Deployment metaData: name: test namespace: test labels: app: test spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers:

2022年やりたいこと/やらないこと

たけるです。 あけましておめでとうございます。今年もよろしくおねがいします。 2022年やりたいこと、2022年はこれはやらないぞ〜ってことを纏めて また年末に振り返れたらな〜と思います 以下箇条書き やりたいこと 引越 1LDKの家に引っ越してQoLをバク上げしたい 痩せる(運動する) 65kgぐらいまで… 英語 最近自分の英語力のなさに嘆いているため TOEFL iBTで60~70ぐらい取れるようになりたいナ・・・ お世話になっているOSSへのコントリビュート 髪の毛を生やす ふさふさになりてェ・・・・・・・・・・・・・・・・・・ 九州外の温泉宿へ行く 最高の人生を歩みたい やらないこと 無意味な外食    - 無意味なため ヘラる 無意味なため

Jaegerを使った分散トレーシング

たけるです。 最近Observabilityに関して学ぶ機会が多かったのでJaegerを触って 今回はKubernetes(kind)上にJaegerを構築してわいわいやっていこうと思います Jaegerは以下のコンポーネントから構成されるみたいです (参考) jaeger-client アプリケーションに組み込まれたOpenTracingAPIの言語固有の 例えばgo-grpcだとopentracing-contrib/go-grpc jaeger-agent UDPを通して送信されたスパンをコレクターに流すネットワークデーモン jaeger-collector Agentからトレースを受け取り、トレースを検証し、インデックスを付けてDBに保存する jaeher-query DBからトレースを取得してWeb UIを表示する 適当にクラスタを立てます $ kind create cluster helmでクラスタにJaeger Operatorをインストールします $ helm repo add jaegertracing https://jaegertracing.github.io/helm-charts $ helm repo update JaegerをAll In One Deploymentでデプロイします。 今回はデータの永続化はしませんが、ElasticSearch Operatorなりk8ssandraなりを入れてあげてウェイってしてあげればいいのかなぁと思います。 $ kubectl apply -f jager.yaml

GolangのBest Practice

最近Golangを書く機会が多かったので、Golangのコーディング規約やBest Practiceに類ずるモノを纏めました Go Proverbs EffectiveGo CodeReviewComments 日本語訳 CommonMistakes Uber Go Style Guide 日本語訳 The Zen of Go Style guideline for Go packages Idiomatic Go Go testing style guide 中でもThe Zen of Goの「if you think it’s slow, first prove it with a benchmark(遅いと思うなら、まずベンチマークで証明してください)」がなるほどなぁと思ったし、自分のお気持ちで最適化したくなることがあるので心に刻んでおきたい

Kubernetesへ入門する際に読んだ本

こんにちは〜〜ごーすとです 今年の4月からk8sを触っているのですが、そのときから読んだ本を紹介していこうと思います 読んだ本 しくみでわかるKubernetes 読んだ本の中ではこの本が一番入門書としてはよかったです。 k8sの構築などもAWSを使うことで楽に触り始めることができますし、筆者の最短経路でk8sに触れるようになるにはという思いが込められており凄く良い本でした。 また、設計のハマりどころもどのように考えていけばいいのかなどが纏められており初学者としては助かりました。 ただDockerについてはある程度理解している必要があるのでそのような人はイラストでわかるDockerとKubernetesとかから入門するといいのかなと思います Kubernetes完全ガイド 触り始めの頃に最初に読んだ本でしたが、僕にはむずかしかったです・・・ イラストでKubernetesの動作が纏まっているので今ではリファレンス代わりに読んだりしています。 Kubernetesで実践するクラウドネイティブDevOps Kubernetes上のアプリケーションの運用をどう考えたらいいかなど考え方の選択肢を与えてくれる本です。 Kubernetes上のアプリケーション運用で困るようなこと解決策を理由とともにかかれているので色々落ち着いたら読み直したいですね・・・ 番外編: やったこと KatacodaのKubernetesコース Kubernetes The Hard Way

GORM v2のBreaking Changeまとめ

変更点まとめ パスの変更 v1 "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/postgres" v2 "gorm.io/gorm" _ "gorm.io/driver/postgres" Transactionがデフォルトで貼られるように GORM v2ではTransactionを常時貼るようになってます この機能をオフにするためには以下のようにします v2 db, _ := gorm.Open(mysql.New(conn)), &gorm.Config{ SkipDefaultTransaction: true, }) Relation関数の廃棄 Relation関数がなくなりました なのでAssociationで代用してあげる必要があります。 ちなみにこのAssoctioanクラスの関数だけGoっぽくerrorが戻り値になっています v1 if err := db.Model(&user).Related(project)

DockerのPHP環境にXdebugをインストールする

ただの覚え書きです 以下のようにpecl installでXdebugのダウンロード/コンパイルしたのちdocker-php-ext-enableで有効にすればおk docker-php-ext-enableのことを摩訶不思議コマンドだと思っていたけど設定ファイルにzend_extension=hoge.soを書き出してくれるコマンドらしい。 便利~ FROM php:7.4-fpm RUN pecl install xdebug-2.8.1 \ && docker-php-ext-enable xdebug

Keybase.ioに登録した

タイトルどおりです。おそらく友人であるところの@mute1008の誘いからKeybase.ioに登録しました Keybaseは公開鍵基盤の一つなんですけど、TwitterやGitHubなどといったSNSのアカウントと公開鍵を紐付けることで本人を証明したり、いろんな人とチャットができたりします あとはKBFSと呼ばれる独自のファイルシステムもあってエンドツーエンドで暗号化されていてKeybase側からもファイルを確認できないらしいです(かっけえ・・・) Keybase.ioを詳しい話は、以下の記事とか読んでください https://techwave.jp/archives/introducing-keybase-chat-25081.html https://www.nikhita.dev/introduction-to-keybase ということで今すぐKeybase.ioに登録してぼくをフォローお願いします https://keybase.io/5st7

HomebrewでVimをインストールする(with-override-system-viオプションが使えなくなった話)

環境 macOS Catalina(10.15.4) Homebrew 2.2.16 動機 Qiitaの記事見てたらオプションにwith-override-system-viつけてインストールしてあげるといいよ〜と書いてあった 脳死でそのとおりにコマンド叩いたらエラー吐いてつらい気持ちになりました $ brew install vim --2.2.16 ~~省略~~ Error: invalid option: --with-override-system-vi 原因 brew infoで見てみたらそもそもオプションが消えてた $ brew info vim vim: stable 8.2.0700 (bottled), HEAD ~~~~~~~省略~~~~~~~~ ==> Options --HEAD Install HEAD version 調べてみたら2年ぐらい前からwith-override-system-viがなくなってたらしい https://github.com/Homebrew/