3.2.5.2.17. エンドポイント
すべてのタイプのコンポーネントは、Docker イメージが公開するエンドポイントを指定できます。CodeReady Workspaces クラスターが OpenShift Ingress または 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: dockerimage
image: golang
memoryLimit: 512Mi
mountSources: true
command: ['sleep', 'infinity']
env:
- name: GOPATH
value: $(CHE_PROJECTS_ROOT)/go
- name: GOCACHE
value: /tmp/go-cache
endpoints:
- name: web
port: 8080
attributes:
discoverable: false
public: true
protocol: http
- type: dockerimage
image: postgres
memoryLimit: 512Mi
env:
- name: POSTGRES_USER
value: user
- name: POSTGRES_PASSWORD
value: password
- name: POSTGRES_DB
value: database
endpoints:
- name: postgres
port: 5432
attributes:
discoverable: true
public: false
ここでは、2 つの Docker イメージがあり、1 つのエンドポイントを定義します。エンドポイントは、ワークスペース内や、一般に UI からアクセス可能なアクセス可能なポートです。各エンドポイントには名前とポートがあります。これは、コンテナー内で実行中の特定のサーバーがリッスンするポートです。エンドポイントに設定できる属性を以下に示します。
-
discoverable: エンドポイントが検出可能な場合、その名前をワークスペースコンテナー内のホスト名として使用してアクセスできることを意味します(OpenShift パリスでは、指定された名前でサービスが作成されます)。55 -
公開: エンドポイントはワークスペースの外部でもアクセスできます(このようなエンドポイントは CodeReady Workspaces ユーザーインターフェースからアクセスできます)。このようなエンドポイントは、常にポート80または443で公開されます(CodeReady Workspaces でtlsが有効かどうかによって異なります)。 -
protocol: パブリックエンドポイントの場合、プロトコルはエンドポイントアクセスの URL を構築する方法の UI へのヒントになります。通常の値はhttp、https、wssです。 Secure: アクセスを許可するために JWT ワークスペーストークンを必要とする JWT プロキシーの背後に配置するブール値(falseにデフォルト設定)。JWT プロキシーはサーバーと同じ Pod にデプロイされ、サーバーが127.0.0.1などのローカルループバックインターフェースでのみリッスンすることを前提とします。警告ローカルループバック以外のインターフェースをリッスンすると、対応する IP アドレスのクラスターネットワーク内で JWT 認証がなくてもアクセスできるため、セキュリティーリスクが発生します。
-
path: エンドポイントの URL。 -
unsecuredPaths:secure 属性がでないままにするエンドポイントパスのコンマ区切りリスト。trueに設定されている場合でもセキュア CookieAuthEnabled:trueに設定すると(デフォルトはfalse)、JWT ワークスペーストークンは自動的に取得され、リクエストが JWT プロキシーを通過できるようにワークスペース固有のクッキーに含まれます。警告この設定では、POST リクエストを使用するサーバーとともに使用されると、CSRF 攻撃が可能になる可能性があります。
コンポーネント内で新しいサーバーを起動すると、CodeReady Workspaces がこれを自動検出し、UI はこのポートを パブリック ポートとして自動的に公開します。これは、たとえば Web アプリケーションのデバッグに役立ちます。コンテナーで自動起動するサーバー(データベースサーバーなど)では、これは実行できません。このようなコンポーネントについては、エンドポイントを明示的に指定します。
kubernetes/openshift および chePlugin / cheEditor タイプ のエンドポイントを指定する例:
apiVersion: 1.0.0
metadata:
name: MyDevfile
components:
- type: cheEditor
alias: theia-editor
id: eclipse/che-theia/next
endpoints:
- name: 'theia-extra-endpoint'
port: 8880
attributes:
discoverable: true
public: true
- type: chePlugin
id: redhat/php/latest
memoryLimit: 1Gi
endpoints:
- name: 'php-endpoint'
port: 7777
- type: chePlugin
alias: theia-editor
id: eclipse/che-theia/next
endpoints:
- name: 'theia-extra-endpoint'
port: 8880
attributes:
discoverable: true
public: true
- type: openshift
alias: webapp
reference: webapp.yaml
endpoints:
- name: 'web'
port: 8080
attributes:
discoverable: false
public: true
protocol: http
- type: openshift
alias: mongo
reference: mongo-db.yaml
endpoints:
- name: 'mongo-db'
port: 27017
attributes:
discoverable: true
public: false