gashirar's blog

ウイスキーがすき/美味しいものがすき/k8sがすき

KubeWeekly #216: May 15, 2020

青文字はコメントだったり所感

kubeweekly.io

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をつける
  • ログを適切な形式にフォーマットする
    • Logstash Logback Encoderでjson形式にフォーマット
  • 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を作るようになった経緯と、どう対応するかの説明。

経緯については下記もどうぞ
Start deprecating all generators in run except for run-pod/v1 by soltysh · Pull Request #68132 · kubernetes/kubernetes · GitHub

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
  • 2 Even orchestrators need some TLC
    • Nodeに対するパッチあてや追加/削除、Namespaceの払い出しなどをやっていく
    • TLCの翻訳がわからず・・・モノに対する「tender loving care」で「修理する」とかかな?)
  • 3 Kubernetes needs proper infrastructure to succeed
    • 適切なインフラストラクチャが必要
    • K8sでMongoDBを動かしてみたが、SANで引き続き問題が発生してしまった」といった事例の紹介も
  • 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

Jetstack and Venafi join forces to bring Machine Identity Protection to the cloud native stack // Jetstack Blog

cert-managerを作っているJetstackがVenafi配下に。VenafiはMachine Identity管理の大手企業。
Machine Identityとは、認証やRBAC、監査などの管理の概念を人間以外のモノに適用したものらしい。

memo

  • VMwareによるOctarine買収、VenafiによるJetstack買収など、おカネが絡む記事がちらほら
  • kubectl runの挙動が変わっていたのは驚いた。これからはkubectl createを使おう