Начало работы с Istio (3): опыт Istio, развертывание микросервисов и наблюдаемость
Начало работы с Istio (3): опыт Istio, развертывание микросервисов и наблюдаемость

Этот урок был добавлен Istio 系列:https://istio.whuanle.cn

3. Быстрый старт

В этой главе мы официально приступаем к изучению Istio первый шаг. потому что Istio Система знаний относительно велика, поэтому мы можем быстро понять, как ее использовать,с помощью вводного руководства в этой главе. Istio развертыватьнабормикросервисы,а также Istio Узнайте, как использовать основные функции Istio Какие проблемы можно решить для микросервисов.

в этой главе,нас Волянаучусь, какразвертыватьнабормикросервисы、какиспользовать Istio Предоставление услуг за пределами кластера и способы использования компонентов наблюдения для мониторинга трафика и системных показателей.

В следующих главах автор объяснит каждый компонент Istio отдельно, но в этой главе нам нужно иметь только общее представление о том, как его использовать.

Микросервисы книжного магазина

В примерах учебников в этой главе используется официальный набор микросервисов Istio. Этот набор микросервисов представляет собой книжный интернет-магазин. Открыв страницу, вы увидите категорию, информацию о книге и обзоры книг. Содержимое страницы предоставлено разными компаниями. субуслуги.

Микросервисы книжного магазина разделены на четыре отдельные части, которые на рисунке выше нарисованы в красной рамке. Четыре микросервиса:

  • productpage: Соберите все данные Служитьиз и создайте страницу просмотра.
  • details:Книги хранятсяизинформация,как описано、автор、Издательство и др.
  • reviews:Книги хранятся相关из Комментарий,но Не включает рейтинговые звезды.
  • ratings:存储Комментарийсерединаиз Оцените и поставьте звезду。

В этом микросервисе страница продукта Услуги, предоставляемые извне Web Посетите страницу,А остальные три Служить доступны только внутри кластера.。четыре Служитьпринял разныеизразвитие языка,Productpage Объедините информацию из трех других служб для создания страницы.

При разработке микросервиса мы не хотим, чтобы каждый подсервис открывал свой порт за пределами кластера. Нам следует централизовать данные через некоторые приложения и отображать их снаружи. Мы можем использовать API Gateway для проксирования части интерфейса подсервиса, а затем реализовать аутентификацию на основе клиентских или сторонних вызовов в API Gateway.

Страница продукта, подробные сведения и рейтинги имеют только одну версию v1, а обзоры — три версии.

Рейтинги отвечают за предоставление данных о рейтинге пользователя, например одной звезды или двух звезд. Три версии обзоров выполняют следующую обработку данных рейтингов соответственно:

  • обзоры v1: блокировать звездный рейтинг и не отображать рейтинги;
  • обзоры v2: Показать звездный рейтинг,использовать представление серой звезды,★★★★☆;
  • обзоры v3: Показать звездный рейтинг,использовать красную звездочку указывает,★★★★☆;

