Как заставить службу Google Kubernetes Engine LoadBalancer получать внешний трафик при использовании облачного кода Google ItelliJ?

У меня есть рабочий кластер GKE, обслуживающий контент через порт 80. Как заставить службу балансировки нагрузки доставлять контент на внешний (зарезервированный региональный) статический IP-адрес 111.222.333.123?

я вижу это kubectl get serviceпоказывает, что внешний статический IP-адрес успешно зарегистрирован. Внешний IP-адрес действительно отвечает на запросы ping.

      NAME            TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP      10.16.0.1     <none>        443/TCP        17h
myapp-cluster   NodePort       10.16.5.168   <none>        80:30849/TCP   84m
myapp-service   LoadBalancer   10.16.9.255   111.222.333.123   80:30879/TCP   6m20s

Кроме того, консоль Google Cloud Platform показывает, что правило переадресации установлено и правильно ссылается на целевой пул GKE.

Манифест развертывания и обслуживания, который я использую, показан ниже:

      apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
      environment: sandbox
  template:
    metadata:
      labels:
        app: myapp
        environment: sandbox
    spec:
      containers:
        - name: myapp
          image: myapp
          imagePullPolicy: Always 
          ports:
            - containerPort: 8080
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
    environment: sandbox
  ports:
    - port: 80
      targetPort: 8080
  type: LoadBalancer
  loadBalancerIP: "111.222.333.123" 

Связанный файл конфигурации skaffold для справки:

      apiVersion: skaffold/v2beta18
kind: Config
metadata:
  name: myapp
build:
  artifacts:
  - image: myapp
    context: .
    docker: {}
deploy:
  kubectl:
    manifests:
    - gcloud_k8_staticip_deployment.yaml

Что мне не хватает, чтобы разрешить трафику достигать кластера GKE при запуске этой конфигурации с помощью Google Cloud Code?

Приносим извинения, если об этом спрашивали раньше. Рада взять указатель, если я пропустил правильное решение, рассматривая вопросы.

2 ответа

Я воспроизвел вашу настройку и столкнулся с той же проблемой, что и ваша (смог проверить IP-адрес службы, но не смог подключиться к нему из браузера).

Затем я изменил порт контейнера развертывания на 80, целевой порт службы на 80 и порт службы на 8080, и это сработало, затем я смог подключиться к развертыванию из браузера, используя IP-адрес службы.

Файл манифеста развертывания:

Файл манифеста службы:

Насколько я знаю, приведенная в этом вопросе конфигурация действительно должна работать, если изображение указывает на доступное место. Я подтвердил, что эта конфигурация работает с использованием игрушечной установки полностью без IDE, просто с использованием оболочки gcloud, и все работает хорошо.

Проблема возникает из-за того, что Google Cloud Code изменяет контекст kubectl без каких-либо дополнительных предупреждений, когда в конфигурации запуска настроен переключатель контекста.