削除されていない Tiller Service

Helm 2 からの移行後に、残った Tiller Service と不要な管理経路を整理してください。

説明

Tiller Service が稼働中の Tiller を指していると、Helm 2 の管理エンドポイントへのクラスタ内部の経路が残ります。バックエンドがなければ Service だけで Tiller の操作はできませんが、未使用の設定は整理する必要があります。

Helm 2 はサポートが終了しています。移行後は Service とサーバーコンポーネントを両方削除してください。Service の削除だけでは、Pod アドレスやポート転送による直接アクセスは遮断されません。

想定される影響

  • Tiller が適切な認証なしに動作していると、他のワークロードがそのサービスアカウント権限を悪用する可能性があります。
  • 残った管理設定や権限は、実際のデプロイ経路の把握を難しくします。

対処方法

  • 必要なリリースとアプリケーションが新しいデプロイ方式でも動作することを先に確認してください。
  • 未使用の Tiller Service と Deployment を削除し、専用サービスアカウントと不要な権限バインディングを整理してください。
  • バックエンドと直接アクセス経路も確認し、必要なサービスをテストしてください。

例

最初の例は Tiller に接続する Service で、二つ目は別の通常の Service です。二つ目の設定を追加しても、既存の Tiller Service は削除されません。

変更前

yaml
apiVersion: v1
kind: Service
metadata:
  name: tiller-deploy
  labels:
    app: helm
    name: tiller
spec:
  type: ClusterIP
  selector:
    app: helm
    name: tiller
  ports:
    - name: tiller
      port: 44134
      targetPort: tiller

selector に一致する Pod に tiller という名前のポートがあれば、そのバックエンドへ転送できます。実際のバックエンドと認証設定を確認してください。

変更後

yaml
apiVersion: v1
kind: Service
metadata:
  name: some-service
  labels:
    name: some-label
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

selector のない通常の Service の抜粋です。EndpointSlice などで接続先を別途管理する必要があり、他の場所に Tiller が残っていないことを示すものでもありません。

参考資料