Skip to content

Commit 0d24f99

Browse files
committed
Release v1.2.0-beta
Signed-off-by: Subash Dangol <subash.dangol@citrix.com>
1 parent 4852ac0 commit 0d24f99

File tree

1,681 files changed

+6421
-701300
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,681 files changed

+6421
-701300
lines changed

Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ check: check_format lint
2222
# Run Unit Tests with code-coverage
2323
utest: unit_test integration_test coverage_report
2424

25+
create_certs:
26+
sh tests/create_cert.sh
27+
2528
unit_test:
2629
go test -p 1 -race -timeout 1m -cover -coverprofile=unittestcov.out -v citrix-istio-adaptor/nsconfigengine citrix-istio-adaptor/adsclient citrix-istio-adaptor/istio-adaptor
2730

@@ -33,6 +36,9 @@ coverage_report:
3336
gocovmerge integrationtestcov.out unittestcov.out > combinedcoverage.out
3437
go tool cover -func=combinedcoverage.out
3538
go tool cover -html=combinedcoverage.out -o combinedcoverage.html
39+
go get github.com/axw/gocov/gocov
40+
go get github.com/AlekSi/gocov-xml
41+
gocov convert combinedcoverage.out | gocov-xml > combinedcoverage.xml
3642

3743
clean:
38-
- rm integrationtestcov.out unittestcov.out combinedcoverage.out combinedcoverage.html
44+
- rm integrationtestcov.out unittestcov.out combinedcoverage.out combinedcoverage.html combinedcoverage.xml

