KubeWeekly #217: May 22, 2020
青文字は所感です。
- The Headlines
- ICYMI: CNCF Webinars
- The Technical
- The Editorial
- Rook, the storage operator made in CNCF with Sébastien Han
- Scale the Harbor with Pierre Péronnet and Maxime Hurtrel
- Carving out a Cloud Native Culture in Established Organizations
- A Pandemic Plan for Application Architecture
- The Past, Present, and Future of API Gateways
- Microsoft Azure Arc Previews Kubernetes Focus
- LOTE #6: Dana Lawson on Kubernetes, Local Development Loops, and Constant Learning
- 5 open source projects that make Kubernetes even better
- Kubernetes deployments: 6 security best practices
- Memo
The Headlines
Last chance: Please fill out the 2020 CNCF Cloud Native Survey!
https://www.surveymonkey.com/r/KPQC97Q/
(CNCFのアンケートですが、先週金曜日締め切りでした。)
ICYMI: CNCF Webinars
CNCF Ambassador Webinar: Influencing DevOps without Authority – how “DevOps engineer” can advance real DevOps
CNCF Member Webinar: How to keep your clusters safe and healthy
CNCF Member Webinar: How to keep your clusters safe and healthy - Cloud Native Computing Foundation
CNCF Member Webinar: Take Your Monitoring to the Next Level
CNCF Member Webinar: Take Your Monitoring to the Next Level - Cloud Native Computing Foundation
The Technical
How to make a Helm chart in 10 minutes
How to make a Helm chart in 10 minutes | Opensource.com
helm create
によるHelm Chart作成のHow To。
Helm Chartの作成については、IntelliJ IDEA利用の方はKubernetes Pluginから作成するのもお勧めです。
IntelliJ IDEAのKubernetes Pluginが便利だったので紹介する - gashirar's blog
動かしてはいないのですが、VSCodeのKubernetes ExtensionにもHelm Chart作成の機能があるのでどうぞ。
Kubernetes - Visual Studio Marketplace
Canary deployment with Argo
https://particule.io/en/blog/argocd-canary//
冒頭にもありますが、まずは下記を読むと理解が深まります。
CNCF adopts Argo
ArgoCDと Argo Rolloutを使用して、git commitでアプリ展開を行うサンプル。
Running Dockerized Laravel Applications On Top Of Kubernetes
Running Dockerized Laravel Applications On Top Of Kubernetes
PHPのLarabelフレームワークで開発したアプリをコンテナ化してKubernetes上で動かす記事。
記事中では触れられてなかったですが、Apacheの同時接続数とかのチューニングはどうやるのがベターでしょうか。
過去の経験だとApache+mod_phpはPreforkで子プロセス作成していましたが、どれくらい子プロセスを立てるかかなり悩んだ記憶があります。
過去のJava(たしか8u191より前)だとホストマシン側のCPU/Memoryを見てしまう、といったこともあったりで従来のアプリをそのまま載せるのは難しいなと感じています。
Linux Containers in a few Lines of Code
Linux containers in a few lines of code
自作のContainer Runnerでbusyboxイメージを実行して、どのようにコンテナが機能するかを調べた記事。
- busyboxイメージを解凍して
./rootfs/bin/sh
を実行すると、OS全体にアクセスできる - OS全体にアクセスできないよう、
clone
で子プロセスがみられるリソースをコントロールする - シェルプロセス自体のPIDは1になったが、
procfs
からプロセスリストを読み込んでいるため、他プロセスがみえている - (psやmountコマンドが動かなくなるが)
procfs
をアンマウントして対応 - pivot_rootで隔離(するが、ネットワークが全く機能してないため、その対応が必要)
- br0インターフェースを手作業で作成し、Container Runnnerでveth0/1をbr0にリンク
- 完成!
たった66行のソースですが、どのような分離が必要なのかがまとめられていてすごい。 container.c · GitHub
The Editorial
Rook, the storage operator made in CNCF with Sébastien Han
Rook, l’opérateur de stockage made in CNCF avec Sébastien Han | Electro Monkeys
(フランス語だったのでスキップ・・・)
Scale the Harbor with Pierre Péronnet and Maxime Hurtrel
Mettre Harbor à l’échelle avec Pierre Péronnet et Maxime Hurtrel | Electro Monkeys
(フランス語だったのでスキップ・・・)
Carving out a Cloud Native Culture in Established Organizations
Podcast - Carving out a Cloud Native Culture in Established Organizations
RedHatのテクニカルマーケティングマネージャとWeaveworksのCTOによる「クラウドネイティブの文化とはどういうものか、クラウドネイティブへの移行を成功させるために組織をどのように必要があるかの議論」
A Pandemic Plan for Application Architecture
A Pandemic Plan for Application Architecture – The New Stack
現在はかつてないほど多くの人が在宅勤務している。
- 2020年3月のWebex会議の量は2月に250%増加し、アプリケーションは1日あたり420万以上の会議を提供
- Zoomは1日に2億人の会議参加者を抱えており、わずか3ヶ月前の1000万人から増加している
急なトラフィック増加にも耐えられるスケーリング可能なシステム構築をしていく必要がある。 また、SaaSベンダに予期しないイベントにどのように対処するかについても確認しておくことが重要。
The Past, Present, and Future of API Gateways
The Past, Present, and Future of API Gateways
- API Gatewayはモノリシックなルーティング機能にはじまり、アプリケーション全体に共通のFacadeを作った
- API Gatewayはトラフィック管理とサービス検出を組み込むことにより、マイクロサービスのニーズを満たすためにさらに進化している
- API Gatewayはクラウドネイティブ時代に向け、リリースの自動化に組み込まれ、メトリクスを開発チームに公開する必要がある
どのようにAPI Gatewayが生まれたのかをインターネット初期のころから説明されている記事です。
Microsoft Azure Arc Previews Kubernetes Focus
Microsoft Azure Arc Previews Kubernetes Focus - SDxCentral
Azure Arc対応のKubernetesシステムのプレビューバージョンのリリース
Azure Arc | Microsoft Azure 他クラウドベンダだとGCPのAnthosやAWSのOutpostsのような感じです。
LOTE #6: Dana Lawson on Kubernetes, Local Development Loops, and Constant Learning
VP of Engineering at GitHubが語る「Kubernetesが運用に与えた影響と、クラウドがローカル開発に与えた影響、そして継続的な学習のメリット」について。
ポッドキャストの中で語られていたポイントは次の通り。
- 単一かつ最良のソフトウェアアーキテクチャはない
- ビジネス、問題の領域、現在の制約、そして組織の将来の目標を理解し、適切なアーキテクチャを選択する必要がある
- 可能な限り多くのCDプロセスを自動化すること
- そうすることで、一般的に高い投資収益率が見込まれる
- Kubernetesは本番環境の実行と保守だけでなく、ローカル開発にも恩恵をもたらす
- クラウドテクノロジは多くの機能をエンジニアに提供するが、ソリューションはシンプルに保った方が良い
- 複雑になればなるほど、エラーやシステム障害の機会が増える
- クラウドに移行する場合は、コスト管理に注意する
- エンジニアは新しい技術について常に学び、探求することで利益をえる
- エンジニアは、自身がかかわるビジネスを理解することで利益を得られる
- 顧客への共感を育てることが不可欠
- 開発者はインフラストラクチャと運用の基本についてさらに学ぶことでメリットを得られる
5 open source projects that make Kubernetes even better
5 open source projects that make Kubernetes even better | The Enterprisers Project
Kubernetesをより活用するための5のオープンソースプロジェクト
- Prometheus
- Operator Framework
- Knative
- Tekton
- Kubeflow
2については、CRD+Custom Controllerの意味合いでのOperatorのように思いました。Operator FrameworkだとOperator Lyfecycle ManagerやOperator Meteringなども入ってくるかと思います。
4については、ML関連なので人によってはあまり触ったことがないかも
Kubernetes deployments: 6 security best practices
Kubernetes deployments: 6 security best practices | The Enterprisers Project
6つの「べき/べからず集」をまとめている。
- 開発のさまざまなフェーズにセキュリティチェックを組み込む
- 「最後にセキュリティチェックを行う」といった考え方はやめる
- CI/CDパイプラインの早い段階でセキュリティチェックを組み込む(できれば開発初日から組み込む)
- セキュリティのチェックを手動で行わない
- 手動によるセキュリティプロセスはCI/CDパイプラインの進行を妨げる要因
- GitOpsの導入を検討する
- アプリのデプロイに関する変更を追跡することができる
- 望ましくない変更があったときに、以前の状態に戻すことが容易である
- クラスタの状態を手動で変更しない
- 手動で容易にクラスタの状態を変更できるが、この操作は状態がどうあるべきかが不確実になってしまう
- Kubernetesのセキュリティ関連の機能を適切に設定し、長期的に管理する
- CIS Kubernetes Benchmarkはチェックの出発点
- 特権コンテナは基本的には使わない
- sshを使用してNodeにアクセスする場合は、監視サーバを経由してNodeへのすべてのアクセスをログに記録する
- NetworkPolicyによるネットワーク制御をおこなう
- TLSおよび認証/認可の機能を組み込む(Istioなど)
- ボリュームに対するアクセスコントロールを行う
- デフォルトのパラメータに依存しない
- デフォルトの設定ではセキュリティ的によろしくない場合が多い(Network Policyが設定されていない等)
5に関して、業務でもCIS Benchmarkとにらめっこしたりしていました。(2を見るに本当はにらめっこしていたらダメなのですが...)
ツールであればKubebenchなどが利用できると思います。
github.com
Memo
- コンテナランナーを作る記事すごい