Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 10 additions & 15 deletions docs/addons/observability.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ The easiest way to get started with production-grade metrics collection is to us
*Steps*

. Create a ServiceMonitor for istiod.

+
[source,yaml]
----
apiVersion: monitoring.coreos.com/v1
Expand All @@ -49,7 +49,7 @@ spec:
----

. Create a PodMonitor to scrape metrics from the istio-proxy containers. Note that *this resource has to be created in all namespaces where you are running sidecars*.

+
[source,yaml]
----
apiVersion: monitoring.coreos.com/v1
Expand Down Expand Up @@ -107,7 +107,7 @@ This section describes how to setup Istio with OpenShift Distributed Tracing to
*Steps*

. Configure Istio to enable tracing and include the OpenTelemetry settings:

+
[source,yaml]
----
meshConfig:
Expand All @@ -121,9 +121,8 @@ meshConfig:

The *service* field is the OpenTelemetry collector service in the `istio-system` namespace.

[start=2]
. Create an Istio telemetry resource to active the OpenTelemetry tracer

+
[source,yaml]
----
apiVersion: telemetry.istio.io/v1
Expand All @@ -138,14 +137,12 @@ spec:
randomSamplingPercentage: 100
----

[start=3]
. Validate the integration: Generate some traffic

+
We can link:addons.adoc#deploy-gateway-and-bookinfo[Deploy Bookinfo] and generate some traffic.

[start=4]
. Validate the integration: See the traces in the UI

+
[source,bash,subs="attributes+"]
----
kubectl get routes -n tempo tempo-sample-query-frontend-tempo
Expand All @@ -169,7 +166,7 @@ If you followed <<scraping-metrics-using-the-openshift-monitoring-stack>>, you c
*Steps*

. Create a ClusterRoleBinding for Kiali, so it can view metrics from user-workload monitoring

+
[source,yaml]
----
apiVersion: rbac.authorization.k8s.io/v1
Expand All @@ -186,19 +183,17 @@ subjects:
namespace: istio-system
----

[start=2]
. Find out the revision name of your Istio instance. In our case it is `test`.
+
[source,console,subs="attributes+"]
----
kubectl get istiorevisions.sailoperator.io
NAME READY STATUS IN USE VERSION AGE
test True Healthy True v{istio_latest_version} 119m
----

[start=3]
. Create a Kiali resource and point it to your Istio instance. Make sure to replace `test` with your revision name in the fields `config_map_name`, `istio_sidecar_injector_config_map_name`, `istiod_deployment_name` and `url_service_version`.

+
[source,yaml]
----
apiVersion: kiali.io/v1alpha1
Expand Down Expand Up @@ -233,7 +228,7 @@ This section describes how to setup Kiali with OpenShift Distributed Tracing to
*Steps*

. Setup Kiali to access traces from the Tempo frontend:

+
[source,yaml]
----
external_services:
Expand Down
34 changes: 17 additions & 17 deletions docs/common/create-and-configure-gateways.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -39,28 +39,28 @@ a link:../../chart/samples/ingress-gateway.yaml[sample gateway configuration] th
where the application is installed:

. Create the `istio-ingressgateway` deployment and service:

+
[source,bash,subs="attributes+"]
----
kubectl apply -f ingress-gateway.yaml
----

. Configure the `bookinfo` application with the new gateway:

+
[source,bash,subs="attributes+"]
----
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/bookinfo-gateway.yaml
----

. On OpenShift, you can use a https://docs.openshift.com/container-platform/4.13/networking/routes/route-configuration.html[Route] to expose the gateway externally:

+
[source,bash,subs="attributes+"]
----
kubectl expose service istio-ingressgateway
----

. Finally, obtain the gateway host name and the URL of the product page:

