2つのアプリケーションがあります -アプリ1そしてアプリ2、 どこアプリ1は、config server
設定を保持するアプリ2/readiness
エンドポイントを定義しましたアプリ1OK
ポッドを起動するにはステータスが返されるまで待つ必要がありますアプリ2。
の導入は非常に重要ですアプリ2からkubernetes
受け取るまで待つHttp Status OK
/準備エンドポイントアプリ1これは構成サーバーであり、app2 の重要な構成を保持します。
このようなデプロイメント依存関係を実現することは可能ですか?
ベストアンサー1
使用できますinitContainers
YAML
以下はファイル内で実行する方法の例です
initContainers:
- name: wait-for-other-pod
image: docker.some.image
args:
- /bin/sh
- -c
- >
set -x;
while [ $(curl -sw '%{http_code}' "http://www.<your_pod_health_check_end_point>.com" -o /dev/null) -ne 200 ]; do
sleep 15;
done
curl
ヘルスチェックエンドポイントにアクセスするために使用しましたが、他のポッドの準備ができているかどうかを確認するには、他の UNIX コマンドを使用できます。
k8sリソースに依存している場合は、以下を利用できます。スタックアネット/kubernetes-エントリポイント例:
initContainers:
- command:
- kubernetes-entrypoint
name: init-dependency-check
env:
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: DEPENDENCY_SERVICE
- name: DEPENDENCY_DAEMONSET
- name: DEPENDENCY_CONTAINER
- name: DEPENDENCY_POD_JSON
value: '[{"labels":{"app.kubernetes.io/name":"postgres"}}]'
- name: COMMAND
value: echo done
image: projects.registry.vmware.com/tcx/snapshot/stackanetes/kubernetes-entrypoint:latest
securityContext:
privileged: true
runAsUser: 0
上記の例では、initContainer のポッドは、init-dependency-check
ラベルの付いたポッドが実行状態になるまで待機します。同様に、、、"app.kubernetes.io/name":"postgres"
を利用することもできます。DEPENDENCY_SERVICE
DEPENDENCY_DAEMONSET
DEPENDENCY_CONTAINER