名前空間をまたがるExternalNameサービスのサポート

最終公開日 : Oct 02, 2026
名前空間は、Kubernetesクラスター内のリソースを分離するために使用されます。時には、異なる名前空間のサービスが、別の名前空間にあるサービスにアクセスする必要がある場合があります。そのようなシナリオでは、Kubernetesが提供するExternalNameサービスを使用できます。ExternalNameサービスは、セレクターを持たず、代わりにDNS名を使用する特別なサービスです。
サービス定義では、externalNameフィールドは名前空間と、その名前空間でアクセスしようとしているサービスを指す必要があります。Citrix ingress controllerは、クラスター内のサービスにアクセスする必要がある場合に、ExternalNameタイプのサービスをサポートします。
ExternalNameサービスを作成する際には、以下の基準を満たす必要があります。
  • サービス定義のexternalNameフィールドは、以下の形式に従う必要があります。 svc: <name-of-the-service>.<namespace-of-the-service>.svc.cluster.local
  • ExternalNameサービス内のポート番号は、ターゲットとなるサービスのポート番号と完全に一致する必要があります。
注:
アプリケーションのサービスがKubernetesクラスターの外部にあり、ExternalNameサービスを作成した場合、外部サービス向けトラフィック管理機能を使用してドメイン名を解決できます。

ExternalNameサービスの例

この例では、デフォルトの名前空間でmysqlサービスが実行されており、namespace1名前空間からmysqlサービスにアクセスするために、サンプルExternalNameサービスが作成されます。
以下は、デフォルトの名前空間で実行されているMySQLサービスのサンプルサービス定義です。
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: default
spec:
  clusterIP: None
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: mysql
  type: ClusterIP
以下は、namespace1名前空間からmysqlサービスにアクセスするためのサンプルExternalNameサービス定義です。
kind: Service
apiVersion: v1
metadata:
  name: dbservice
  namespace: namespace1
spec:
  type: ExternalName
  externalName: mysql.default.svc.cluster.local
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
この例では、サービスはexternalName: mysql.default.svc.cluster.localフィールドで指定されているように、mysqlがデプロイされている名前空間を指しています。ここで、mysqlはサービス名、defaultは名前空間です。ポート名もmysqlサービスと同じであることがわかります。