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
)のプロセスネームスペースと、ポッドのネットワークネームスペースにもアタッチされます。