英文:
App Gateway(AGIC) not pointing to service instead pointing to pods in the AKS
问题
以下是您要翻译的内容:
- 如果我们需要带有内部负载均衡器的服务,还是只需默认公开 ClusterIP 的服务。
- 目前,我的 .NET 应用程序正在公开端口 8080,而服务正在公开端口 8000。由于 AGIC 直接指向 Pods,服务和 Pods 是否应该公开相同的端口?
- 如果它将直接添加 Pod 的 IP,那么在自动扩展的情况下,它将如何工作,会在发生时添加/删除 Pods 的 IP?
这里是您的示例部署 YAML 文件:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sampleservice-deployment
labels:
app: sampleservice
spec:
replicas: 2
selector:
matchLabels:
app: sampleservice
template:
metadata:
labels:
app: sampleservice
spec:
containers:
- name: sampleapi
image: #{containerRepo}#/samplesvc:#{tag}#
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
resources:
requests:
cpu: #{hpa_samplesvc_requestedcpu}#
limits:
cpu: #{hpa_samplesvc_maxcpulimit}#
---
apiVersion: v1
kind: Service
metadata:
name: samplesvc
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
labels:
app: samplesvc
spec:
ports:
- name: http-port
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: sampleservice
type: LoadBalancer
---
apiVersion: autoscaling/v2
<not relevant>
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sampleingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: /sample-path
backend:
service:
name: samplesvc
port:
number: 8080
pathType: Exact
这些是您的翻译结果,没有包括代码部分。如果您有其他问题或需要进一步帮助,请随时提出。
英文:
I am trying out AGIC, Previously, we have APIM premium with services deployed in AKS with internal loadbalancer and APIM can communicate with it directly because of VNet integration. My current setup is I am have a deployment with two pods and a service with internal load balancer(I dont think its required) and an Ingress path for the service. I was assuming that when I deploy the yaml file it will create a backendpool in App gateway with the IP of the service instead the ingress created the IP of the pods and added two IP, obviously I have two pods. I wanted to know,
- If we need service with internal loadbalancer or just service with default exposure of clusterip.
- Currently, my dotnet application is exposing port 8080, and the service was exposing 8000. since AGIC is directly pointing to pods, the service and the pods should expose the same ports?
- if its going to add the pod's IP directly how it will work incase of autoscale it will add/remove the pods ip as and when it happens ?
I wasn going through app gateway documentation, I couldnt fetch much information from there.
sample deployment yaml file
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sampleservice-deployment
labels:
app: sampleservice
spec:
replicas: 2
selector:
matchLabels:
app: sampleservice
template:
metadata:
labels:
app: sampleservice
spec:
containers:
- name: sampleapi
image: #{containerRepo}#/samplesvc:#{tag}#
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
resources:
requests:
cpu: #{hpa_samplesvc_requestedcpu}#
limits:
cpu: #{hpa_samplesvc_maxcpulimit}#
---
apiVersion: v1
kind: Service
metadata:
name: samplesvc
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
labels:
app: samplesvc
spec:
ports:
- name: http-port
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: sampleservice
type: LoadBalancer
---
apiVersion: autoscaling/v2
<not relevant>
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sampleingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: /sample-path
backend:
service:
name: samplesvc
port:
number: 8080
pathType: Exact
here is deployment.yaml
答案1
得分: 0
- -> 只需具有默认的 clusterIP 暴露的服务
- -> 服务和 Pod 都应具有与在 Ingress YAML 文件中为各个路径配置的端口相同的端口
- -> 当部署扩展时,新的 Pod 启动并具有 IP 地址时,这些 IP 地址将直接添加到 AG 的后端池中。
基本上会有一个部署的 AGIC Pod,该 Pod 的主要目的是监视更改并反映回去。
更多信息:
Ingress 控制器在客户的 AKS 上运行在其自己的 Pod 中。AGIC 监视 Kubernetes 资源的子集以进行更改。AKS 集群的状态被转换为特定于 Application Gateway 的配置,并应用于 Azure 资源管理器 (ARM)。
英文:
To answer your questions directly:-
- -> Just have a service with default exposure of clusterIP
- -> Both the Service and Pods should have the same Port as it is being configured for individual paths in the ingress YAML file
- -> As and when your deployment scales when the new pods comes up with IPs, those IPs will be added directly to the Backend pools of AG.
Basically there will be a AGIC pod which gets deployed and the main purpose of that pod is to monitor the changes and reflect back
More information:
The Ingress Controller runs in its own pod on the customer’s AKS. AGIC monitors a subset of Kubernetes Resources for changes. The state of the AKS cluster is translated to Application Gateway specific configuration and applied to the Azure Resource Manager (ARM).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论