Dockerコンテナイメージの強化
Istioのデフォルトイメージは、いくつかの追加ツールを含むubuntuをベースとしています。Distrolessイメージをベースとした代替イメージも利用可能です。
これらのイメージは、すべての不要な実行ファイルとライブラリを削除するため、以下の利点があります。
- 最小限の脆弱性セットを含むため、攻撃対象領域が縮小されます。
- イメージが小さいため、起動が高速になります。
公式Distroless READMEのDistrolessイメージを使用する理由セクションも参照してください。
Distrolessイメージのインストール
Istioの設定にはインストール手順に従ってください。 *distrolessイメージ*を使用するには、variantオプションを追加します。
$ istioctl install --set values.global.variant=distroless
インジェクションされたプロキシイメージにのみdistrolessイメージを使用したい場合は、Proxy Configのimage.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)のプロセスネームスペースと、ポッドのネットワークネームスペースにもアタッチされます。