IBM Cloud Docs
ワーカー・ノードへの静的ルートの追加

ワーカー・ノードへの静的ルートの追加

IBM Cloud® Kubernetes Service クラスターの静的ルート・アドオンを有効化することにより、ワーカー・ノードに静的ルートを作成します。

静的ルートについて

プライベート・ネットワークを介して他のネットワークと通信するようにクラスター・ネットワークを構成するときには、ワーカー・ノードにカスタム静的ルートを追加する必要がある場合があります。 静的ルートにより、ワーカー・ノードが、VPN または Gateway Appliance を介して、応答パケットをクラスターからオンプレミス・データ・センターの IP アドレスに正常に転送できるようになります。

例えば、VPN を使用して、プライベート・ネットワークを介してクラスターをオンプレミス・データ・センターに接続することができます。 さらに、プライベート VPN 接続により、クラスターとデータ・センターの間で要求内のソース IP アドレスが保持されます。

オンプレミス・サービスがクラスター内のアプリに要求を送信すると、リバース・パス・フィルタリング (RPF) のため、アプリ・ポッドがオンになっているワーカー・ノードは応答をドロップします。 RPF は、ワーカー・ノードのルーティング・テーブルにリストされていない IP アドレスに対する応答をドロップする Linux カーネルの機能です。 要求で保持されていたオンプレミス IP アドレスはワーカー・ノードによってルーティング可能ではないため、応答はドロップされます。

この場合、静的経路を作成して、要求からの送信元 IP アドレスがオンプレミス・サブネットの 1 つからのものである場合に、代わりに VPN ゲートウェイ IP アドレスに応答が送信されるようにすることができます。 この静的ルートをワーカー・ノードのルーティング・テーブルに追加することにより、以下のことが保証されます。

  • オンプレミスの IP アドレスを指すルーティング・ルールが存在するため、RPF によって応答パケットがドロップされることはありません。
  • 応答パケットは、最初に VPN ゲートウェイ IP アドレスを経由して正常にルーティングされ、その後、オンプレミス IP アドレスに転送されます。

静的ルート・クラスター・アドオンを使用して行えることは、静的ルートの適用および管理のみです。 VPN、ゲートウェイ・アプライアンス、または IBM Cloud® Direct Link 接続をお客様自身で構成して管理する必要があります。

静的ルート・アドオンの有効化

IBM Cloud Kubernetes Service で静的ルートの使用を開始するには、静的ルート・アドオンを有効にします。

開始前に

コンソールからの静的経路アドオンの有効化

IBM Cloud コンソールを使用するには、以下の手順を実行します。

  1. クラスター・ダッシュボードで、静的ルート・アドオンのインストール先のクラスターの名前をクリックします。
  2. 静的ルート・カード上で、**「インストール」**をクリックします。
  3. **「インストール」**をもう一度クリックします。
  4. 静的ルート・カードで、アドオンがリストされていることを確認します。

CLI を使用した静的経路アドオンの有効化

CLI を使用するには、以下の手順を実行します。

  1. static-routeアドオンを有効にします。

    ibmcloud ks cluster addon enable static-route --cluster <cluster_name_or_ID>
    
  2. 静的ルート・アドオンの状況が Addon Ready であることを確認します。

    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

    出力例

    Name              Version     Health State   Health Status
    static-route      1.0.0       normal         Addon Ready
    

静的ルートの作成

静的ルート・アドオンを有効化したら、カスタム・ルートのリソースを作成して適用することができます。

  1. 静的ルート・リソース用の YAML ファイルを作成します。

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
      name: <route_name>
    spec:
      subnet: "<subnet_CIDR>"
      gateway: "<gateway_IP>"
      selectors:
        - key: "<label_key>"
          values:
            - "<label_value>"
          operator: In
    

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
      name: mystaticroute
    spec:
      subnet: "192.168.0.0/24"
      gateway: "10.0.0.1"
      selectors:
        - key: "kubernetes.io/arch"
          values:
            - "amd64"
          operator: In
    
    subnet
    ワーカー・ノードへの要求の送信元となる外部サブネット (オンプレミス・ネットワーク内のサブネットなど) の CIDR を指定します。 外部サブネットを以下の予約済み範囲に含めることはできません。 デバイス相互接続の範囲 198.18.0.0/15 は使用できます。
    • 10.0.0.0/8
    • 172.16.0.0/16
    • 172.18.0.0/16
    • 172.19.0.0/16
    • 172.20.0.0/16
    gateway
    Gateway IP アドレスがワーカー・ノードと同じサブネット上に存在する場合は、Gateway IP アドレスを指定します。 Gateway IP アドレスが IBM Cloud プライベート・ネットワーク内の別のサブネットに存在する場合は、このフィールドを含めないでください。 この場合、ワーカー・ノードはプライベート・ネットワークのバックエンド・ルーターに応答を送信し、ルーターは、他のサブネット上のゲートウェイに応答を送信します。 静的ルートが作成されると、10.0.0.0/8 の範囲内のバックエンド・ルーターの IP アドレスが、自動的にデフォルトのゲートウェイとして割り当てられます。
    selectors
    ワーカー・ノード・ラベルに基づいて、特定のワーカー・ノードにのみ静的ルートを作成するには、そのラベルの key および values を含めます。
  2. YAML ファイルをクラスターに適用して、静的ルートを作成します。

    kubectl apply -f <route_name>.yaml
    
  3. 静的ルートが作成されたことを確認します。 出力で、静的経路を作成した各ワーカー・ノードの node_status を確認します。

    kubectl get staticroute <route_name> -o yaml
    

    出力例

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"static-route.ibm.com/v1","kind":"StaticRoute","metadata":{"annotations":{},"name":"mystaticroute"},"spec":{"selectors":[{"key":"kubernetes.io/arch","operator":"In","values":["amd64"]}],"subnet":"10.94.227.46/24"}}
    creationTimestamp: "2020-05-20T16:43:12Z"
    finalizers:
    - finalizer.static-route.ibm.com
    generation: 1
    name: mystaticroute
    resourceVersion: "3753886"
    selfLink: /apis/static-route.ibm.com/v1/staticroutes/mystaticroute
    uid: f284359f-9d13-4e27-9d3a-8fb38cbc7a5c
      spec:
        selectors:
        - key: kubernetes.io/arch
          operator: In
          values:
          - amd64
        subnet: 10.94.227.46/24
      status:
        nodeStatus:
        - error: ""
          hostname: 10.94.227.19
          state:
            gateway: 10.94.227.1
            selectors:
            - key: kubernetes.io/arch
              operator: In
              values:
              - amd64
            subnet: 10.94.227.46/24
        - error: ""
          hostname: 10.94.227.22
          state:
            gateway: 10.94.227.1
            selectors:
            - key: kubernetes.io/arch
              operator: In
              values:
              - amd64
            subnet: 10.94.227.46/24