3.5.5. odo deploy
odo を使用すると、CI/CD システムを使用してコンポーネントをデプロイする方法と同様に、コンポーネントをデプロイできます。まず、odo はコンテナーイメージをビルドしてから、コンポーネントのデプロイに必要な Kubernetes リソースをデプロイします。
コマンド odo deploy を実行すると、odo は devfile で kind deploy のデフォルトコマンドを検索し、以下のコマンドを実行します。このタイプの deploy は、バージョン 2.2.0 以降の devfile 形式でサポートされます。
deploy コマンドは通常、いくつかの 適用 コマンドで設定される 複合 コマンドです。
-
適用されると、デプロイするコンテナーのイメージを構築し、それをレジストリーにプッシュする
imageコンポーネントを参照するコマンド。 - Kubernetes コンポーネント を参照するコマンドは、適用されるとクラスターに Kubernetes リソースを作成します。
以下の devfile.yaml ファイルのサンプルでは、コンテナーイメージはディレクトリーにある Dockerfile を使用してビルドされます。イメージはレジストリーにプッシュされ、この新規にビルドされたイメージを使用して Kubernetes Deployment リソースがクラスターに作成されます。
schemaVersion: 2.2.0
[...]
variables:
CONTAINER_IMAGE: quay.io/phmartin/myimage
commands:
- id: build-image
apply:
component: outerloop-build
- id: deployk8s
apply:
component: outerloop-deploy
- id: deploy
composite:
commands:
- build-image
- deployk8s
group:
kind: deploy
isDefault: true
components:
- name: outerloop-build
image:
imageName: "{{CONTAINER_IMAGE}}"
dockerfile:
uri: ./Dockerfile
buildContext: ${PROJECTS_ROOT}
- name: outerloop-deploy
kubernetes:
inlined: |
kind: Deployment
apiVersion: apps/v1
metadata:
name: my-component
spec:
replicas: 1
selector:
matchLabels:
app: node-app
template:
metadata:
labels:
app: node-app
spec:
containers:
- name: main
image: {{CONTAINER_IMAGE}}