Skip to content

Commit 4a6dd8a

Browse files
committed
Update deploy-intro according to upstream changes
1 parent ee05e9e commit 4a6dd8a

File tree

2 files changed

+127
-88
lines changed

2 files changed

+127
-88
lines changed

content/ja/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro.html

Lines changed: 0 additions & 88 deletions
This file was deleted.
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
---
2+
title: Deploymentを作成するためにkubectlを使う
3+
weight: 10
4+
---
5+
6+
## {{% heading "目的" %}}
7+
8+
* アプリケーションのデプロイについて学ぶ。
9+
* kubectlを使って、Kubernetes上にはじめてのアプリケーションをデプロイする。
10+
11+
## KubernetesのDeployments
12+
13+
{{% alert %}}
14+
_Deploymentは、アプリケーションのインスタンスを作成および更新する責務があります。_
15+
{{% /alert %}}
16+
17+
{{< note >}}
18+
このチュートリアルでは、AMD64アーキテクチャを必要とするコンテナを使用します。異なるCPUアーキテクチャのコンピュータでminikubeを使用する場合は、AMD64をエミュレートできるドライバでminikubeを使用してみてください。例えば、Docker Desktopドライバはこれが可能です。
19+
{{< /note >}}
20+
21+
[実行中のKubernetesクラスター](/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/)を入手すると、その上にコンテナ化アプリケーションをデプロイすることができます。そのためには、Kubernetesの**Deployment**の設定を作成します。DeploymentはKubernetesにあなたのアプリケーションのインスタンスを作成し、更新する方法を指示します。Deploymentを作成すると、KubernetesコントロールプレーンはDeployment内に含まれるアプリケーションインスタンスをクラスター内の個々のノードで実行するようにスケジュールします。
22+
23+
アプリケーションインスタンスが作成されると、Kubernetes Deploymentコントローラーは、それらのインスタンスを継続的に監視します。インスタンスをホストしているノードが停止、削除された場合、Deploymentコントローラーはそのインスタンスをクラスター内の別のノード上のインスタンスと置き換えます。**これは、マシンの故障やメンテナンスに対処するためのセルフヒーリングの仕組みを提供しています。**
24+
25+
オーケストレーションが登場する前の世界では、インストールスクリプトを使用してアプリケーションを起動することはよくありましたが、マシン障害が発生した場合に復旧する事はできませんでした。アプリケーションのインスタンスを作成し、それらをノード間で実行し続けることで、Kubernetes Deploymentsはアプリケーションの管理に根本的に異なるアプローチを提供します。
26+
27+
## Kubernetes上にはじめてのアプリケーションをデプロイする
28+
29+
{{% alert %}}
30+
_Kubernetesにデプロイするには、アプリケーションをサポートされているコンテナ形式のいずれかにパッケージ化する必要があります。_
31+
{{% /alert %}}
32+
33+
{{< figure src="/docs/tutorials/kubernetes-basics/public/images/module_02_first_app.svg" class="diagram-medium" >}}
34+
35+
Kubernetesのコマンドラインインターフェースである[kubectl](/docs/reference/kubectl/)を使用して、Deploymentを作成、管理できます。`kubectl`はKubernetes APIを使用してクラスターと対話します。このモジュールでは、Kubernetesクラスターでアプリケーションを実行するDeploymentを作成するために必要な、最も一般的な`kubectl`コマンドについて学びます。
36+
37+
Deploymentを作成するときは、アプリケーションのコンテナイメージと実行するレプリカの数を指定する必要があります。Deploymentを更新することで、あとでその情報を変更できます。ブートキャンプの[Module 5](/docs/tutorials/kubernetes-basics/scale/scale-intro/)[Module 6](/docs/tutorials/kubernetes-basics/update/update-intro/)では、Deploymentをどのようにスケール、更新できるかについて説明します。
38+
39+
最初のDeploymentには、NGINXを使用して全てのリクエストをエコーバックする、Dockerコンテナにパッケージされたhello-nodeアプリケーションを使用します。(まだhello-nodeアプリケーションを作成して、コンテナを使用してデプロイしていない場合、[Hello Minikube tutorial](/ja/docs/tutorials/hello-minikube/)の通りにやってみましょう。)
40+
41+
kubectlもインストールされている必要があります。インストールが必要な場合は、[ツールのインストール](/docs/tasks/tools/#kubectl)からインストールしてください。
42+
43+
Deploymentが何であるかがわかったので、最初のアプリケーションをデプロイしましょう!
44+
45+
### kubectlの基本
46+
47+
kubectlコマンドの一般的な書式は`kubectl action resource`です。
48+
49+
これは指定された_resource_`node`, `deployment`など)に対して指定された_action_`create`, `describe`, `delete`など)を実行します。指定可能なパラメータに関する追加情報を取得するために、サブコマンドの後に`--help`を使うこともできます(例:`kubectl get nodes --help`)。
50+
51+
`kubectl version`コマンドを実行して、kubectl がクラスタと通信できるように設定されていることを確認してください。
52+
53+
kubectlがインストールされていて、クライアントとサーバーの両方のバージョンを確認できることを確認してください。
54+
55+
クラスタ内のノードを表示するには、`kubectl get nodes`コマンドを実行します。
56+
57+
利用可能なノードが表示されます。後で、KubernetesはNodeの利用可能なリソースに基づいてアプリケーションをデプロイする場所を選択します。
58+
59+
### アプリケーションをデプロイする
60+
61+
最初のアプリケーションを`kubectl create deployment`コマンドでKubernetesにデプロイしてみましょう。デプロイ名とアプリケーションイメージの場所を指定する必要があります(Docker Hub外でホストされているイメージはリポジトリの完全なURLを含める必要があります)。
62+
63+
```shell
64+
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
65+
```
66+
67+
素晴らしい!deploymentを作成して、最初のアプリケーションをデプロイしました。これによっていくつかのことが実行されました。
68+
69+
* アプリケーションのインスタンスを実行可能な適切なノードを探しました(利用可能なノードは1つしかない)。
70+
* アプリケーションをそのノードで実行するためのスケジュールを行いました。
71+
* 必要な場合にインスタンスを新しいノードで再スケジュールするような設定を行いました。
72+
73+
deploymentの一覧を得るには`kubectl get deployments`コマンドを使います。
74+
75+
```shell
76+
kubectl get deployments
77+
```
78+
79+
アプリケーションの単一のインスタンスを実行しているdeploymentが1つあることが分かります。インスタンスはノード上のコンテナ内で実行されています。
80+
81+
### アプリケーションを見る
82+
83+
Kubernetes内部で動作している[Pod](/docs/concepts/workloads/pods/)は、プライベートに隔離されたネットワーク上で動作しています。デフォルトでは、同じKubernetesクラスタ内の他のPodやServiceからは見えますが、そのネットワークの外からは見えません。`kubectl`を使用する場合、アプリケーションと通信するためにAPIエンドポイントを通じてやりとりしています。
84+
85+
アプリケーションをKubernetesクラスタの外部に公開するための他のオプションについては、後ほど[Module 4](/docs/tutorials/kubernetes-basics/expose/)で説明します。また、これは基本的なチュートリアルであるため、ここでは`Pods`とは何かについては詳しく説明しません。
86+
87+
`kubectl proxy`コマンドによって、通信をクラスタ全体のプライベートネットワークに転送するプロキシを作成することができます。プロキシはcontrol-Cキーを押すことで終了させることができ、実行中は何も出力されません。
88+
89+
**プロキシを実行するにはもう一つターミナルウィンドウを開く必要があります。**
90+
91+
```shell
92+
kubectl proxy
93+
```
94+
95+
ホスト(端末)とKubernetesクラスタ間の接続ができました。プロキシによって端末からAPIへの直接アクセスが可能となります。
96+
97+
プロキシエンドポイントを通してホストされている全てのAPIを確認することができます。例えば、`curl`コマンドを使って、APIを通じて直接バージョンを調べることができます:
98+
99+
```shell
100+
curl http://localhost:8001/version
101+
```
102+
103+
{{< note >}}
104+
ポート8001にアクセスできない場合は、上で起動した`kube proxy`がもう一つのターミナルで実行されていることを確認してください。
105+
{{< /note >}}
106+
107+
APIサーバーはPod名に基づいて各Pod用のエンドポイントを自動的に作成し、プロキシからもアクセスできるようにします。
108+
109+
まずPod名を取得する必要があるので、環境変数`POD_NAME`に格納しておきます。
110+
111+
```shell
112+
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
113+
echo Name of the Pod: $POD_NAME
114+
```
115+
116+
以下を実行することで、プロキシされたAPIを通してPodにアクセスすることができます。
117+
118+
```shell
119+
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8080/proxy/
120+
```
121+
122+
プロキシを使わずに新しいdeploymentにアクセスするには、[Module 4](/docs/tutorials/kubernetes-basics/expose/)で説明するServiceが必要となります。
123+
124+
## {{% heading "次のページ" %}}
125+
126+
* チュートリアル [Podとノードについて](/docs/tutorials/kubernetes-basics/explore/explore-intro/)
127+
* [Deployments](/docs/concepts/workloads/controllers/deployment/)について詳しく学ぶ

0 commit comments

Comments
 (0)