README.md

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ This repository contains various integrations of [Citrix ADC](https://www.citrix
2222
4. [Architecture](#architecture)
2323
4. [Deployment Options](#deployment-options)
2424
5. [Features](#features)
25-
6. [Release Notes](#release-notes)
26-
7. [Contributions](#contributions)
27-
8. [Questions](#questions)
28-
9. [Issues](#issues)
29-
10. [Code of Conduct](#code-of-conduct)
30-
11. [Licensing](#licensing)
25+
6. [Example: Deploying Bookinfo with Citrix ADC](#example)
26+
7. [Blogs](#blogs)
27+
8. [Release Notes](#release-notes)
28+
9. [Contributions and Development](#contributions)
29+
10. [Questions](#questions)
30+
11. [Issues](#issues)
31+
12. [Code of Conduct](#code-of-conduct)
32+
13. [Licensing](#licensing)
3133

3234
## <a name="introduction">Introduction</a>
3335

@@ -45,7 +47,7 @@ An Istio ingress gateway acts as an entry point for the incoming traffic and sec
4547

4648
## <a name="citrix-adc-as-a-sidecar">Citrix ADC as a Sidecar Proxy for Istio</a>
4749

48-
In Istio service mesh, a sidecar proxy runs alongside application pods and it intercepts and manages incoming and outgoing traffic for applications. Citrix ADC CPX can be deployed as the sidecar proxy in application pods. A sidecar proxy applies the configured routing policies or rules to the ingress and egress traffic from the pod.
50+
In Istio service mesh, a sidecar proxy runs alongside application pods and it intercepts and manages incoming and outgoing traffic for applications. Citrix ADC CPX can be deployed as the sidecar proxy in application pods. A sidecar proxy applies the configured routing policies or rules to the ingress and egress traffic from the pod. This [Citrix ADC CPX](https://www.citrix.com/blogs/2020/02/25/citrix-adc-cpx-for-service-mesh-memory-footprint-and-microservices/) is designed to consume less resources.
4951

5052

5153
## <a name="architecture">Architecture</a>
@@ -66,15 +68,15 @@ You can deploy Citrix ADC with Istio using Kubernetes YAML or Helm charts. To de
6668

6769
To deploy Citrix ADC with Istio using Helm charts, see the following links:
6870

69-
- [Deploy Citrix ADC as an Ingress Gateway using Helm charts](./charts/stable/citrix-adc-istio-ingress-gateway/README.md)
70-
- [Deploy Citrix ADC CPX as a sidecar using Helm charts](./charts/stable/citrix-cpx-istio-sidecar-injector/README.md)
71+
- [Deploy Citrix ADC as an Ingress Gateway using Helm charts](https://github.com/citrix/citrix-helm-charts/blob/master/citrix-adc-istio-ingress-gateway/README.md)
72+
- [Deploy Citrix ADC CPX as a sidecar using Helm charts](https://github.com/citrix/citrix-helm-charts/blob/master/citrix-cpx-istio-sidecar-injector/README.md)
7173

7274
## <a name="features">Features</a>
7375

7476
Features supported on Citrix ADC in Istio Servicemesh can be broadly categorized in below sections.
7577
1. Traffic Management
7678
2. Security
77-
3. Telemetry
79+
3. Observability
7880

7981
### Traffic Management
8082

@@ -102,19 +104,50 @@ Few important features supported on Citrix ADC are:
102104

103105
Istio-adaptor monitors the folder where Istio deploys certificates and keys for mutual TLS authentication between Citrix ADC proxies. After an update of certificate and key, Istio-adaptor loads the new certificate and key to Citrix ADC.
104106

105-
### Telemetry
107+
### Observability
108+
109+
When a service is deployed in the mesh, users are interested in getting insights about service behaviour. Citrix ADC proxy provides a rich set of in-built metrics. When Citrix ADC CPX is deployed as a sidecar, these metrics will represent telemetry data for an application. It helps in reducing the burden of an application developer to program lots of instrumentation code in the application, and instead she can focus on the core application logic.
110+
111+
Citrix has built couple of auxiliary tools such as [Citrix ADC Metrics Exporter](https://github.com/citrix/citrix-adc-metrics-exporter) and [Citrix Observability Exporter](https://github.com/citrix/citrix-observability-exporter) which help in exporting metrics and/or transactional data to observability tools such as Prometheus, Zipkin, Kafta etc.
112+
113+
Statistical data of Citrix ADC Ingress device can be exported to the Prometheus using [Citrix ADC Metrics Exporter](https://github.com/citrix/citrix-adc-metrics-exporter).
114+
115+
[Citrix Observability Exporter](https://github.com/citrix/citrix-observability-exporter) (COE) is a microservice designed to collect metrics from Citrix ADCs, and export to observability tools such as Zipkin, Kafka, Prometheus etc.
116+
To know more about COE, kindly refer this [link](https://github.com/citrix/citrix-observability-exporter).
117+
118+
119+
#### Telemetry in Ingress Gateway
120+
121+
[Prometheus](https://prometheus.io) is usually already installed as a part of Istio package. By default, Citrix ADC Metrics Exporter is also deployed along with Citrix ADC Ingress Gateway. Citrix ADC Metrics Exporter fetches statistical data from Citrix ADC and exports it to Prometheus running in Istio service mesh. When you add Prometheus as a data source in Grafana, you can visualize this statistical data in the Grafana dashboard.
122+
123+
124+
#### Telemetry and Distributed Tracing in Sidecar proxies
125+
126+
Citrix ADC CPX in conjunction with the Citrix Observability Exporter (COE) can export metrics to Prometheus deployed in Istio service mesh. This data can also be visualized in Grafana.
127+
128+
Citrix ADC CPX sends transactional data to COE which eventually exports these trace spans to [Zipkin](https://zipkin.io). This distributed tracing enables users to track a service to service communication within a mesh. It helps in getting deeper understanding about request latency, serialization and parallelism via visualization.
106129

107-
Statistical data of Citrix ADC Ingress device can be exported to the Prometheus using [Citrix ADC Metrics Exporter](https://github.com/citrix/citrix-adc-metrics-exporter). Prometheus already installed as a part of Istio package. By default, Citrix ADC Metrics Exporter is also deployed along with Citrix ADC Ingress Gateway. Citrix ADC Metrics Exporter fetches statistical data from Citrix ADC and exports it to Prometheus running in Istio service mesh. When you add Prometheus as a data source in Grafana, you can visualize this statistical data in the Grafana dashboard.
108130

109131
The detailed list of fields supported on Citrix ADC as per the Istio CRDs (Destination Rule, Virtual Service, Policy, Gateway, Service Entry) can be found [here](docs/features.md).
110132

133+
## <a name="example">Example: Deploying Bookinfo with Citrix ADC</a>
134+
Follow this [link](https://github.com/citrix/citrix-helm-charts/blob/master/examples/citrix-adc-in-istio/README.md) to deploy Bookinfo application with Citrix ADC acting as an Istio Ingress Gateway and Citrix ADC CPX as sidecar in application pods.
135+
136+
## <a name="blogs">Blogs</a>
137+
138+
1. [Citrix ADC as an Istio Ingress Gateway: Part 1 Deployment](https://www.citrix.com/blogs/2019/11/13/citrix-adc-as-an-istio-ingress-gateway-part-1-deployment/)
139+
2. [Citrix ADC as an Istio Ingress Gateway: Part 2 Configuration](https://www.citrix.com/blogs/2019/11/14/citrix-adc-as-an-istio-ingress-gateway-part-2-configuration/)
140+
3. [Citrix ADC in OpenShift Service Mesh](https://blog.openshift.com/citrix-adc-in-openshift-service-mesh/)
141+
111142
## <a name="release-notes">Release Notes</a>
112143

113-
Click [here](https://github.com/citrix/citrix-istio-adaptor/releases) for the release notes of the latest Citrix `istio-adaptor`.
144+
Click [here](docs/release-notes.md) for the release notes of the latest Citrix `istio-adaptor`.
145+
146+
## <a name="contributions">Contributions and Development</a>
114147

115-
## <a name="contributions">Contributions</a>
148+
Refer [Contributions](CONTRIBUTING.md)
116149

117-
Contributions are always welcome! Please read the [Developer Guide](docs/developer_guide.md).
150+
Please read the [Developer Guide](docs/developer-guide.md).
118151

119152
## <a name="questions">Questions</a>
120153

Version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.0
1+
1.2.0

adsclient/ads_client.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,16 @@ package adsclient
1515

1616
import (
1717
"context"
18+
"log"
19+
"strings"
20+
"sync"
21+
"time"
22+
1823
xdsapi "github.com/envoyproxy/go-control-plane/envoy/api/v2"
1924
envoy_api_v2_core "github.com/envoyproxy/go-control-plane/envoy/api/v2/core"
2025
ads "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v2"
2126
"github.com/gogo/protobuf/types"
2227
"google.golang.org/grpc"
23-
"log"
24-
"strings"
25-
"sync"
26-
"time"
2728
)
2829

2930
const (
@@ -268,7 +269,7 @@ func (client *AdsClient) reloadCds() {
268269
func NewAdsClient(adsServerURL string, adsServerSpiffeID string, secureConnect bool,
269270
nodeID string, applicationName string, netscalerURL string,
270271
netscalerUsername string, netscalerPassword string, netscalerVIP string,
271-
netProfile string, analyticsServerIP string) (*AdsClient, error) {
272+
netProfile string, analyticsServerIP string, logProxyURL string) (*AdsClient, error) {
272273
var err error
273274
adsClient := new(AdsClient)
274275
adsClient.adsServerURL = adsServerURL
@@ -287,7 +288,7 @@ func NewAdsClient(adsServerURL string, adsServerSpiffeID string, secureConnect b
287288
if len(s) > 1 {
288289
adsServerPort = s[1]
289290
}
290-
adsClient.nsConfigAdaptor, err = newConfigAdaptor(netscalerURL, netscalerUsername, netscalerPassword, adsServerPort, netscalerVIP, netProfile, analyticsServerIP)
291+
adsClient.nsConfigAdaptor, err = newConfigAdaptor(netscalerURL, netscalerUsername, netscalerPassword, adsServerPort, netscalerVIP, netProfile, analyticsServerIP, logProxyURL)
291292
if err != nil {
292293
return nil, err
293294
}

adsclient/ads_client_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ import (
2121

2222
func Test_StartClient(t *testing.T) {
2323
t.Logf("ads StartClient with unreachable secure ads grpc server")
24-
adsClient, err := NewAdsClient("loaclhost:15011", "", true, "ads_client_node_1", "test-app", env.GetNetscalerURL(), env.GetNetscalerUser(), env.GetNetscalerPassword(), "nsip", "", "")
24+
adsClient, err := NewAdsClient("loaclhost:15011", "", true, "ads_client_node_1", "test-app", env.GetNetscalerURL(), env.GetNetscalerUser(), env.GetNetscalerPassword(), "nsip", "", "", "ns-logproxy.citrix-system")
2525
if err != nil {
2626
t.Errorf("newAdsClient failed with %v", err)
2727
}
2828
adsClient.StartClient()
2929
time.Sleep(3 * time.Second)
3030
adsClient.StopClient()
3131
t.Logf("ads StartClient with unreachable insecure ads grpc server")
32-
adsClient, err = NewAdsClient("localhost:15010", "", false, "ads_client_node_1", "test-app", env.GetNetscalerURL(), env.GetNetscalerUser(), env.GetNetscalerPassword(), "nsip", "", "")
32+
adsClient, err = NewAdsClient("localhost:15010", "", false, "ads_client_node_1", "test-app", env.GetNetscalerURL(), env.GetNetscalerUser(), env.GetNetscalerPassword(), "nsip", "", "", "ns-logproxy.citrix-system")
3333
if err != nil {
3434
t.Errorf("newAdsClient failed with %v", err)
3535
}

0 commit comments

Comments
 (0)