KubeWeekly #216: May 15, 2020
青文字はコメントだったり所感
- The Headlines
- ICYMI: CNCF Webinars
- The Technical
- 9 kubectl commands sysadmins need to know
- Mistakes made and lessons learned with Kubernetes and GitOps
- Not every container has an operating system inside
- Best Practices for Microservices on Kubernetes
- Speed up Docker builds with distcc, ccache and kubernetes
- Simple example how to use Istio and Keycloak
- Using logging for your apps running on Kubernetes Engine
- Kubernetes 1.18 broke “kubectl run”, here’s what to do about it
- The Editorial
- CSI: Storage, with Saad Ali
- Defining & Enforcing Policies the GitOps Way (video,
- Kubernetes: The Underpin of UK’s COVID-19 Contact Tracing?
- Managing Kubernetes: 7 things you should understand
- How Kubernetes Enables Sustained Business Agility
- Kubernetes Storage Developments Enable Remote Work
- VMware to Acquire Kubernetes Security Startup Octarine and Fold it into Carbon Black
- Bare Metal in a Cloud Native World
- Jetstack acquired by Venafi
- memo
The Headlines
Our 1H 2020 cloud native survey has kicked off!
https://www.surveymonkey.com/r/GG26PL5/
(Cloud Nativeに関するアンケート)
Harbor 2.0 takes a giant leap in expanding supported artifacts with OCI support
Harbor 2.0 takes a giant leap in expanding supported artifacts with OCI support | The Harbor blog
Harbor 2.0がGAに。このリリースによって、初のOpen Container Initiative準拠のオープンソースレジストリになる。
例えば、Helm3を介してHelm chartをHarborにpushできるようになり、コンテナイメージと一緒に保存できるようになる。
(Helm chartも一緒に管理できるのは良い)
新規インストールした際のデフォルトのImage ScannerがClairからTrivyに変更されるが、既存のユーザはClairのままでもサポートされるので問題なしとのこと。
(Trivyの開発者さんのこの記事もぜひ→趣味で作ったソフトウェアが海外企業に買われるまでの話 - knqyf263's blog)
5月28日のウェビナーで「OCIとはなにか、Harbor2.0のリリースはコミュニティにとって何を意味するのか」を説明する予定。
ICYMI: CNCF Webinars
(動画観られてないためスキップ)
The Technical
9 kubectl commands sysadmins need to know
9 kubectl commands sysadmins need to know | Opensource.com
システム管理者が知っておくべき9つのkubectl command
kubectl get
kubectl create
kubectl edit
KUBE_EDITO
環境変数で使うEditorを変更できる- 例)
KUBE_EDITOR="nano" kubectl edit cronjob/my-existing-cron
kubectl delete
kubectl apply
kubectl describe
kubectl logs
kubectl exec
kubectl cp
記事にはなかったが、kubectl logs -p
で前回のコンテナのログがみられる。デバッグに便利
システム管理者向けではないが、個人的にはAPI Referenceがみられるkubectl explain
も推し
Mistakes made and lessons learned with Kubernetes and GitOps
https://blog.lukechannings.com/2020-05-10-kubernetes-gitops-lessons.html/
Docker Composeで構築した自身のサービスをKubernetes上に載せようとした際の体験談。
- 小さく、少しずつ変更しテストを行う。そしてそれを繰り返す
- バージョン番号を確認する
- Secretでbase64エンコードする際に改行が入っていないか確認する
- PVCとPVの対応に気をつける
- SSL PassthroughのIngressが利用できなかった
YAMLやshellのlint、kubectl exec
、kubectl tree pluginなどを利用して問題解決を進めたとのこと。
(HA Proxy実装のIngress Controllerを利用していたが、できなかった模様。Nginxや他の実装だとまた違うかも。)
Not every container has an operating system inside
Not every container has an operating system inside
Linux kernel/Linux Operating System/Linux Distributionの説明と、Container Imageがどのように構成されているかの説明。
コンテナ触りはじめのとき、コンテナの中でUbuntuの諸々のプロセスが起動してその後でWebサーバなどが動いているものだと勘違いしていたのを思い出した
記事中で使われているdive
というツール、Imageの確認に便利なのでオススメ→https://github.com/wagoodman/dive
Best Practices for Microservices on Kubernetes
Best Practices For Microservices on Kubernetes – Piotr's TechBlog
Spring BootのアプリをベースにBestPracticeをまとめたもの。
- プラットフォームがメトリクスを収集できるようにする
- Prometheusの導入
- アプリケーションのコンテナに対してもメトリクス用のPath/Portをつける
- ログを適切な形式にフォーマットする
- Liveness/Readiness Probeを設定する
- 例としてSpring Boot ActuatorでHealth Checkを実装
- サービスメッシュを使う
- Spring Cloudのようなフレームワークであれば、負荷分散や再試行の機能をアプリ側に組み込むこともできるが、こういった機能はプラットフォーム側に寄せた方が良い
- K8s以外のツールも取り入れる
- K8sには様々な機能があるが、Spring Boot Adminのようなツールも必要に応じて取り入れると良い
- ロールバックできるようにする
- ConfigMapやSecretの考慮もする
1.18でBetaだが、StartUp Probeも追加されたので、そのうちこういったBest Practice系にもでてきそう。 →Kubernetes 1.18の新機能を学び、使ってみよう | Think IT(シンクイット)
Speed up Docker builds with distcc, ccache and kubernetes
https://cinaq.com/2020/05/10/speed-up-docker-builds-with-distcc-ccache-and-kubernetes/
ネットワーク上のホストで分散コンパイルを行うツールであるdistccと、CまたはC++のコンパイラが出力するデータをキャッシュするツールであるccacheを使ってビルドの時間を短縮させる試み。distccとccacheをkubernetes上で動かすことで、6分かかっていた処理が3分になった。
Future workとして、Helm Chart化してつかえるようにもしていくかも、とのこと。
Simple example how to use Istio and Keycloak
https://labs.consol.de/development/2020/05/07/istio-and-keycloak.html/
IstioとKeycloakの導入のためのサンプル。
上記記事はサンプルの導入手順がメイン。次のIstioでのアプリケーション実行中に発生した問題やデバッグ方法についての記事もオススメ Debugging Istio - ConSol Labs
Using logging for your apps running on Kubernetes Engine
Learn about logging on Google Kubernetes Engine | Google Cloud Blog
GKEにおけるロギングの仕組みと、ログ収集のベストプラクティス。
一般的なコンテナにおけるログ収集のベストプラクティス
- stdout/stderrに書き込む
- stdout/stderrに書き込むのが難しい場合は、サイドカーパターンで対応
- ログを構造化する
- 重要度に応じてフィルタリングする
GKEではNodeごとのロギングエージェントがコンテナログを読み取り、メタデータを追加してからLogs Routerにログを送信する。ルーターはCloud Loggingと必要に応じて他のLogging sinkにもログを送信する。
Kubernetes 1.18 broke “kubectl run”, here’s what to do about it
Kubernetes 1.18 broke “kubectl run”, here’s what to do about it
kubectl run
がDeploymentではなくPodを作るようになった経緯と、どう対応するかの説明。
CKA/CKADでDeploymentのYAMLを生成する際は、kubectl create
でやる必要がありそう。
The Editorial
CSI: Storage, with Saad Ali
Kubernetes Podcast from Google: Episode 103 - CSI: Storage, with Saad Ali
GoogleのエンジニアによるKubernetes Storageの話。
Podcast内でStorage周りの開発の流れが説明されているが、日本語記事では下記もオススメ
KubernetesにおけるContainer Storage Interface (CSI)の概要と検証 - Qiita
Defining & Enforcing Policies the GitOps Way (video,
https://www.youtube.com/watch?v=Xe0PDeENMoE/ Defining & Enforcing Policies the GitOps Way)
OPA Gatekeeperを利用したポリシーコントロールの説明
Kubernetes: The Underpin of UK’s COVID-19 Contact Tracing?
Kubernetes: The Underpin of UK's COVID-19 Contact Tracing? - Container Journal
筆者はCOVID-19に対する英国での接触追跡システムのプラットフォームとしてKubernetesが大きな役割を果たしている可能性が高いのではないか?と言っている。
(筆者の意見であるため、実際にどのようなプラットフォームが利用されているかどうかは不明。)
Managing Kubernetes: 7 things you should understand
Managing Kubernetes: 7 things you should understand | The Enterprisers Project
長期にわたってKubernetesを運用するための7つのポイント
- 1 You have to treat Kubernetes as a serious investment
- Kubernetesに投資するなら真剣に
- 2 Even orchestrators need some TLC
- Nodeに対するパッチあてや追加/削除、Namespaceの払い出しなどをやっていく
- (TLCの翻訳がわからず・・・モノに対する「tender loving care」で「修理する」とかかな?)
- 3 Kubernetes needs proper infrastructure to succeed
- 4 Kubernetes' reliability can make you overconfident
- K8sのSelf-healingなどの機能に依存しすぎない
- Podが再起動するからと言って、ランタイムエラーについて監視するべきではないという意味ではない
- 5 The dial between experimental and boring will need regular tuning
- 導入の初期段階ではアプローチをシンプルに保つこと
- でも新しい機能も見逃さない事
- 6 Rigid development doesn't play well with containers and orchestration
- 最新のITツールは、最新のITプラクティスと文化に最もよく対応する
- 技術管理の問題であると同時に、組織文化の問題でもある
- 7 Don't try to be a hero
- マネージドサービスといった外部の助けを借りるタイミングを知っておくこと
How Kubernetes Enables Sustained Business Agility
How Kubernetes Enables Sustained Business Agility - Container Journal
組織のAgility向上に関して、Kubernetesが持つ3つの重要な機能。
- 一貫性のあるAPI
- 宣言的
- 拡張性
Kubernetes Storage Developments Enable Remote Work
Kubernetes Storage Developments Enable Remote Work
コンテナのストレージバックアップについて、Red Hat、NetApp、Kioxia、StorageOSがどのような取り組みをしているかの紹介。
それぞれの企業が提供する製品の説明がされている。
VMware to Acquire Kubernetes Security Startup Octarine and Fold it into Carbon Black
VMware to acquire Kubernetes security startup Octarine and fold it into Carbon Black – TechCrunch
VMwareがKuberetesのセキュリティ周りをやっているOctarineを買収、昨年21億ドルで買収したCarbon Blackに統合する意向であることを発表。
Bare Metal in a Cloud Native World
Bare Metal in a Cloud Native World – The New Stack
ベアメタルプロビジョニングツールの紹介。
前半はAWS LambdaのようなSaaS製品(ハードウェアレイヤを気にする必要のないサービス)の話から始まり、次にベアメタル関連の話が説明されている。
Jetstack acquired by Venafi
cert-managerを作っているJetstackがVenafi配下に。VenafiはMachine Identity管理の大手企業。
Machine Identityとは、認証やRBAC、監査などの管理の概念を人間以外のモノに適用したものらしい。
memo
- VMwareによるOctarine買収、VenafiによるJetstack買収など、おカネが絡む記事がちらほら
kubectl run
の挙動が変わっていたのは驚いた。これからはkubectl create
を使おう