地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

k8s

【k8s】ArgoRolloutsでカナリアリリースを試す

k8s

概要 github.com ArgoRolloutsを使ってさくっとカナリアリリースを試す記事です ArgoRolloutsとは KubernetesのCRDで標準ではできないブルーグリーンデプロイやカナリアリリースなどの高度なデプロイ機能を提供するOSSです。ArgoCDと組み合わせることでGitOp…

【k8s】セキュリティを高めるCAPABILITIES

k8s

linuxjm.osdn.jp capabilities - Linux のケーパビリティ (capability) の概要 ケーパビリティを使うとroot か root じゃないか、という究極の選択 的な権限の与え方ではなく、もっと細かい単位で権限をプロセスなりバイナリなりに付与してセキュリティを柔…

【k8s】conftestのメモ

k8s

conftestはyamlに限らないポリシーチェックツール。rego言語を使ってポリシーを書く。この記事では便利なサイトとかをまとめて貼っておく。 playground play.openpolicyagent.org 手元に実行環境がないのでwebでさくっと試せる。regoを学ぶのに良さそう。 公…

【k8s】nfsのexpoterを使ってみた

github.com $ go get -u -v github.com/aixeshunter/nfs_exporter $ ./${GOPATH}/bin/nfs_exporter --${flags} ... PVの学習をするためにNFSが欲しかった。せっかくなので監視もやりたいと思ったので導入してみた。 prometheusのオペレーターを使ってたりす…

【k8s】kubesecでsecretsの暗号化

k8s

secrestの管理する際に使えるツールkubesecを使ってみた記事 github.com 概要/インストール secrestの管理する際に使えるツールkubesecを使ってみた記事 brew install shyiko/kubesec/kubesec brew install shyiko/kubesec/kubesec --with-short-name # inst…

【k8s】configMapGeneratorをconf書き換え時にdeploymentを再作成させる

k8s

kustomize.io 背景/概要 Configmapは通常書き換えただけだとその内容は既存のpodには反映されない。この仕組み自体は役立つケースもあるがミドルウェアの修正時に即座に反映させたいケースで人の手を介してkubectl の rollout restartを打つ必要が出てきてし…

【k8s】metallbでオンプレでもtype: loadbalancerをやる

k8s

github.com オンプレでk8sを遊んでいてぶつかる問題としてLBが定義でなくてnodePortを使って遊ぶしかない問題。これはこれで問題ないけどnodeの数が増えた際に覚えなければいけない事項が増えて困るので導入してみた。 Metallbで出来ること MetalLBをKuberne…

【Istio】サービスメッシュの基本機能メモ

k8s

カナリアっぽいこと apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: reviews-route spec: hosts: - reviews.prod.svc.cluster.local http: - route: - destination: host: reviews.prod.svc.cluster.local subset: v2 weigh…

【k8s】Istioを使ってB/Gとかカナリーとかやってみる

k8s

概要 istio/envoyを使ってB/Gデプロイとかカナリアリリースとかを試してみた際のメモです。 github.com github.com Istio/Envoyとは ざっくりいうとクラウドネイティブなWebサービスのために設計されたロードバランサーのツール群。サービスメッシュの通信な…

【Istio】サーキットブレーカをやるサンプル

k8s

apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: httpbin-destination-rule spec: host: c-native-flask-svc subsets: - name: v1 labels: version: v1 trafficPolicy: connectionPool: tcp: maxConnections: 2 http: http2…

【k8s】水平オートスケールして遊ぶ

k8s

概要 kubernetes.io Horizontal Pod Autoscalerを使って遊んだ時のログ記事です。 メトリクスサーバをデプロイ オートスケールの契機を決めるのにpodやnodeのメトリクスを取得する必要があるのでこちらをデプロイします。 GitHub - kubernetes-sigs/metrics-…

【k8s】nslookup: can't resolve '(null)': Name does not resolve

k8s

作成したpodが外部の名前を引こうとした際に出力されるメッセージ / # nslookup google.com nslookup: can't resolve '(null)': Name does not resolve nslookup: can't resolve 'kubernetes.default': Try again / # ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8): …

【k8s】kubenetesを学ぶ上での前提知識的な記事を見つけたのでスキルチェックシート的なものをやってみた。

k8s

