5st7

5st7

7 posts published

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(遅いと思うなら、まずベンチマークで証明してください)」がなるほどなぁと思ったし、自分のお気持ちで最適化したくなることがあるので心に刻んでおきたい