Skip to content

Commit e2ad6ce

Browse files
committed
Add documentation for OSM and AGIC ingress
Signed-off-by: nshankar13 <[email protected]>
1 parent 55665a9 commit e2ad6ce

File tree

1 file changed

+122
-2
lines changed

1 file changed

+122
-2
lines changed

articles/aks/open-service-mesh-integrations.md

Lines changed: 122 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,129 @@ The Open Service Mesh (OSM) add-on integrates with features provided by Azure as
1515
1616
## Ingress
1717

18-
Ingress allows for traffic external to the mesh to be routed to services within the mesh. With OSM, you can configure most ingress solutions to work with your mesh, but OSM works best with [Web Application Routing][web-app-routing], [NGINX ingress][osm-nginx], or [Contour ingress][osm-contour]. Open source projects integrating with OSM, including NGINX ingress and Contour ingress, aren't covered by the [AKS support policy][aks-support-policy].
18+
Ingress allows for traffic external to the mesh to be routed to services within the mesh. With OSM, you can configure most ingress solutions to work with your mesh, but OSM works best with [Web Application Routing][web-app-routing], [NGINX ingress][osm-nginx], or [Contour ingress][osm-contour]. Open source projects integrating with OSM are not covered by the [AKS support policy][aks-support-policy].
1919

20-
Using [Azure Gateway Ingress Controller (AGIC)][agic] for ingress with OSM isn't supported and not recommended.
20+
At this time, [Azure Gateway Ingress Controller (AGIC)][agic] only works for HTTP backends. If you configure OSM to use AGIC, AGIC will not be used for other backends such as HTTPS and mTLS.
21+
22+
### Using the Azure Gateway Ingress Controller (AGIC) with the OSM add-on for HTTP ingress
23+
24+
> [!IMPORTANT]
25+
> You can't configure [Azure Gateway Ingress Controller (AGIC)][agic] for HTTPS ingress.
26+
27+
After installing the AGIC ingress controller, create a namespace for the application service, add it to the mesh using the OSM CLI, and deploy the application service to that namespace:
28+
29+
```console
30+
# Create a namespace
31+
kubectl create ns httpbin
32+
33+
# Add the namespace to the mesh
34+
osm namespace add httpbin
35+
36+
# Deploy the application
37+
38+
export RELEASE_BRANCH=release-v1.2
39+
kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm-docs/$RELEASE_BRANCH/manifests/samples/httpbin/httpbin.yaml -n httpbin
40+
```
41+
42+
Verify that the pods are up and running, and have the envoy sidecar injected:
43+
44+
```console
45+
kubectl get pods -n httpbin
46+
```
47+
48+
Example output:
49+
50+
```console
51+
NAME READY STATUS RESTARTS AGE
52+
httpbin-7c6464475-9wrr8 2/2 Running 0 6d20h
53+
```
54+
55+
```console
56+
kubectl get svc -n httpbin
57+
```
58+
59+
Example output:
60+
61+
```console
62+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
63+
httpbin ClusterIP 10.0.92.135 <none> 14001/TCP 6d20h
64+
```
65+
66+
Next, deploy the following `Ingress` and `IngressBackend` configurations to allow external clients to access the `httpbin` service on port `14001`.
67+
68+
```console
69+
kubectl apply -f <<EOF
70+
apiVersion: networking.k8s.io/v1
71+
kind: Ingress
72+
metadata:
73+
name: httpbin
74+
namespace: httpbin
75+
annotations:
76+
kubernetes.io/ingress.class: azure/application-gateway
77+
spec:
78+
rules:
79+
- http:
80+
paths:
81+
- path: /
82+
pathType: Prefix
83+
backend:
84+
service:
85+
name: httpbin
86+
port:
87+
number: 14001
88+
---
89+
kind: IngressBackend
90+
apiVersion: policy.openservicemesh.io/v1alpha1
91+
metadata:
92+
name: httpbin
93+
namespace: httpbin
94+
spec:
95+
backends:
96+
- name: httpbin
97+
port:
98+
number: 14001 # targetPort of httpbin service
99+
protocol: http
100+
sources:
101+
- kind: IPRange
102+
name: 10.0.0.0/8
103+
EOF
104+
```
105+
106+
Ensure that both the Ingress and IngressBackend objects have been successfully deployed:
107+
108+
```console
109+
kubectl get ingress -n httpbin
110+
```
111+
112+
Example output:
113+
114+
```console
115+
NAME CLASS HOSTS ADDRESS PORTS AGE
116+
httpbin <none> * 20.85.173.179 80 6d20h
117+
```
118+
119+
```console
120+
kubectl get ingressbackend -n httpbin
121+
```
122+
123+
Example output:
124+
125+
```console
126+
NAME STATUS
127+
httpbin committed
128+
```
129+
130+
Use `kubectl` to display the external IP address of the ingress service.
131+
```console
132+
kubectl get ingress -n httpbin
133+
```
134+
135+
Use `curl` to verify you can access the `httpbin` service using the external IP address of the ingress service.
136+
```console
137+
curl -sI http://<external-ip>/get
138+
```
139+
140+
Confirm you receive a response with `status 200`.
21141

22142
## Metrics observability
23143

0 commit comments

Comments
 (0)