前職では撃沈したのでこの辺の知識を学び直して再入門してる。改めて前提知識の多さに撃沈しそう。https://t.co/5XWYnPLnPB— Ryuichi@vimなにもわからない (@ryuichi_1208) 2020年12月12日 久々にk8sを触って遊んでいて「Kubernetesを始める前に必要そうな知…

【k8s】kindを使ってGitHub Actionsでmanifestをテストしてみる

k8s

ステージング環境見たいなそんなに高頻度に更新がされないかつコンフリクトがあんまり無いフェーズでのテストではなく開発中に小さい単位でmanifestをapplyしてみたいケースがあるとします。 その場合開発者がそれぞれkindをローカルに持つといった解決策が…

【k8s】ダッシュボード 2.1を外部から表示させるための手順

k8s

qiita.com この記事書いたのが2年前で久々にk8sの勉強を始めたらダッシュボードのバージョンがめっちゃ上がってることに気づいたのでせっかくなので導入してみたのでまとめます。 ゴール クラスタ外のクライアントからkubernetesのダッシュボードを閲覧する …

【k8s】bashで便利に補完したりする

k8s

kubetnetsクラスタを壊して繰り返してをしてるとzshのセットアップなんかするのすらめんどくさいことがあったりします。 なのでbashで使えるk8sの便利ツールを最低限入れる際の手順です。(githubでcurl & shとかで叩けるようにしておくと便利) cat <<"EOT" >…

【k8s】podをワンライナー で消す

k8s

kubectl run -it --rm --restart=Never poisute --image=alpine -- sh -c "while true; do date; sleep 3; done

【k8s】dial tcp 10.96.0.1:443: i/o timeout

k8s

あるタイミングから「dial tcp 10.96.0.1:443: i/o timeout」がずっと出力され続けるようになった。意味としては特定のpodからapiサーバへの通信がタイムアウトするよ的な意味。 環境 (⎈ |kubernetes-admin@kubernetes:default) [root@k8s-master manifest]#…

【k8s】masterで動くコンポーネント

k8s

Master Nodeにデプロイされるコンポーネントの役割は以下のようになっています。 コンポーネント名 役割 kube apiserver KubernetesのAPIを公開するコンポーネント。kubectlからのリソース操作を受け付ける etcd 高可用性を備えた分散キーバリューストアでKu…

【k8s】configMapGeneratorをconf書き換え時にdeploymentを再作成させる

k8s

kustomize.io 背景/概要 Configmapは通常書き換えただけだとその内容は既存のpodには反映されない。この仕組み自体は役立つケースもあるがミドルウェアの修正時に即座に反映させたいケースで人の手を介してkubectl の rollout restartを打つ必要が出てきてし…

【k8s】各コンポーネント

k8s

kube-apiserver コントロールプレーンのフロントエンドサーバ。APIリクエストを処理 etcd ノードの詳細やクラスタに存在するリソースの詳細など、あらゆる情報を保存 kube-scheduler 新たに作成するPodを実行する場所を決定する kube-controller-manager Dep…

【k8s】ローリングアップデート

k8s

k8sの標準の機能だけでローリングアップデートを実現する。 サンプルアプリケーションは以下を使用 github.com 以下がmanifestの全文 apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: replicas: 4 selector: match…

【k8s】masterで動いてるpod

k8s

etcd クラスタ内のさまざまなデータを保存している一貫性のある高可用性のKVS kube-apiserver クラスタに対する全ての操作を司るAPIサーバー 認証や認可の処理なども行う kube-scheduler PodのNodeへの割り当てを行うスケジューラー Podを配置するNodeの選択…

【k8s】kubernetes使うならやっておきたいalias設定

k8s

alias k='kubectl' alias kc='k config view --minify | grep name' alias kdp='kubectl describe pod' alias krh='kubectl run --help | more' alias ugh='kubectl get --help | more' alias c='clear' alias kd='kubectl describe pod' alias ke='kubectl …

【k8s】各リソースの雛形コマンド

k8s

各リソースの雛形用コマンド Deployment kubectl run mydeploy --image nginx -o yaml --dry-run Pod # --restart=Never を付けると Pod になる kubectl run mypod --restart=Never --image nginx -o yaml --dry-run Job # --restart=OnFailure を付けると J…