2017-03-04 13 views
0

私はドメイン名www.domain.comが登録されていて、新しいkubernetesクラスターが稼働しています。私は正常に要求を公開するためにDeploymentsServicesを祝いました。Kubernetes Cluster APP DNS

私のGCEクラスタにLoadBalancerというサービスが作成されていて、外部IP経由で私のAPPにアクセスしようとすると、そのサービスが動作します。

しかし、これは私が理想的に実現したいものです。

ルートへwww.app.domain.comwww.app2.domain.comとしての私のアプリケーションのためのすべてのトラフィック。研究の結果、私はIngress Controller、好ましくはNGINXのサーバが必要であることが判明しました。私はこれを行い、悲惨に失敗しています。

これは私の展開にJSONを暴露するサービスです。

{ 
    "kind": "Service", 
    "apiVersion": "v1", 
    "metadata": { 
     "name": 'node-js-srv' 
    }, 

    "spec": { 
     "type": 'LoadBalancer', 
     "label": { 
      'app': 'node-js-srv' 
     }, 

     "ports": [ 
     { 
      "targetPort": 8080, 
      "protocol": "TCP", 
      "port": 80, 
      "name": "http" 
     }, 
     { 
      "protocol": "TCP", 
      "port": 443, 
      "name": "https", 
      "targetPort": 8080 
     } 
     ], 
     "selector": { 
      "app": 'node-js' 
     }, 
    } 
} 
+0

nginxのどの部分は働いていませんか?リバースプロキシはそれほど難しくありません。 –

+0

@ cricket_007 ngnixのlubeデプロイメントのyamlの外観はどのようになっているのか分かりませんでした。私は私の登録ドメインとして 'customdomain.com'を想定しています....そして、app.customdomain.comに私のアプリケーションの負荷バランスを持っている....私は本当にネットワーキングとdev ops全体に新しいです.... – kt14

+0

私はkubernetesに精通していない、ちょうどnginxの設定 –

答えて

0

GCE/GKEはすでにIngress Controllerを持っていて、その1を使用することができます。

{ 
    "kind": "Service", 
    "apiVersion": "v1", 
    "metadata": { 
     "name": 'node-js-srv' 
    }, 

    "spec": { 
     "type": 'NodePort', 
     "label": { 
      'app': 'node-js-srv' 
     }, 

     "ports": [ 
     { 
      "targetPort": 8080, 
      "protocol": "TCP", 
      "port": 80, 
      "name": "http" 
     }, 
     { 
      "protocol": "TCP", 
      "port": 443, 
      "name": "https", 
      "targetPort": 8080 
     } 
     ], 
     "selector": { 
      "app": 'node-js' 
     }, 
    } 
} 

イングレス:あなたがここにGCE https://github.com/kubernetes/ingress/tree/master/examples/deployment/gce

サービスの例を見つける https://kubernetes.io/docs/user-guide/ingress/

あなたはタイプNodePortとしてあなたのサービスを指定し、タイプIngress 参照からressourceを作成する必要があります:

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: test 
spec: 
    rules: 
    - host: www.app.domain.com 
    http: 
     paths: 
     - backend: 
      serviceName: node-js-srv 
      servicePort: 80 
    - host: www.app2.domain.com 
    http: 
     paths: 
     - backend: 
      serviceName: xyz 
      servicePort: 80 
+0

NodePortの要件は本当ですか? ingress-controllerを使用する場合、NodePortなしで動作するはずです。また、DNSをセットアップするためにより多くの作業が必要になる可能性があります。 DNSレコードは、GCE/GKEクラスタによって公開されているもの(ロードバランサIPまたはCNAME)を指し示す必要があります。しかし、Googleがこれをどのように解決したかわからない... –

+0

GCE/GKE NodePortが必要です。こちらをご覧くださいhttps://github.com/kubernetes/kubernetes/issues/26508。 – Sebastian

+0

Ingressを使用すると、DNSの管理が容易になります。入力はIPを持つロードバランサを作成し、ワイルドカードDNSエントリを作成することができます。 * .domain.com。その後、kubernetesはトラフィックを正しいサービス – Sebastian

関連する問題