1

Ich versuche herauszufinden, wie mehrere Ingress-Ressourcen erstellt werden, die eine IP teilen. Oder, wenn das nicht möglich ist, würde ich gerne wissen, ob es eine Art Weiterleitung Regel gibt, die ich in Verbindung mit einem Cloud DNS-Eintrag verwenden kann, der den gesamten Verkehr zu einer IP (die ich statisch machen kann) geht zu einem Kubernetes-Cluster.Einrichten mehrerer Eingänge, Dienste, Bereitstellungsressourcen und Cloud DNS

Im Wesentlichen möchte ich einen Ingress einrichten mit jedem Service, der eine oder mehr Subdomains und alle diese Ingresses enthält, um auf den gleichen Cluster zu zeigen. Gerade jetzt Ich bekomme eine andere ephemere IP mit jedem Eintritt. Kann ich eine Weiterleitung Regel erstellen, die den gesamten Verkehr auf eine statische IP verweist, zu einem Cluster gehen und dann vielleicht einen Platzhalter-DNS-Eintrag erstellen, der alle Subdomänen auf die statische IP verweist?

Hier ist ein Beispiel Config ähnlich dem, was ich verwende:

$ kubectl create -f api.yml 

Und dann sieht das Eindringen, das wie so erstellt wird:

apiVersion: v1 
kind: Service 
metadata: 
    name: api-service 
    labels: 
    name: api-service 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
     targetPort: 3000 
     protocol: TCP 
    selector: 
    name: api-deployment 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: api-deployment 
    labels: 
    name: api-deployment 
spec: 
    template: 
    metadata: 
     labels: 
     name: api 
    spec: 
     containers: 
     - image: us.gcr.io/[project]/hello-world:1.0.0 
      name: api 
      ports: 
      - containerPort: 3000 
      env: 
      - name: NAME 
       value: api 
--- 
apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: api-ingress 
spec: 
    backend: 
    serviceName: api-service 
    servicePort: 80 
    rules: 
    - host: api.example.com 
    http: 
     paths: 
     - backend: 
      serviceName: api-service 
      servicePort: 80 

ich diese Ressourcen auf einem kube Cluster wie so erstellen :

Nun, stellen Sie sich vor, Sie kopieren das YAML oben und ändern Sie den Service, Bereitstellung a nd Ingress Name zu api-2 und erstellen Sie diese. Sie würden mit etwas am Ende wie folgt:

$ kubectl get ing 
NAME    RULE    BACKEND   ADDRESS   AGE 
api-ingress  -    api-service:80 130.211.32.223 1h 
        api.example.com 
            api-service:80 
api-2-ingress  -    api-2-service:80 130.211.22.214 1h 
        api-2.example.com 
            api-2-service:80 

was in Ordnung ist ... Aber ich brauche den gesamten Datenverkehr zu gewährleisten * .example.com geht an den Cluster so die ingresses ihre Magie tun und Route die Anfragen nach rechts Dienstleistungen.

Ich weiß, ich könnte eine einzige Ingress-Ressource erstellt und Patch diese anstelle von erstellen eine neue, aber ich versuche, das zu vermeiden und würde es vorziehen, wenn ich eine pro Dienst erstellen kann.

Ist das irgendwie möglich?

Verwandte: https://github.com/kubernetes/kubernetes/issues/26935

+0

Wenn statische IP Ihr Problem löst, reservieren Sie einfach die Adresse für Ihr Projekt. https://cloud.google.com/sdk/gcloud/reference/compute/addresses/create –

+0

@VikramTiwari Sie meinen, nehmen Sie eine dieser ephemeren IPs von der Ingress verwendet, oder? Wenn das der Fall ist, werde ich weiterhin Ingresses hinzufügen, die unterschiedliche IPs haben, und diese werden nicht dem * .example.com Platzhalter-DNS-Record zugeordnet. Oder fehlt mir etwas? – luisgo

+0

Sobald Sie eine statische IP-Adresse haben, können Sie sie im Load Balancer für Ihren Cluster verwenden. Dadurch werden immer neue Ingresses generiert und zum Load Balancer hinzugefügt. http://stackoverflow.com/questions/32266053/how-to-specify-static-ip-address-for-kubernetes-load-balancer –

Antwort

1

Jedes Eindringen Ressource wird eine separate IP haben. Wenn Sie eine einzelne IP zwischen Domänen teilen müssen, müssen Sie beide Domänen in derselben Ingress-Ressource konfigurieren. Versuchen Sie kubectl edit, wenn Sie nicht direkt in der Befehlszeile patchen möchten.

+0

Yup. Das scheint der Fall zu sein. Ich verstehe. Was ich frage mich ist, ob es eine Möglichkeit gibt, oben auf diesem Setup hinzuzufügen, um die Begrenzung zu umgehen. Vielleicht eine Art Routing-Regel, die den gesamten Datenverkehr an eine statische IP an einen bestimmten Zielpool sendet. Auch wenn ich das außerhalb von Kubernetes und Straight Through Compute machen muss.Auf diese Weise kann ich einen Platzhalter-DNS-Eingangspunkt für die statische IP-Adresse und die Regel für die Weiterleitung an den Cluster haben. – luisgo

+1

Sie können einen Cloud-L3-Lastenausgleich für eine IP-Adresse konfigurieren und direkten Datenverkehr zu einem Pool von Nginx- oder Apache-Servern mit L7-Ausgleich veranlassen. –