アプリケーションの公開は「5.1 Podの作成(起動)」に従い、アプリケーションのServiceを作成することでContainer Managementの外部に公開することができます。
また、Ingressを使用することで、Ingress Controller経由でServiceへのルートを公開することができます。
Ingress Controlerを経由したアプリケーションへのルート公開について、my-serviceという名前のServiceを例にして、Ingressの作成方法を説明します。
なお、本記事の例でingressを作成した場合、以下でアプリケーションのルートにアクセスすることができます。
http://<Kubernetes nodeサーバーのIPアドレス>:30000/testpath
Ingressリソースを作成するためのyamlファイルを作成します。
修正パッチF1013-2021-001を適用後、Kubernetesのバージョンアップに伴いyamlファイルの記述方法に変更があります。パッチを適用していない場合は、「修正パッチF1013-2021-001適用前」の内容に従ってファイルを作成してください。パッチを適用している場合は、「修正パッチF1013-2021-001適用後」の内容に従ってファイルを作成してください。
修正パッチF1013-2021-001適用前
ingress.yml
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test-ingress annotations: konghq.com/strip-path: "true" kubernetes.io/ingress.class: "kong" spec: rules: - host: app.example.com http: paths: - path: /testpath backend: serviceName: my-service servicePort: 80
パラメーター | 説明 |
---|---|
metadata.name | このIngressリソースの名前を指定します。 |
metadata.annotations.konghq.com/strip-path |
リクエストのURLを書き換えるための指定です。本パラメーターの指定は任意です。 "true"を指定し、"/testpath"にアクセスすると、my-serviceの"/"にアクセスします。 なお指定しない場合、"/testpath"にアクセスすると、my-serviceの"/testpath"にアクセスします。 |
metadata.annotations.kubernetes.io/ingress.class |
使用するIngress Controllerに対応する値を指定します。本製品に組み込まれたIngress Controllerを使用する場合は、"kong"を指定する必要があります。 |
spec.rules.host | アプリケーションのドメイン名を指定します。 |
spec.rules.http.paths.path |
Serviceへ転送するパスを指定します。 指定したパスでリクエストを受け付けると、spec.rules.http.paths.backendに指定したServiceに転送します。 本例の場合、app.example.com/testpathで受け付けたリクエストが転送されます。 |
spec.rules.http.paths.backend.serviceName |
転送先のServiceの名前を指定します。 Serviceのmetadata.nameと同じ値を指定する必要があります。 |
spec.rules.http.paths.backend.servicePort |
転送先のServiceのポート番号を指定します。 Serviceのspec.ports.portと同じ値を指定する必要があります。 |
修正パッチF1013-2021-001適用後
ingress.yml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress annotations: konghq.com/strip-path: "true" kubernetes.io/ingress.class: "kong" spec: rules: - host: app.example.com http: paths: - path: /testpath pathType: Prefix backend: service: name: my-service port: number: 80
パラメーター | 説明 |
---|---|
metadata.name | このIngressリソースの名前を指定します。 |
metadata.annotations.konghq.com/strip-path |
リクエストのURLを書き換えるための指定です。本パラメーターの指定は任意です。 "true"を指定し、"/testpath"にアクセスすると、my-serviceの"/"にアクセスします。 なお指定しない場合、"/testpath"にアクセスすると、my-serviceの"/testpath"にアクセスします。 |
metadata.annotations.kubernetes.io/ingress.class |
使用するIngress Controllerに対応する値を指定します。本製品に組み込まれたIngress Controllerを使用する場合は、"kong"を指定する必要があります。 |
spec.rules.host | アプリケーションのドメイン名を指定します。 |
spec.rules.http.paths.path |
Serviceへ転送するパスを指定します。 指定したパスでリクエストを受け付けると、spec.rules.http.paths.backendに指定したServiceに転送します。 本例の場合、app.example.com/testpathで受け付けたリクエストが転送されます。 |
spec.rules.http.paths.pathType |
パスの一致方法を指定できます pathTypeとして、Ingress Classリソースに依存するImplementationSpecific、完全一致のExact 、前方一致のPrefixが指定できます。 本例の場合、リクエストのパスとspec.rules.http.paths.pathで指定したパスを前方一致で比較します。 |
spec.rules.http.paths.backend.service.name |
転送先のServiceの名前を指定します。 Serviceのmetadata.nameと同じ値を指定する必要があります。 |
spec.rules.http.paths.backend.service.port |
転送先のServiceのポート番号を指定します。 Serviceのspec.ports.portと同じ値を指定する必要があります。 |
参考
Ingressの詳細についてはKubernetesの公式ページを参照してください。Kubernetes masterサーバーにログインして、以下のコマンドを実行します。
$ kubectl apply -f ingress.yml
アプリケーションの公開停止は「5.2 Podの削除(停止)」に従って、Container Managementの外部に公開したアプリケーションのServiceを削除してください。 Service作成時のマニフェストファイルを指定することで、PodとともにServiceを削除することができます。
また、Ingressを削除することで、Ingress Controller経由でのServiceへのルーティングを停止することができます。
Kubernetes masterサーバーにログインし、以下のコマンドを実行します。作成時のマニフェストファイルを指定することで、Ingressを削除することができます。
$ kubectl delete -f ingress.yml