アプリケーションの公開は「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