【Kubernetes】YAMLファイルの書き方(service) no.9
こんにちは。まゆみです。
Kubernetesについての記事をシリーズで書いています。
前回の記事でdeploymentオブジェクトを作る時のyamlファイルの書き方を紹介しました。
ただ、deploymentオブジェクトだけでは、外部からアプリケーションにアクセスできません。
外部からアクセスをしようとしたら、『service』オブジェクトも作る必要があります。
今回の記事では、service オブジェクトを作る時のyamlファイルの書き方を紹介しようと思います
では早速はじめて行きますね。
Kubernetesのドキュメント
Serviceオブジェクトを作るときのyamlファイルの書き方も、Kubernetesのドキュメントを参考にしながら書くと良いでしょう
そして基本的には、前回の記事で紹介したdeploymentオブジェクトのyamlファイルと似ています
Serviceオブジェクトのyamlファイルの概要
Service オブジェクトを作るためのyamlファイルを作る時、最終完成形は以下のような感じになります
引用元:Kubernetesドキュメント
前回の記事で、deploymentオブジェクトのためのyamlファイルの書き方を書かせてもらいましたが、前回の解説と似ているところは今回の記事では省略させていただきます。
kind
今回はServiceオブジェクトを作りたいので、
kind: Service
と書きます。
オブジェクト名の最初の文字を大文字ではじめてくださいね。(serviceではなく、Service)
metadata
どのPodをServiceオブジェクトでマネージするのかの特定のために、キーバリューペアーを書きます。
前回の記事で扱ったdeployment・podのyamlファイルに書いたPodのlabels(キーバリューペア)と同じものをServiceのselectorに書くことで、
『このServiceがある特定のpodをマネージしているのだ』
ということが分かります
ports
specの項目のなかにインデントしてportsを書きます
portsと複数形になっていることから分かるように、複数のportを書くことができます
複数のportを書く場合は - (ダッシュ)で、それぞれのportを区切ってください。
ではそのportsのなかに書く項目を下記に書いていきます
protocol
ディフォルトでは 'TCP'になっていますので、
ports:
- protocol: 'TCP'
と書きましょう
port
他のpodがもし、このServiceオブジェクトでマネージされているpodとコミュニケーションを取りたい場合のポート番号を書きます
targetPort
Containerに開けられたポート番号を書きます。
例えば、Nodeでアプリを作っているのなら下記の赤で囲んでいる部分に書かれている番号を書いてください。
type
Imperative なアプローチを使ってServiceオブジェクトを作った時
kubectl expose deployment <deployment名> --port=<ポート番号> --type=<タイプ>
でdeploymentオブジェクトを外部からアクセスできる状態にしました。(忘れた方はこちらを参考にどうぞ)
上記の--type=に書いていたものをyamlファイルにも記載します。
type: LoadBalancer
Serviceオブジェクトのためのyamlファイルの最終的な物は下のスクショのようになります。
YAMLファイルでは、インデントも重要な意味を持ちますので、インデントがされるべき場所でちゃんとされているかなどにも注意して書いてみてくださいね。
kubectl applyでファイルの内容を適用する
yamlファイルが書き終わりましたら、コマンドラインに
kubectl apply -f=<ファイル名.yaml>
と打って、Service オブジェクトを作りましょう
Serviceオブジェクトができ、実際アプリにアクセスしてみたいって方は、その方法をこちらに書いています。
まとめ
今回の記事はここで締めくくらせていただきます。
次回の記事では、Declarativeなアプローチによるイメージの更新方法について書いていこうと思います
Author And Source
この問題について(【Kubernetes】YAMLファイルの書き方(service) no.9), 我々は、より多くの情報をここで見つけました https://qiita.com/Mayumi_Pythonista/items/a249792da8ef4638e125著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .