LoadBalancer タイプのサービス用サービス クラス
LoadBalancer タイプのサービスがデプロイされると、そのようなすべてのサービスは NetScaler Ingress Controller によって処理され、NetScaler 上で構成されます。ただし、複数の Ingress Controller がデプロイされている場合に、特定のサービスのみを NetScaler Ingress Controller に関連付けたい状況があるかもしれません。
Ingress リソースの場合、この機能は Ingress クラス 機能を使用してすでに利用可能です。Ingress リソースの Ingress クラス機能と同様に、
LoadBalancer タイプのサービスに対してサービス クラス機能が追加されました。
YAML ファイルの
spec セクションにある --service-classes 引数を使用して、NetScaler Ingress Controller を複数のサービス クラスに関連付けることができます。Ingress Controller にサービス クラスが指定されていない場合、サービス内の service.citrix.com/class アノテーションの有無にかかわらず、LoadBalancer タイプのすべてのサービスを受け入れます。
NetScaler Ingress Controller にサービス クラスが指定されている場合、
service.citrix.com/class アノテーションに一致する LoadBalancer タイプのサービスのみを受け入れます。この場合、NetScaler Ingress Controller は、service.citrix.com/class アノテーションに関連付けられていない LoadBalancer タイプのサービスを処理しません。
サービス クラスを含む YAML 設定の例
以下は、
service-classes を Ingress Controller に関連付けるためのサンプル YAML ファイルからの抜粋です。この抜粋では、以下のサービス クラスが Ingress Controller に関連付けられています。
-
svc-class1 -
svc-class2
spec:
serviceAccountName: cic-k8s-role
containers:
- name: cic-k8s-ingress-controller
# specify the service classes to be supported by NetScaler Ingress Controller in args section.
# First line should be --service-classes, and every subsequent line should be
# the name of allowed service class. In the given example two classes named
# "svc-class1" and "svc-class2" are accepted. This will be case-insensitive.
args:
- --service-classes
svc-class1
svc-class2
以下は、サービス クラスの関連付けが示されている LoadBalancer タイプのサービス定義 YAML ファイルからの抜粋です。この例では、Apache サービスがサービス クラス
svc-class1 に関連付けられています。NetScaler Ingress Controller が svc-class1 を受け入れるように構成されている場合、NetScaler 上でサービスを構成します。
apiVersion: v1
kind: Service
metadata:
name: apache
annotations:
service.citrix.com/class: 'svc-class1'
labels:
name: apache
spec:
type: LoadBalancer
selector:
name: apache
ports:
- name: http
port: 80
targetPort: http
selector:
app: apache