Skip to content

Commit 8f987df

Browse files
authored
Merge pull request #23039 from shuuji3/tasks/administer-cluster/declare-network-policy
Translate tasks/administer-cluster/declare-network-policy into Japanese
2 parents 9c585bc + 9bd9d44 commit 8f987df

File tree

2 files changed

+157
-0
lines changed

2 files changed

+157
-0
lines changed
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
title: ネットワークポリシーを宣言する
3+
min-kubernetes-server-version: v1.8
4+
content_type: task
5+
---
6+
7+
<!-- overview -->
8+
このドキュメントでは、Pod同士の通信を制御するネットワークポリシーを定義するための、Kubernetesの[NetworkPolicy API](/docs/concepts/services-networking/network-policies/)を使い始める手助けをします。
9+
10+
## {{% heading "prerequisites" %}}
11+
12+
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
13+
14+
ネットワークポリシーをサポートしているネットワークプロバイダーが設定済みであることを確認してください。さまざまなネットワークプロバイダーがNetworkPolicyをサポートしています。次に挙げるのは一例です。
15+
16+
* [Calico](/docs/tasks/administer-cluster/network-policy-provider/calico-network-policy/)
17+
* [Cilium](/docs/tasks/administer-cluster/network-policy-provider/cilium-network-policy/)
18+
* [Kube-router](/docs/tasks/administer-cluster/network-policy-provider/kube-router-network-policy/)
19+
* [Romana](/docs/tasks/administer-cluster/network-policy-provider/romana-network-policy/)
20+
* [Weave Net](/docs/tasks/administer-cluster/network-policy-provider/weave-network-policy/)
21+
22+
{{< note >}}
23+
上記のリストは製品名のアルファベット順にソートされていて、推奨順や好ましい順にソートされているわけではありません。このページの例は、Kubernetesクラスターでこれらのどのプロバイダーを使用していても有効です。
24+
{{< /note >}}
25+
26+
27+
<!-- steps -->
28+
29+
## `nginx` Deploymentを作成してService経由で公開する
30+
31+
Kubernetesのネットワークポリシーの仕組みを理解するために、まずは`nginx` Deploymentを作成することから始めましょう。
32+
33+
```console
34+
kubectl create deployment nginx --image=nginx
35+
```
36+
```none
37+
deployment.apps/nginx created
38+
```
39+
40+
`nginx`という名前のService経由でDeploymentを公開します。
41+
42+
```console
43+
kubectl expose deployment nginx --port=80
44+
```
45+
46+
```none
47+
service/nginx exposed
48+
```
49+
50+
上記のコマンドを実行すると、nginx Podを持つDeploymentが作成され、そのDeploymentが`nginx`という名前のService経由で公開されます。`nginx`のPodおよびDeploymentは`default`名前空間の中にあります。
51+
52+
```console
53+
kubectl get svc,pod
54+
```
55+
56+
```none
57+
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
58+
service/kubernetes 10.100.0.1 <none> 443/TCP 46m
59+
service/nginx 10.100.0.16 <none> 80/TCP 33s
60+
61+
NAME READY STATUS RESTARTS AGE
62+
pod/nginx-701339712-e0qfq 1/1 Running 0 35s
63+
```
64+
65+
## もう1つのPodからアクセスしてServiceを検証する
66+
67+
これで、新しい`nginx`サービスに他のPodからアクセスできるようになったはずです。`default`名前空間内の他のPodから`nginx` Serviceにアクセスするために、busyboxコンテナを起動します。
68+
69+
```console
70+
kubectl run busybox --rm -ti --image=busybox -- /bin/sh
71+
```
72+
73+
シェルの中で、次のコマンドを実行します。
74+
75+
```shell
76+
wget --spider --timeout=1 nginx
77+
```
78+
79+
```none
80+
Connecting to nginx (10.100.0.16:80)
81+
remote file exists
82+
```
83+
84+
## `nginx` Serviceへのアクセスを制限する
85+
86+
`nginx` Serviceへのアクセスを制限するために、`access: true`というラベルが付いたPodだけがクエリできるようにします。次の内容でNetworkPolicyオブジェクトを作成してください。
87+
88+
{{< codenew file="service/networking/nginx-policy.yaml" >}}
89+
90+
NetworkPolicyオブジェクトの名前は、有効な[DNSサブドメイン名](/ja/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)でなければなりません。
91+
92+
{{< note >}}
93+
このNetworkPolicyには、ポリシーを適用するPodのグループを選択するための`podSelector`が含まれています。このポリシーは、ラベル`app=nginx`の付いたPodを選択していることがわかります。このラベルは、`nginx` Deployment内のPodに自動的に追加されたものです。空の`podSelector`は、その名前空間内のすべてのPodを選択します。
94+
{{< /note >}}
95+
96+
## Serviceにポリシーを割り当てる
97+
98+
kubectlを使って、上記の`nginx-policy.yaml`ファイルからNetworkPolicyを作成します。
99+
100+
```console
101+
kubectl apply -f https://k8s.io/examples/service/networking/nginx-policy.yaml
102+
```
103+
104+
```none
105+
networkpolicy.networking.k8s.io/access-nginx created
106+
```
107+
108+
## accessラベルが定義されていない状態でServiceへのアクセスをテストする
109+
110+
`nginx` Serviceに正しいラベルが付いていないPodからアクセスを試してみると、リクエストがタイムアウトします。
111+
112+
```console
113+
kubectl run busybox --rm -ti --image=busybox -- /bin/sh
114+
```
115+
116+
シェルの中で、次のコマンドを実行します。
117+
118+
```shell
119+
wget --spider --timeout=1 nginx
120+
```
121+
122+
```none
123+
Connecting to nginx (10.100.0.16:80)
124+
wget: download timed out
125+
```
126+
127+
## accessラベルを定義して再テストする
128+
129+
正しいラベルが付いたPodを作成すると、リクエストが許可されるようになるのがわかります。
130+
131+
```console
132+
kubectl run busybox --rm -ti --labels="access=true" --image=busybox -- /bin/sh
133+
```
134+
135+
シェルの中で、次のコマンドを実行します。
136+
137+
```shell
138+
wget --spider --timeout=1 nginx
139+
```
140+
141+
```none
142+
Connecting to nginx (10.100.0.16:80)
143+
remote file exists
144+
```
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: NetworkPolicy
3+
metadata:
4+
name: access-nginx
5+
spec:
6+
podSelector:
7+
matchLabels:
8+
app: nginx
9+
ingress:
10+
- from:
11+
- podSelector:
12+
matchLabels:
13+
access: "true"

0 commit comments

Comments
 (0)