Dockerコンテナイメージの強化

Istioのデフォルトイメージは、いくつかの追加ツールを含むubuntuをベースとしています。Distrolessイメージをベースとした代替イメージも利用可能です。

これらのイメージは、すべての不要な実行ファイルとライブラリを削除するため、以下の利点があります。

  • 最小限の脆弱性セットを含むため、攻撃対象領域が縮小されます。
  • イメージが小さいため、起動が高速になります。

公式Distroless READMEのDistrolessイメージを使用する理由セクションも参照してください。

Distrolessイメージのインストール

Istioの設定にはインストール手順に従ってください。 *distrolessイメージ*を使用するには、variantオプションを追加します。

$ istioctl install --set values.global.variant=distroless

インジェクションされたプロキシイメージにのみdistrolessイメージを使用したい場合は、Proxy Configimage.imageTypeフィールドを使用することもできます。上記のvariantフラグはこれを自動的に設定します。

デバッグ

Distrolessイメージには、すべてのデバッグツール(シェルを含む!)がありません。セキュリティには優れていますが、プロキシコンテナへのkubectl execを使用したアドホックデバッグ機能が制限されます。

幸いなことに、一時コンテナがここで役立ちます。kubectl debugは、一時コンテナをポッドにアタッチできます。追加ツールを含むイメージを使用することで、従来どおりデバッグできます。

$ kubectl debug --image istio/base --target istio-proxy -it app-65c6749c9d-t549t
Defaulting debug container name to debugger-cdftc.
If you don't see a command prompt, try pressing enter.
root@app-65c6749c9d-t549t:/# curl example.com

これにより、istio/baseを使用して新しい一時コンテナがデプロイされます。これは、非distroless Istioイメージで使用されるのと同じベースイメージであり、Istioのデバッグに役立つさまざまなツールが含まれています。ただし、任意のイメージが機能します。コンテナは、サイドカープロキシ(--target istio-proxy)のプロセスネームスペースと、ポッドのネットワークネームスペースにもアタッチされます。

この情報は役に立ちましたか?
改善点についてご提案はありますか?

ご意見ありがとうございました!