[Источник изображения istio Официальный сайт

Граф зависимости сервисов выглядит следующим образом:

Далее мы будем использовать Kuubernetes Deployment развертывать Эти Служить,Это рутина Kubernetes развертыватьникакой разницы。

Подготовьтесь заранее

Создайте пространство имен для этих примеров служб.

Язык кода:javascript
копировать
kubectl create namespace bookinfo

Добавить в пространство имен Istio этикетки,инструкции Istio существоватьразвертыватьприложение(只对 Pod При вступлении в силу), автоматически вводить Envoy Sidecar Proxy контейнер:

Язык кода:javascript
копировать
kubectl label namespace bookinfo istio-injection=enabled

давать возможность Istio инъекция Sidecar Есть много способов, один из которых - установить метку для пространства имен, развернуть в этом пространстве имен. Pod, будет автоматически инъекция Sidecar 。

Вы можете узнать из этой серии руководств git 仓库середина找到Эти Пример,расположение файла:https://github.com/whuanle/istio_book/tree/main/3

Откройте склад после того, как вытащите его. 3 Каталог, выполните команду для развертывания:

Язык кода:javascript
копировать
kubectl -n bookinfo apply -f details_deploy.yaml
kubectl -n bookinfo apply -f details_svc.yaml
kubectl -n bookinfo apply -f details_sa.yaml
kubectl -n bookinfo apply -f ratings_deploy.yaml
kubectl -n bookinfo apply -f ratings_svc.yaml
kubectl -n bookinfo apply -f ratings_sa.yaml
kubectl -n bookinfo apply -f reviews_v1_deploy.yaml
kubectl -n bookinfo apply -f reviews_v2_deploy.yaml
kubectl -n bookinfo apply -f reviews_v3_deploy.yaml
kubectl -n bookinfo apply -f reviews_svc.yaml
kubectl -n bookinfo apply -f reviews_sa.yaml
kubectl -n bookinfo apply -f productpage_deploy.yaml
kubectl -n bookinfo apply -f productpage_svc.yaml
kubectl -n bookinfo apply -f productpage_sa.yaml

Или вы можете обратиться к четырем подразделам ниже, приведенным в руководстве по развертыванию приложения, чтобы понять, как определяется каждое приложение.

подробное заявление

Приложение, хранящее информацию о книгах.

развертывать Заказ:

Язык кода:javascript
копировать
kubectl -n bookinfo apply -f details_deploy.yaml
kubectl -n bookinfo apply -f details_svc.yaml
kubectl -n bookinfo apply -f details_sa.yaml

использовать Deployment развертывать подробное заявление。

details_deploy.yaml

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: details-v1
  labels:
    app: details
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: details
      version: v1
  template:
    metadata:
      labels:
        app: details
        version: v1
    spec:
      serviceAccountName: bookinfo-details
      containers:
      - name: details
        image: docker.io/istio/examples-bookinfo-details-v1:1.17.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
        securityContext:
          runAsUser: 1000

развертывать details。

Язык кода:javascript
копировать
kubectl -n bookinfo apply -f details_deploy.yaml

Настройте службу Kubernetes для службы сведений.

details_svc.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: Service
metadata:
  name: details
  labels:
    app: details
    service: details
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: details
Язык кода:javascript
копировать
kubectl -n bookinfo apply -f details_svc.yaml

Затем создайте ServiceAccount для службы подробностей.

Istio Обеспечивает связь между сервисами на основе двусторонней TLS сертификат, который выдается каждому ServiceAccount создательсертификат реализует из, может использовать ServiceAccount Подтверждайте личность друг друга, разные приложения могут использовать один и тот же ServiceAccount,но для каждого Deployment использоватьодиниз ServiceAccount Конфигурации безопасности можно лучше организовать и управлять ими.

details_sa.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-details
  labels:
    account: details
Язык кода:javascript
копировать
kubectl -n bookinfo apply -f details_sa.yaml
приложение для рейтингов

Предоставьте данные о звездном рейтинге для каждого отзыва.

развертывать Заказ:

Язык кода:javascript
копировать
kubectl -n bookinfo apply -f ratings_deploy.yaml
kubectl -n bookinfo apply -f ratings_svc.yaml
kubectl -n bookinfo apply -f ratings_sa.yaml

ratings_deploy.yaml

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ratings-v1
  labels:
    app: ratings
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ratings
      version: v1
  template:
    metadata:
      labels:
        app: ratings
        version: v1
    spec:
      serviceAccountName: bookinfo-ratings
      containers:
      - name: ratings
        image: docker.io/istio/examples-bookinfo-ratings-v1:1.17.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
        securityContext:
          runAsUser: 1000

ratings_svc.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: Service
metadata:
  name: ratings
  labels:
    app: ratings
    service: ratings
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: ratings

ratings_sa.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-ratings
  labels:
    account: ratings
обзоры приложений v1/v2/v3

Предоставьте обзорную информацию о книгах.

развертывать Заказ:

Язык кода:javascript
копировать
kubectl -n bookinfo apply -f reviews_v1_deploy.yaml
kubectl -n bookinfo apply -f reviews_v2_deploy.yaml
kubectl -n bookinfo apply -f reviews_v3_deploy.yaml
kubectl -n bookinfo apply -f reviews_svc.yaml
kubectl -n bookinfo apply -f reviews_sa.yaml

Создайте три развертывания для трех версий отзывов.

reviews_v1_deploy.yaml

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v1
  labels:
    app: reviews
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      version: v1
  template:
    metadata:
      labels:
        app: reviews
        version: v1
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: docker.io/istio/examples-bookinfo-reviews-v1:1.17.0
        imagePullPolicy: IfNotPresent
        env:
        - name: LOG_DIR
          value: "/tmp/logs"
        ports:
        - containerPort: 9080
        volumeMounts:
        - name: tmp
          mountPath: /tmp
        - name: wlp-output
          mountPath: /opt/ibm/wlp/output
        securityContext:
          runAsUser: 1000
      volumes:
      - name: wlp-output
        emptyDir: {}
      - name: tmp
        emptyDir: {}

reviews_v2_deploy.yaml

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v2
  labels:
    app: reviews
    version: v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      version: v2
  template:
    metadata:
      labels:
        app: reviews
        version: v2
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: docker.io/istio/examples-bookinfo-reviews-v2:1.17.0
        imagePullPolicy: IfNotPresent
        env:
        - name: LOG_DIR
          value: "/tmp/logs"
        ports:
        - containerPort: 9080
        volumeMounts:
        - name: tmp
          mountPath: /tmp
        - name: wlp-output
          mountPath: /opt/ibm/wlp/output
        securityContext:
          runAsUser: 1000
      volumes:
      - name: wlp-output
        emptyDir: {}
      - name: tmp
        emptyDir: {}

reviews_v3_deploy.yaml

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v3
  labels:
    app: reviews
    version: v3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      version: v3
  template:
    metadata:
      labels:
        app: reviews
        version: v3
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: docker.io/istio/examples-bookinfo-reviews-v3:1.17.0
        imagePullPolicy: IfNotPresent
        env:
        - name: LOG_DIR
          value: "/tmp/logs"
        ports:
        - containerPort: 9080
        volumeMounts:
        - name: tmp
          mountPath: /tmp
        - name: wlp-output
          mountPath: /opt/ibm/wlp/output
        securityContext:
          runAsUser: 1000
      volumes:
      - name: wlp-output
        emptyDir: {}
      - name: tmp
        emptyDir: {}

Создайте службу для трех развертываний. Три разные версии одного и того же приложения используют одну и ту же службу.

reviews_svc.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: Service
metadata:
  name: reviews
  labels:
    app: reviews
    service: reviews
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: reviews

reviews_sa.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-reviews
  labels:
    account: reviews
приложение на странице продукта

Служба агрегирования страниц, позволяющая пользователям просматривать информацию о книге.

развертывать Заказ:

Язык кода:javascript
копировать
kubectl -n bookinfo apply -f productpage_deploy.yaml
kubectl -n bookinfo apply -f productpage_svc.yaml
kubectl -n bookinfo apply -f productpage_sa.yaml

productpage_deploy.yaml

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: productpage-v1
  labels:
    app: productpage
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: productpage
      version: v1
  template:
    metadata:
      labels:
        app: productpage
        version: v1
    spec:
      serviceAccountName: bookinfo-productpage
      containers:
      - name: productpage
        image: docker.io/istio/examples-bookinfo-productpage-v1:1.17.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
        volumeMounts:
        - name: tmp
          mountPath: /tmp
        securityContext:
          runAsUser: 1000
      volumes:
      - name: tmp
        emptyDir: {}

productpage_svc.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: Service
metadata:
  name: productpage
  labels:
    app: productpage
    service: productpage
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: productpage

productpage_sa.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-productpage
  labels:
    account: productpage

исследовать

После выполнения команды просмотрите модули в пространстве имен bookinfo.

Язык кода:javascript
копировать
kubectl get pods -n bookinfo

Как видно, каждый Pod из READY Все атрибуты есть 2/2 , что означает, что Pod В каталоге есть два контейнера, и два контейнера в настоящее время готовы.

Если мы посмотрим на один из Pod из структуры композиции вы обнаружите, что существуют Pod был запихнут в istio-proxy контейнер.

если Kubernetes не установлен в Dashbooard , то вы можете использовать kubectl -n bookinfo describe pod {Pod ID} Посмотреть структуру композиции.

затемиспользовать kubectl -n bookinfo get svc Проверять Сервис, зарегистрировано четыре микросервиса Service。

Затем мы посещаем productpage Переписка CLUSTER-IP:

Язык кода:javascript
копировать
curl 10.233.37.130:9080

по умолчанию Istio Режим двусторонней аутентификации с нулевым доверием включен не будет, поэтому вы сможете получить доступ к приложению самостоятельно внутри кластера. mTLS Режим двусторонней аутентификации, вы можете только Pod Посетите приложение в.

Вы можете видеть, что куча html,说明насизразвертыватьэто нормальноиз。

временный доступ

затемдля Понятно Проверять Эффект страницы,нассуществовать暂未использовать Istio-ingressgateway Прежде чем временно создать Service незащищенный productpage изстраница。

productpage_tmpsvc.yaml

Язык кода:javascript
копировать
apiVersion: v1
kind: Service
metadata:
  name: productpagetmp
  labels:
    app: productpage
    service: productpage
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: productpage
  type: NodePort
Язык кода:javascript
копировать
kubectl -n bookinfo apply -f  productpage_tmpsvc.yaml

Проверятьвсе Service:

Язык кода:javascript
копировать
root@k8smain:/data/learn/book# kubectl -n bookinfo get svc
NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
details          ClusterIP   10.233.63.247   <none>        9080/TCP         40m
productpage      ClusterIP   10.233.37.130   <none>        9080/TCP         23m
productpagetmp   NodePort    10.233.47.14    <none>        9080:30258/TCP   77s
ratings          ClusterIP   10.233.7.6      <none>        9080/TCP         36m
reviews          ClusterIP   10.233.58.219   <none>        9080/TCP         23m

Затем зайдите на страницу 30258 порт (Все люди разные, следуйте своим правилам).

Затем откройте http://192.168.3.150:30258/productpage?u=normal

потому чтодлятекущийиспользовать Service обязательность Pod,Таким образом, балансировка нагрузки будет достигаться посредством опроса,Вы можете обновить несколько раз http://192.168.3.150:30258/productpage?u=normal,Вы обнаружите, что звездочки рейтинга с правой стороны изменились.

Istio по По умолчанию используется метод циклической балансировки нагрузки.

Правила отображения комментариев в правой части страницы: нет звезд => черные звезды => красные звезды.

Развертывание входящего шлюза

Что такое шлюз

Наконец пришел испытать Istio со временем в этом разделе мы Воля будем для productpage создавать Istio Шлюз обеспечивает доступ к внешней веб-странице.

В главе 2 мы уже развертывали istio-ingressgateway, этот компонент играет роль, аналогичную nginx、apisix из-за эффекта,Обеспечить внешний доступ к порту,Затем воля трафик перенаправляется во внутренний Служитьсередина.

но istio-ingressgateway Трафик не может быть перенаправлен непосредственно на Pod, он также требует некоторой настройки. мы хотим productpage создатель сайта,обязательность Перепискадоменное имя,этот样外部访问 istio-ingressgateway изпорт,istio-ingressgateway Только тогда вы знаете, кому перенаправить трафик. существовать Istio середина,Определите это отношение обязательности для ресурса под названием Gateway.

Это будет подробно объяснено в следующих главах, но общее понимание вы можете получить здесь.

Шлюз похож Nginx требует обязательности конфигурации доменного имени, когда вам нужен обратный прокси-сервер.

Развертывание шлюза

создать шлюз, обязательность входа в доменное имя.

ingress_gateway.yaml

Язык кода:javascript
копировать
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

hosts Указывает, что путь доступа открыт внешнему миру, можно обязательно наличие доменного имени, IP ждать。этот里использовать * , указывая, что любой доступ может войти в этот шлюз.

Язык кода:javascript
копировать
kubectl -n bookinfo apply -f ingress_gateway.yaml

Этот шаг похож на nginx из Конфигурация прослушивания:

Язык кода:javascript
копировать
server {
    listen      80;
    server_name example.org www.example.org;
    #...
}

Когда мы создаем Istio Gateway После этого isio-ingressgateway для Мы отслеживаем трафик и определяем, какому издоменному имени или порту принадлежит Istio Gateway 。

Развертывание виртуального сервиса

Что такое виртуальный сервис

Хотя создать Istio Шлюз, но мы не можем напрямую получить доступ к фронту развертываниямикросервисов через шлюз, нам также нужен создатель Istio VirtualService Воля Istio Gateway и Переписка Kubernetes Service обязательность вверх, и тогда трафик может официально поступать на Pod。

Обратите внимание, что трафик на самом деле не проходит через Service середина,но VirtualService нужно пройти Service Приходите и откройте для себя Pod。

Вот похожий nginx настроить обратный прокси,После настройки прослушивания,Также необходимо указать, на какой адрес привязан запрос Воля.

Язык кода:javascript
копировать
server {
    listen      80;
    server_name example.org www.example.org;
    #...
}

location /some/path/ {
    proxy_pass http://A:9080;
}

для Что не директ Воля Gateway и Service обязательность, но добавьте VirtualService Шерстяная ткань? Есть поговорка, что все проблемы в компьютерной сфере могут быть решены. пройти Добавить слой для решения.

Основная цель VirtualService — предоставить стабильный входной адрес и контролировать поток трафика внутри сети путем настройки ряда правил маршрутизации.

В качестве примера рассмотрим простейшую конфигурацию маршрута: Kubernetes. Service Правила маршрутизации не поддерживаются, и Istio Вы можете указать суффикс маршрута; Анализ трафика не поддерживается, а балансировка нагрузки включает только опрос. и Istio использовать Service Приходите и откройте для себя Pod, а затем напрямую перенаправить трафик на Pod , могут быть реализованы различные функции.

VirtualService можно использовать для реализации следующих функций:

Маршрутизация запросов: запросы Воля направляются на конкретную из Служить или версию.,Например Воля просит раздачу на разные версии и з Служить,Чтобы добиться выпуска оттенков серого или канареечного выпуска.

Повтор запроса: в случае сбоя из-за политики повтора конфигурации запроса для улучшения доступности Служитьиз.

Тайм-аут запроса: установите тайм-аут запроса, чтобы прервать запрос, если ответ не получен в течение определенного времени.

Запросить зеркало: Воля просит отправить копию из другому Служить,Для тестирования новых версий из Служить,Не влияя на фактический производственный поток.

Сегментация трафика: трафик Воли распределяется по различным источникам или версиям в соответствии с конкретными пропорциями для достижения контроля трафика.

Развертывание виртуального сервиса

productpage_vs.yaml

Язык кода:javascript
копировать
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080
Язык кода:javascript
копировать
kubectl -n bookinfo apply -f productpage_vs.yaml

о VistualService Различные конфигурации и функции в 4.1 Оно будет представлено в этой главе.

здесь из YAML Разделена на две части, первая часть http.match,выражатьнезащищенный Понятно哪些 API Адреса, доступ к этим адресам возможен только при внешнем доступе.

может пройти http.match Ограничить доступ к этому адресу извне кластераиспользоватьиз URL。

тогда пройди http.route обязательность Kubernetes Service ,проходить Service серединаиз Служить Обнаружить,Воля Трафик перенаправляется на Переписка Pod середина.

host Здесь из-за VirtualService и Service/Pod в том же пространстве имен, поэтому просто настройте Service достаточно имени. Если вы хотите получить доступ к различным пространствам имен, вам необходимо добавить полное имя пространства имен.

Что такое правило назначения

В этой главе мы предоставим предварительное уведомление DestinationRule, следующая глава будет использоваться DestinationRule, здесь мы знаем, что есть еще DestinationRule Этого достаточно.

Istio VistualService Вы можете ограничить внешний доступ к адресу маршрутизации и DestinationRule Вы можете настроить доступ из Pod Стратегия. может быть Istio VistualService обязательность一个 Istio DestinationRule,проходить DestinationRule Мы также можем определить подмножества версий и т. д., чтобы обогатить политику пересылки трафика.

Поскольку адресов всего пять, внешний прямой доступ / , страница не может быть открыта.

исследовать

Чтобы убедиться, что со шлюзом нет проблем, нам нужно выполнить Istio Заказ Проверятьбревно:

Язык кода:javascript
копировать
istioctl analyze

Тогда наша страница проверки для продукта создаст шлюз.

Язык кода:javascript
копировать
root@k8smain:/data/learn/book# kubectl get gw -A
NAMESPACE   NAME               AGE
bookinfo    bookinfo-gateway   26m

Kubernetes Есть также один Шлюз, поэтому нельзя использовать kubectl get gateway получить Istio из Шлюз, но аббревиатура использовать gw

Затем Проверять VistualService。

Язык кода:javascript
копировать
root@k8smain:/data/learn/book# kubectl get vs -A
NAMESPACE   NAME       GATEWAYS               HOSTS   AGE
bookinfo    bookinfo   ["bookinfo-gateway"]   ["*"]   79m

В главе 2 мы проходим Helm развертывать Понятно istio-ingressgateway, его порт доступа следующий:

существовать本节развертывать bookinfo-gateway из времени мы используем порт 80, поэтому дополнительная настройка не требуется. , непосредственно через istio-ingressgateway из 32309 Просто войдите в порт.

Вы должны принести его при посещении /productpage , ведь мы не отпускали /

Попробуйте изменить порт шлюза

еслинужно заменить порт,Можно изменить istio-ingressgateway из службы.,Добавлено новое отображение экспорта.

Язык кода:javascript
копировать
kubectl edit svc istio-ingressgateway -n istio-system  

Затем измените переднюю часть ingress_gateway.yaml,Воляпорт из 80 Изменить на 666 。

Доступ к этому микросервису можно получить через порт 32666.

Пример:http://192.168.3.150:30666/productpage

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose