2016-09-01 5 views
0

OpenShift Originにカスタムプロジェクトテンプレートを作成しようとしています。 Service構成は具体的には、以下のようになります。APPLICATION_PORTは、ユーザパラメータとして供給され、OpenShift JSONプロジェクトテンプレートでポートをパラメータ化する方法

{ 
    "kind": "Service", 
    "apiVersion": "v1", 
    "metadata": { 
    "name": "${NAME}", 
    "annotations": { 
     "description": "Exposes and load balances the node.js application pods" 
    } 
    }, 
    "spec": { 
    "ports": [ 
     { 
     "name": "web", 
     "port": "${APPLICATION_PORT}", 
     "targetPort": "${APPLICATION_PORT}", 
     "protocol": "TCP" 
     } 
    ], 
    "selector": { 
     "name": "${NAME}" 
    } 
    } 
}, 

"parameters": [ 
    { 
    "name": "APPLICATION_PORT", 
    "displayName": "Application Port", 
    "description": "The exposed port that will route to the node.js application", 
    "value": "8000" 
    }, 

私はプロジェクトを作成するには、このテンプレートを使用しようとすると、私は次のエラーを取得します:

spec.ports[0].targetPort: Invalid value: "8000": must be an IANA_SVC_NAME (at most 15 characters, matching regex [a-z0-9]([a-z0-9-]*[a-z0-9])*... 

私はでhttpポートに対してだけでなく、私のDeploymentConfigで同様のエラーを取得しますとreadinessプローブ:

"readinessProbe": { 
    "timeoutSeconds": 3, 
    "initialDelaySeconds": 3, 
    "httpGet": { 
    "path": "/Info", 
    "port": "${APPLICATION_ADMIN_PORT}" 
    } 
}, 
"livenessProbe": { 
    "timeoutSeconds": 3, 
    "initialDelaySeconds": 30, 
    "httpGet": { 
    "path": "/Info", 
    "port": "${APPLICATION_ADMIN_PORT}" 
    } 
}, 

APPLICATION_ADMIN_PORTは、再度、ユーザが供給されます。

エラー:

spec.template.spec.containers[0].livenessProbe.httpGet.port: Invalid value: "8001": must be an IANA_SVC_NAME... 

spec.template.spec.containers[0].readinessProbe.httpGet.port: Invalid value: "8001": must be an IANA_SVC_NAME... 

私はテンプレートを理解するためにhttps://blog.openshift.com/part-2-creating-a-template-a-technical-walkthrough/を追ってきた、そしてそれは、残念ながら、ポートのいずれかの例はどこにでもパラメータ化されている必要はありません。

文字列は、ほとんどの場合、これらのポートの値として使用できないようです。それは事実ですか?これらの値をパラメータ化する正しい方法は何ですか? YAMLに切り替える必要がありますか?

バージョン

OpenShift Master: v1.1.6-3-g9c5694f

Kubernetes Master: v1.2.0-36-g4a3f9c5

編集1:私はYAML形式で同じ構成を試みたが、同じエラーを得ました。したがって、JSONYAMLではなく、問題です。

答えて

3

残念ながら非文字列フィールドの値をパラメータ化することはできません:https://docs.openshift.org/latest/dev_guide/templates.html#writing-parameters

は、のいずれかの文字列フィールドの代わりに 『$ {PARAMETER_NAME}」パラメータは、フォームに値を配置することで参照することができます』テンプレート。"

テンプレートKubernetesにupstreamedされる過程であり、この制限がアドレスされている: https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/templates.md

提案がkubernetesレポでのPR 25622と25293に実装されています。

編集:ここに記載されているよう テンプレートは、現在非文字列パラメータをサポートしています、ベンを対応するためのhttps://docs.openshift.org/latest/dev_guide/templates.html#writing-parameters

+0

感謝を!私はこの答えを受け入れています。 – kodeninja

+1

OpenShiftにOriginでのそのソリューションの使用状況を追跡する際に問題がありますか?将来の参照のためにここにリンクすると良いでしょう。 – Clayton

+0

こんにちは、この問題のアップデートはありますか? –

関連する問題