サイドカーコンテナパターン
5239 ワード
サイドカーコンテナは、コンテナを変えることなく既存の容器の機能を加えるか、強化することを目指します.initコンテナと比較して、以前に説明したように、アプリケーションコンテナとしてサイドカーコンテナが起動し、同時に実行されます.サイドカーは、ちょうどあなたがコンテナリストに持っている2番目のコンテナであり、起動順序は保証されません.
sidecarコンテナの最も人気のある実装の1つはおそらくistioサービスメッシュにある.サイドカーコンテナ(使節プロキシ)は、アプリケーションコンテナーの横に実行され、インバウンドとアウトバウンドのリクエストを遮断します.このシナリオでは、SideCarは既存のコンテナーに機能を追加し、演算子がトラフィックルーティング、失敗注入、およびその他の機能を行うことができます.
より単純な考えは、サイドカー容器を持っているかもしれません
この例を続けるとinitコンテナに使用されます.我々は定期的に更新を実行するサイドカーコンテナを作成することができます
これを試すには、フォークを確認してくださいoriginal Github repository そして、下のYAMLでフォークを使ってください.
前に言及していない別のフィールドは
上記のYAMLを
あなたが走るならば
私たちは別のターミナルウィンドウを開くことができますし、
追加
変更を加える
あなたは、より多くの変更を行うことができますたびに、ページが60秒以内に更新されます.あなたが実行してポッドを削除することができます
sidecarコンテナの最も人気のある実装の1つはおそらくistioサービスメッシュにある.サイドカーコンテナ(使節プロキシ)は、アプリケーションコンテナーの横に実行され、インバウンドとアウトバウンドのリクエストを遮断します.このシナリオでは、SideCarは既存のコンテナーに機能を追加し、演算子がトラフィックルーティング、失敗注入、およびその他の機能を行うことができます.
![Sidecar Pattern](https://s1.md5.ltd/image/33324b412f1e16cd5edfde351c3d7f60.png)
より単純な考えは、サイドカー容器を持っているかもしれません
log-collector
) アプリケーションコンテナーのログを収集して格納します.そのように、アプリケーション開発者として、ログを収集し、保存する心配する必要はありません.あなたは、サイドカーコンテナがそれらを集めることができて、更なる処理に彼らを送るか、彼らをアーカイブすることができる場所(容器の間で共有される)にログを書くだけである必要があります.この例を続けるとinitコンテナに使用されます.我々は定期的に更新を実行するサイドカーコンテナを作成することができます
git pull
とリポジトリを更新します.これを動作させるには、初期のクローンを行うためにinitコンテナを保存し、定期的に(60秒ごとに)サイドカーコンテナをチェックしてリポジトリの変更をプルします.これを試すには、フォークを確認してくださいoriginal Github repository そして、下のYAMLでフォークを使ってください.
apiVersion: v1
kind: Pod
metadata:
name: website
spec:
initContainers:
- name: clone-repo
image: alpine/git
command:
- git
- clone
- --progress
- https://github.com/peterj/simple-http-page.git
- /usr/share/nginx/html
volumeMounts:
- name: web
mountPath: "/usr/share/nginx/html"
containers:
- name: nginx
image: nginx
ports:
- name: http
containerPort: 80
volumeMounts:
- name: web
mountPath: "/usr/share/nginx/html"
- name: refresh
image: alpine/git
command:
- sh
- -c
- watch -n 60 git pull
workingDir: /usr/share/nginx/html
volumeMounts:
- name: web
mountPath: "/usr/share/nginx/html"
volumes:
- name: web
emptyDir: {}
容器を加えたrefresh
上のYAMLに.これはalpine/git
イメージ、initコンテナと同じイメージ、そしてwatch -n 60 git pull
コマンド.The
watch
command periodically executes a command. In our case, it executesgit pull
command and updates the local repository every 60 seconds.
前に言及していない別のフィールドは
workingDir
. このフィールドはコンテナの作業ディレクトリを設定します.我々はそれを設定している/usr/share/nginx/html
ここで我々は元々initコンテナを使うためにrepoをクローンしました.上記のYAMLを
sidecar-container.yaml
を使用してkubectl apply -f sidecar-container.yaml
.あなたが走るならば
kubectl get pods
initコンテナが実行されると、READY
コラムを見る2/2
. これらの数字は、このポッドが合計2つのコンテナを持っていることをあなたに伝えます.$ kubectl get po
NAME READY STATUS RESTARTS AGE
website 2/2 Running 0 3m39s
あなたがポートを前方にポッドにセットするならばkubectl port-forward pod/website 8000:80
コマンドをブラウザに開きますhttp://localhost:8000
, あなたは、以前と同じウェブページを見るでしょう.私たちは別のターミナルウィンドウを開くことができますし、
refresh
コンテナ内部website
pod$ kubectl logs website -c refresh -f
Every 60.0s: git pull
Already up to date.
The watch
コマンドが実行され、git pull
コマンドはAlready up to date
. を変えましょうindex.html
あなたがフォークした倉庫で.追加
<div>
要素と更新方法index.html
ファイルは以下のようになります:<html>
<head>
<title>Hello from Simple-http-page</title>
</head>
<body>
<h1>Welcome to simple-http-page</h1>
<div>Hello!</div>
</body>
</html>
次に、これをステージにして、master
枝.最も簡単な方法はGitthubのウェブページからです.開けるindex.html
Githubについてhttps://github.com/peterj/simple-http-page/blob/master/index.html
, しかし、あなたは私のユーザ名peterj
あなたのユーザ名または組織を使用して、repoをフォークして、鉛筆アイコンをクリックしてファイルを編集します.![Edit file on Github](https://s1.md5.ltd/image/12e2d7dbfb3620331d0d12d10505e08b.png)
変更を加える
index.html
ファイルをクリックし、コミット変更ボタンをクリックして枝にコミットします.次に、出力を見るrefresh
コンテナを参照してください.Every 60.0s: git pull
From https://github.com/peterj/simple-http-page
f804d4c..ad75286 master -> origin/master
Updating f804d4c..ad75286
Fast-forward
index.html | 1 +
1 file changed, 1 insertion(+)
上記の出力はリポジトリへの変更を示します.Gitは、更新されたファイルを共有ボリュームにプルします.最後に、あなたのブラウザをリフレッシュhttp://localhost:8000
ページの変更に気付きます.![Updated index.html page](https://s1.md5.ltd/image/c4b9508eea24d7a48ed74585ddc03a6e.png)
あなたは、より多くの変更を行うことができますたびに、ページが60秒以内に更新されます.あなたが実行してポッドを削除することができます
kubectl delete po website
.Reference
この問題について(サイドカーコンテナパターン), 我々は、より多くの情報をここで見つけました https://dev.to/peterj/sidecar-container-pattern-314テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol