gashirar's blog

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

KubeWeekly #217: May 22, 2020

青文字は所感です。

kubeweekly.io

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 Ambassador Webinar: Influencing DevOps without Authority - how "DevOps engineer" can advance real DevOps - Cloud Native Computing Foundation

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

動かしてはいないのですが、VSCodeKubernetes 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

https://www.getambassador.io/podcasts/podcats-living-on-the-edge-podcast-6-dana-lawson-on-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のオープンソースプロジェクト

  1. Prometheus
  2. Operator Framework
  3. Knative
  4. Tekton
  5. 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つの「べき/べからず集」をまとめている。

  1. 開発のさまざまなフェーズにセキュリティチェックを組み込む
    • 「最後にセキュリティチェックを行う」といった考え方はやめる
    • CI/CDパイプラインの早い段階でセキュリティチェックを組み込む(できれば開発初日から組み込む)
  2. セキュリティのチェックを手動で行わない
    • 手動によるセキュリティプロセスはCI/CDパイプラインの進行を妨げる要因
  3. GitOpsの導入を検討する
    • アプリのデプロイに関する変更を追跡することができる
    • 望ましくない変更があったときに、以前の状態に戻すことが容易である
  4. クラスタの状態を手動で変更しない
    • 手動で容易にクラスタの状態を変更できるが、この操作は状態がどうあるべきかが不確実になってしまう
  5. Kubernetesのセキュリティ関連の機能を適切に設定し、長期的に管理する
    • CIS Kubernetes Benchmarkはチェックの出発点
    • 特権コンテナは基本的には使わない
    • sshを使用してNodeにアクセスする場合は、監視サーバを経由してNodeへのすべてのアクセスをログに記録する
    • NetworkPolicyによるネットワーク制御をおこなう
    • TLSおよび認証/認可の機能を組み込む(Istioなど)
    • ボリュームに対するアクセスコントロールを行う
  6. デフォルトのパラメータに依存しない
    • デフォルトの設定ではセキュリティ的によろしくない場合が多い(Network Policyが設定されていない等)

5に関して、業務でもCIS Benchmarkとにらめっこしたりしていました。(2を見るに本当はにらめっこしていたらダメなのですが...)
ツールであればKubebenchなどが利用できると思います。
github.com

Memo

  • コンテナランナーを作る記事すごい