+
[source,bash,subs="attributes+"]
----
HOST=$(kubectl get route istio-ingressgateway -o jsonpath='{.spec.host}')
Expand All @@ -75,21 +75,21 @@ Verify that the `productpage` is accessible from a web browser.
An egress gateway allows you to control outbound traffic from the service mesh, providing security and monitoring capabilities for external service access. Here's how to configure an egress gateway using gateway injection:

. Create the `istio-egressgateway` namespace:

+
[source,bash,subs="attributes+"]
----
kubectl create namespace istio-egressgateway
----

. Create the `istio-egressgateway` deployment and service using the provided https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/chart/samples/egress-gateway.yaml[sample egress gateway configuration]:

+
[source,bash,subs="attributes+"]
----
kubectl apply -f https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/chart/samples/egress-gateway.yaml -n istio-egressgateway
----

. Configure traffic routing to use the egress gateway by creating these resources in the `istio-egressgateway` namespace. For example, to route traffic to `httpbin.org` through the egress gateway:

+
[source,yaml]
----
apiVersion: networking.istio.io/v1beta1
Expand Down Expand Up @@ -168,16 +168,16 @@ spec:
number: 80
----

Apply this configuration:

. Apply this configuration:
+
[source,bash,subs="attributes+"]
----
kubectl apply -f egress-gateway-config.yaml
----


. Test the egress gateway by making a request from a pod in the mesh (EG: using a bookinfo pod within the mesh):

+
[source,bash,subs="attributes+"]
----
kubectl exec -it $(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}') -c productpage -- curl -v http://httpbin.org/get
Expand All @@ -204,14 +204,14 @@ kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || { kubectl ku
To configure `bookinfo` with a gateway using `Gateway API`:

. Create and configure a gateway using a `Gateway` and `HTTPRoute` resource:

+
[source,bash,subs="attributes+"]
----
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/gateway-api/bookinfo-gateway.yaml
----

. Retrieve the host, port and gateway URL:

+
[source,bash,subs="attributes+"]
----
export INGRESS_HOST=$(kubectl get gtw bookinfo-gateway -o jsonpath='{.status.addresses[0].value}')
Expand All @@ -220,7 +220,7 @@ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
----

. Obtain the `productpage` URL and check that you can visit it from a browser:

+
[source,bash,subs="attributes+"]
----
echo "http://{$GATEWAY_URL}/productpage"
Expand All @@ -235,15 +235,15 @@ You can also use the Kubernetes Gateway API to configure an egress gateway in Is
To deploy an egress gateway using the Gateway API, follow these steps:

. *Create the egress gateway namespace:*

+
[source,bash,subs="attributes+"]
----
kubectl create namespace egress-gateway
kubectl label namespace egress-gateway istio-injection=enabled
----

. *Apply the sample egress gateway configuration:*

+
We provide a sample manifest that includes a `ServiceEntry`, `Gateway`, and `HTTPRoute`s for egress to `httpbin.org` https://raw.githubusercontent.com/istio-ecosystem/sail-operator/main/chart/samples/egress-gateway-gw-api.yaml[here]:

[source,bash,subs="attributes+"]
Expand All @@ -257,7 +257,7 @@ This will:
- Create a `HTTPRoute`s to forward traffic from the mesh pod to the gateway and from the gateway to the external service.

. *Test egress traffic:*

+
From a pod in the mesh, you can test egress traffic to `httpbin.org`. Let's create a sample curl pod:

[source,bash,subs="attributes+"]
Expand Down Expand Up @@ -293,4 +293,4 @@ cluster 'outbound|80||httpbin.org' match for URL '/get' # the egress gateway rou

- Ensure the namespace has istio-injection enabled
- Verify HTTPRoute status: `kubectl describe httproute -n egress-gateway`
- Check that the egress gateway pod is running: `kubectl get pods -l gateway.networking.k8s.io/gateway-name=httpbin-egress-gateway -n egress-gateway`
- Check that the egress gateway pod is running: `kubectl get pods -l gateway.networking.k8s.io/gateway-name=httpbin-egress-gateway -n egress-gateway`
Loading
Loading