3.2.5.2.18. OpenShift リソース
複合デプロイメントは、devfile で参照できる OpenShift リソース一覧を使用して記述できます。これにより、ワークスペースの一部になります。
- CodeReady Workspaces ワークスペースは内部的に単一のデプロイメントとして表されるため、OpenShift 一覧のすべてのリソースはその単一デプロイメントにマージされます。
- このようなリストを設計する場合は注意してください。これは名前競合やその他の問題が発生する可能性があるためです。
-
OpenShift オブジェクトのサブセットのみがサポートされます。
デプロイメント、Pod、サービス、永続ボリューム要求、シークレット、および ConfigMapKubernetes Ingress は無視されますが、OpenShift ルートがサポートされます。他のオブジェクトタイプを使用して devfile から作成されたワークスペースは起動できません。 - OpenShift クラスターで CodeReady Workspaces を実行する場合、OpenShift リストのみがサポートされます。OpenShift クラスターで CodeReady Workspaces を実行する場合、両方の OpenShift リストがサポートされます。
apiVersion: 1.0.0
metadata:
name: MyDevfile
projects:
- name: my-go-project
clonePath: go/src/github.com/acme/my-go-project
source:
type: git
location: https://github.com/acme/my-go-project.git
components:
- type: kubernetes
reference: ../relative/path/postgres.yaml
上記のコンポーネントは、devfile 自体の場所に関連するファイルを参照します。つまり、この devfile は、devfile の場所を指定する CodeReady Workspaces ファクトリーによってのみロードできるため、参照される OpenShift リソース一覧の場所を判別できます。
postgres.yaml ファイルの例を以下に示します。
apiVersion: v1
kind: List
items:
-
apiVersion: v1
kind: Deployment
metadata:
name: postgres
labels:
app: postgres
spec:
template:
metadata:
name: postgres
app:
name: postgres
spec:
containers:
- image: postgres
name: postgres
ports:
- name: postgres
containerPort: 5432
volumeMounts:
- name: pg-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: pg-storage
persistentVolumeClaim:
claimName: pg-storage
-
apiVersion: v1
kind: Service
metadata:
name: postgres
labels:
app: postgres
name: postgres
spec:
ports:
- port: 5432
targetPort: 5432
selector:
app: postgres
-
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pg-storage
labels:
app: postgres
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
関連付けられた OpenShift リストを含む devfile の基本例は、「 web-nodejs-with-db-sample on redhat- developer GitHub」を参照してください。
リソースのサブセットのみを必要とする汎用または大きなリソース一覧を使用している場合、セレクターを使用して特定のリソースを選択できます(通常の OpenShift セレクターと同様に、一覧内のリソースのラベルで機能します)。
apiVersion: 1.0.0
metadata:
name: MyDevfile
projects:
- name: my-go-project
clonePath: go/src/github.com/acme/my-go-project
source:
type: git
location: https://github.com/acme/my-go-project.git
components:
- type: kubernetes
reference: ../relative/path/postgres.yaml
selector:
app: postgres
さらに、リソース一覧に存在するコンテナーのエントリーポイント(コマンドおよび引数)を変更することもできます。高度なユースケースの詳細は、参考(TODO: link)を参照してください。