Merge pull request #22987 from shuuji3/tasks/access-application-cluster/ingress-minikube
Translate tasks/access-application-cluster/ingress-minikube into Japanese
This commit is contained in:
@@ -0,0 +1,305 @@
|
||||
---
|
||||
title: Minikube上でNGINX Ingressコントローラーを使用してIngressをセットアップする
|
||||
content_type: task
|
||||
weight: 100
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
||||
[Ingress](/ja/docs/concepts/services-networking/ingress/)とは、クラスター内のServiceに外部からのアクセスを許可するルールを定義するAPIオブジェクトです。[Ingressコントローラー](/ja/docs/concepts/services-networking/ingress-controllers/)はIngress内に設定されたルールを満たすように動作します。
|
||||
|
||||
このページでは、簡単なIngressをセットアップして、HTTPのURIに応じてwebまたはweb2というServiceにリクエストをルーティングする方法を説明します。
|
||||
|
||||
|
||||
|
||||
## {{% heading "prerequisites" %}}
|
||||
|
||||
|
||||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
||||
|
||||
|
||||
|
||||
<!-- steps -->
|
||||
|
||||
## Minikubeクラスターを作成する
|
||||
|
||||
1. **Launch Terminal**をクリックします。
|
||||
|
||||
{{< kat-button >}}
|
||||
|
||||
1. (オプション) Minikubeをローカル環境にインストールした場合は、次のコマンドを実行します。
|
||||
|
||||
```shell
|
||||
minikube start
|
||||
```
|
||||
|
||||
## Ingressコントローラーを有効化する
|
||||
|
||||
1. NGINX Ingressコントローラーを有効にするために、次のコマンドを実行します。
|
||||
|
||||
```shell
|
||||
minikube addons enable ingress
|
||||
```
|
||||
|
||||
1. NGINX Ingressコントローラーが起動したことを確認します。
|
||||
|
||||
```shell
|
||||
kubectl get pods -n kube-system
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
このコマンドの実行には数分かかる場合があります。
|
||||
{{< /note >}}
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
default-http-backend-59868b7dd6-xb8tq 1/1 Running 0 1m
|
||||
kube-addon-manager-minikube 1/1 Running 0 3m
|
||||
kube-dns-6dcb57bcc8-n4xd4 3/3 Running 0 2m
|
||||
kubernetes-dashboard-5498ccf677-b8p5h 1/1 Running 0 2m
|
||||
nginx-ingress-controller-5984b97644-rnkrg 1/1 Running 0 1m
|
||||
storage-provisioner 1/1 Running 0 2m
|
||||
```
|
||||
|
||||
## Hello Worldアプリをデプロイする
|
||||
|
||||
1. 次のコマンドを実行して、Deploymentを作成します。
|
||||
|
||||
```shell
|
||||
kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
deployment.apps/web created
|
||||
```
|
||||
|
||||
1. Deploymentを公開します。
|
||||
|
||||
```shell
|
||||
kubectl expose deployment web --type=NodePort --port=8080
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
service/web exposed
|
||||
```
|
||||
|
||||
1. Serviceが作成され、NodePort上で利用できるようになったことを確認します。
|
||||
|
||||
```shell
|
||||
kubectl get service web
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
web NodePort 10.104.133.249 <none> 8080:31637/TCP 12m
|
||||
```
|
||||
|
||||
1. NodePort経由でServiceを訪問します。
|
||||
|
||||
```shell
|
||||
minikube service web --url
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
http://172.17.0.15:31637
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
Katacoda環境の場合のみ: 上部のterminalパネルでプラスのアイコンをクリックして、**Select port to view on Host 1**(Host 1を表示するポートを選択)をクリックします。NodePort(上の例では`31637`)を入力して、**Display Port**(ポートを表示)をクリックしてください。
|
||||
{{< /note >}}
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
Hello, world!
|
||||
Version: 1.0.0
|
||||
Hostname: web-55b8c6998d-8k564
|
||||
```
|
||||
|
||||
これで、MinikubeのIPアドレスとNodePort経由で、サンプルアプリにアクセスできるようになりました。次のステップでは、Ingressリソースを使用してアプリにアクセスできるように設定します。
|
||||
|
||||
## Ingressリソースを作成する
|
||||
|
||||
以下に示すファイルは、hello-world.info経由で送られたトラフィックをServiceに送信するIngressリソースです。
|
||||
|
||||
1. 以下の内容で`example-ingress.yaml`を作成します。
|
||||
|
||||
```yaml
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: example-ingress
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/rewrite-target: /$1
|
||||
spec:
|
||||
rules:
|
||||
- host: hello-world.info
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
backend:
|
||||
serviceName: web
|
||||
servicePort: 8080
|
||||
```
|
||||
|
||||
1. 次のコマンドを実行して、Ingressリソースを作成します。
|
||||
|
||||
```shell
|
||||
kubectl apply -f example-ingress.yaml
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
ingress.networking.k8s.io/example-ingress created
|
||||
```
|
||||
|
||||
1. 次のコマンドで、IPアドレスが設定されていることを確認します。
|
||||
|
||||
```shell
|
||||
kubectl get ingress
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
このコマンドの実行には数分かかる場合があります。
|
||||
{{< /note >}}
|
||||
|
||||
```shell
|
||||
NAME HOSTS ADDRESS PORTS AGE
|
||||
example-ingress hello-world.info 172.17.0.15 80 38s
|
||||
```
|
||||
|
||||
1. 次の行を`/etc/hosts`ファイルの最後に書きます。
|
||||
|
||||
{{< note >}}
|
||||
Minikubeをローカル環境で実行している場合、`minikube ip`コマンドを使用すると外部のIPが取得できます。Ingressのリスト内に表示されるIPアドレスは、内部のIPになるはずです。
|
||||
{{< /note >}}
|
||||
|
||||
```
|
||||
172.17.0.15 hello-world.info
|
||||
```
|
||||
|
||||
この設定により、リクエストがhello-world.infoからMinikubeに送信されるようになります。
|
||||
|
||||
1. Ingressコントローラーがトラフィックを制御していることを確認します。
|
||||
|
||||
```shell
|
||||
curl hello-world.info
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
Hello, world!
|
||||
Version: 1.0.0
|
||||
Hostname: web-55b8c6998d-8k564
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
Minikubeをローカル環境で実行している場合、ブラウザからhello-world.infoにアクセスできます。
|
||||
{{< /note >}}
|
||||
|
||||
## 2番目のDeploymentを作成する
|
||||
|
||||
1. 次のコマンドを実行して、v2のDeploymentを作成します。
|
||||
|
||||
```shell
|
||||
kubectl create deployment web2 --image=gcr.io/google-samples/hello-app:2.0
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
deployment.apps/web2 created
|
||||
```
|
||||
|
||||
1. Deploymentを公開します。
|
||||
|
||||
```shell
|
||||
kubectl expose deployment web2 --port=8080 --type=NodePort
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
service/web2 exposed
|
||||
```
|
||||
|
||||
## Ingressを編集する
|
||||
|
||||
1. 既存の`example-ingress.yaml`を編集して、以下の行を追加します。
|
||||
|
||||
```yaml
|
||||
- path: /v2
|
||||
backend:
|
||||
serviceName: web2
|
||||
servicePort: 8080
|
||||
```
|
||||
|
||||
1. 次のコマンドで変更を適用します。
|
||||
|
||||
```shell
|
||||
kubectl apply -f example-ingress.yaml
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
ingress.networking/example-ingress configured
|
||||
```
|
||||
|
||||
## Ingressを試す
|
||||
|
||||
1. Hello Worldアプリの1番目のバージョンにアクセスします。
|
||||
|
||||
```shell
|
||||
curl hello-world.info
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
Hello, world!
|
||||
Version: 1.0.0
|
||||
Hostname: web-55b8c6998d-8k564
|
||||
```
|
||||
|
||||
1. Hello Worldアプリの2番目のバージョンにアクセスします。
|
||||
|
||||
```shell
|
||||
curl hello-world.info/v2
|
||||
```
|
||||
|
||||
出力は次のようになります。
|
||||
|
||||
```shell
|
||||
Hello, world!
|
||||
Version: 2.0.0
|
||||
Hostname: web2-75cd47646f-t8cjk
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
Minikubeをローカル環境で実行している場合、ブラウザからhello-world.infoおよびhello-world.info/v2にアクセスできます。
|
||||
{{< /note >}}
|
||||
|
||||
|
||||
|
||||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
* [Ingress](/ja/docs/concepts/services-networking/ingress/)についてさらに学ぶ。
|
||||
* [Ingressコントローラー](/ja/docs/concepts/services-networking/ingress-controllers/)についてさらに学ぶ。
|
||||
* [Service](/ja/docs/concepts/services-networking/service/)についてさらに学ぶ。
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user