NetScaler Kubernetes Gateway Controller で事前設定された証明書を使用する

最終公開日 : Oct 02, 2026
このトピックでは、NetScaler アプライアンスにすでに設定されている証明書または証明書バンドルを Kubernetes Gateway で使用する方法について説明します。この機能により、既存の証明書を参照できるため、Kubernetes Secrets として管理する手間が省け、証明書管理が簡素化されます。

利点

NetScaler Kubernetes Gateway Controller で事前設定された証明書を使用する利点の一部を以下に示します。
  • 管理の簡素化: NetScaler アプライアンスにすでに設定されている証明書を使用します。
  • シークレット作成不要: 証明書用の Kubernetes Secrets の作成と維持にかかる手間を省きます。
  • 一元管理: Kubernetes で証明書を設定しながら、NetScaler で直接証明書を管理します。

事前設定された証明書を参照する方法

Gateway を定義する際、リスナー設定の certificateRefs セクションで事前設定された証明書または証明書バンドルを参照できます。

証明書の種類

次の2種類の事前設定された証明書または証明書バンドルを参照できます。
  1. ドメイン証明書: HTTPS 接続用のサーバー証明書。
  2. CA 証明書: クライアント認証用の認証局証明書。複数の CA 証明書を指定できます。

基本設定

事前設定された証明書を参照する簡単な例を次に示します。
NetScaler のセットアップ
add ssl certkey my-default-cert -cert /nsconfig/ssl/server.crt -key /nsconfig/ssl/server.key
add ssl certkeybundle my-cert-bundle -bundlefile /nsconfig/ssl/bundle.pem
または、事前設定された証明書バンドルを使用します。
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-gateway-with-preconf-certs
  namespace: default
spec:
  gatewayClassName: my-gateway-class
  addresses:
    - type: IPAddress
      value: "<IP ADDRESS>"
  listeners:
  - name: https-listener
    protocol: HTTPS
    port: 443
    tls:
      mode: Terminate
      certificateRefs:
      - group: "netscaler.certkeybundle"
        kind: "default"  # Only one domain cert. Should be bound as default unless kind is specified.
        name: "my-cert-bundle" # <---- Name of ssl certkeybundle configured on netscaler
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-gateway-with-preconf-certs
  namespace: default
spec:
  gatewayClassName: my-gateway-class
  addresses:
    - type: IPAddress
      value: "<IP ADDRESS>"
  listeners:
  - name: https-listener
    protocol: HTTPS
    port: 443
    tls:
      mode: Terminate
      certificateRefs:
      - group: "netscaler.certkey"
        kind: "default"         # Only one domain cert. Should be bound as default unless kind is specified.
        name: "my-default-cert" # <---- Name of ssl certkey configured on netscaler
設定フィールドの説明は次のとおりです。
  • group: 証明書のソースを指定します。
    • 事前設定されたNetScaler証明書の場合は「netscaler.certkey」
    • 事前設定されたNetScaler証明書バンドルの場合は「netscaler.certkeybundle」
  • kind: 証明書の種類を指定します。
    • 「ca」 - 認証局証明書(クライアント認証用)に使用します。複数のCA証明書を指定できます。
    • 「sni」 - SNIとしてバインドする必要があるサーバー証明書に使用します。
    注:
    kind はサーバー証明書ではオプションです。種類が指定されていないサーバー証明書が1つだけ存在する場合、それはデフォルトとしてバインドされます。複数のサーバー証明書が存在する場合、それらは自動的にSNI証明書としてバインドされます。
  • name: NetScalerアプライアンスで設定されている証明書の名前

一般的なシナリオ

シナリオ1:単一証明書

HTTPSリスナーに単一の事前設定済み証明書を使用します。
listeners:
- name: https
  protocol: HTTPS
  port: 443
  tls:
    mode: Terminate
    certificateRefs:
    - group: "netscaler.certkey"
      name: "company-ssl-cert"

シナリオ 2: 複数ドメイン証明書

複数のサーバー証明書が提供される場合、snienable を ENABLED に設定したSSLプロファイルを作成する必要があります:
listeners:
- name: https
  protocol: HTTPS
  port: 443
  tls:
    mode: Terminate
    certificateRefs:
    - group: "netscaler.certkey"
      name: "primary-domain-cert"
    - group: "netscaler.certkey"
      name: "secondary-domain-cert"
必要なSSLプロファイル
apiVersion: citrix.com/v1
kind: sslprofile
metadata:
  name: frontend-ssl-custom
spec:
  targetRef:
    - name: my-gateway-https
      sectionName: https
  config:
    sslprofiletype: "frontend"
    snienable: "ENABLED"

シナリオ 3: CA証明書によるクライアント認証

クライアント認証のためにCA証明書を追加します:
listeners:
- name: https
  protocol: HTTPS
  port: 443
  tls:
    mode: Terminate
    certificateRefs:
    - group: "netscaler.certkey"
      kind: "default"
      name: "server-cert"
    - group: "netscaler.certkey"
      kind: "ca"
      name: "client-ca-cert"

シナリオ 4: 証明書バンドルの使用

NetScalerで証明書バンドルが設定されている場合、netscaler.certkeybundle グループを使用します:
listeners:
- name: https
  protocol: HTTPS
  port: 443
  tls:
    mode: Terminate
    certificateRefs:
    - group: "netscaler.certkeybundle"
      name: "my-cert-bundle"

シナリオ 5: 事前設定済み証明書とKubernetes証明書の組み合わせ

事前設定済み証明書を通常のKubernetesシークレットと組み合わせることができます:
listeners:
- name: https
  protocol: HTTPS
  port: 443
  tls:
    mode: Terminate
    certificateRefs:
    - kind: Secret
      name: "k8s-tls-secret"
    - group: "netscaler.certkey"
      name: "additional-domain-cert"

前提条件

Gatewayで事前設定済み証明書または証明書バンドルを使用する前に:
  1. 証明書がNetScalerアプライアンスにすでに設定されていることを確認してください。
  2. NetScalerに表示されているとおりの正確な証明書名をメモし、Gateway CRDでそれを参照してください。
  3. Gateway CRDインスタンスのデプロイ後に証明書がNetScalerで作成された場合、適切なバインディングを確実にするためにGatewayリソースのYAMLを削除して再適用してください。

トラブルシューティング

一般的な問題とその解決策は次のとおりです。
  • 問題: 証明書が見つかりません
    解決策: 証明書名がNetScalerで設定されている名前と完全に一致していることを確認してください。
  • 問題: 誤った証明書が提供されました
    解決策: 複数の証明書 (SNI) を使用する場合は、以下を確認してください。
    • snienableがENABLEDに設定されたSSLプロファイルが作成され、SSL仮想サーバーにバインドされていること。
    • SSLProfile CRDを使用してSSLプロファイルを作成できます - ゲートウェイを参照するSSLProfile構成の例:
    apiVersion: citrix.com/v1
    kind: sslprofile
    metadata:
      name: frontend-ssl-custom
    spec:
      targetRef:
        - name: my-gateway-https
          sectionName: https
      config:
        sslprofiletype: "frontend"
        snienable: "ENABLED"

概要

Kubernetes Gatewayで事前設定された証明書を参照するのは簡単で、次のように要約できます。
  1. 通常の証明書には group: "netscaler.certkey" を使用します
  2. 証明書バンドルには group: "netscaler.certkeybundle" を使用します
  3. CA証明書には kind: "ca" を指定します。サーバー証明書の場合、kindはオプションです
  4. NetScalerで設定されている証明書名を提供します