Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
skenderidis committed Mar 11, 2024
1 parent b3de9d0 commit cafbf92
Show file tree
Hide file tree
Showing 332 changed files with 935 additions and 1,421 deletions.
14 changes: 14 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Examples
The examples build for OLTRA can be found below:

- [**Ingress resource examples with NGINX+**](nic-examples/ingress-resources/)
- [**CRD examples with NGINX+**](nic-examples/custom-resources/)
- [**Publishing NGINX with IngressLink**](cis-examples/cis-crd/IngressLink/)
- [**Service Type LoadBalancer with CIS**](cis-examples/cis-crd/serviceTypeLB/)
- [**App Protect on Ingress Resources**](app-protect/basic/ingress)
- [**App Protect on Virtual Server CRD**](app-protect/basic/virtualserver)
- [**Path-based App Protect deployments**](app-protect/path-based)
- [**Service Type LoadBalancer with CIS**](cis-examples/cis-crd/serviceTypeLB/)
- [**Ingress resource examples with CIS**](cis-examples/cis-ingress/)
- [**CRD examples with CIS**](cis-examples/cis-crd/)
- [**DNS Publishing of K8s services with CIS**](cis-examples/cis-crd/ExternalDNS/)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
64 changes: 64 additions & 0 deletions examples/cis/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Reverse Proxy capabilities with CIS

In this section we will be exploring the most common use-cases for the four ways that CIS can be configured for in order to publish Kubernetes services. These include:
- [Ingress Resources](#ingress-resource-examples)
- [VirtualServer CRDs](#virtualserver-crd-examples)
- [TransportServer CRDs](#transportserver-crd-examples)
- [Service Type LoadBalancer](#service-type-loadbalancer-examples)
- [IngressLink](#ingresslink-examples)
- [EDNS](#edns-examples)

<p align="center">
<img src="cis.png" style="width:100%">
</p>

## Ingress Resource examples
In this section we provide examples for the most common use-cases of Ingress Resources with F5 CIS

* [Basic Ingress](ingress/basic-ingress)
* [Host based routing](ingress/host-routing)
* [Path based routing](ingress/fanout)
* [Health Monitors](ingress/health-monitor)
* [Rewrite](ingress/rewrite)
* [TLS Ingress](ingress/tls)

## VirtualServer CRD examples
In this section we provide examples for the most common use-cases of VirtualServer CRDs with F5 CIS

* [Basic VirtualServer ](crd/VirtualServer/Basic/)
* [Wildcard VirtualServer ](crd/VirtualServer/Wildcard/)
* [Host based routing](crd/VirtualServer/HostGroup)
* [Rewrite](crd/VirtualServer/Rewrite/)
* [HTTP Redirect](crd/VirtualServer/httpTraffic/)
* [Dynamic IP Allocation (IPAM)](crd/VirtualServer/IpamLabel)
* [Health Monitors](crd/VirtualServer/HealthMonitor)
* [Wildcard Hostname](crd/VirtualServer/Wildcard)
* [TLS VirtualServer](crd/VirtualServer/TLS-Termination/)
* [Using iRules ](crd/VirtualServer/PolicyCRD/README.md#iRules)
* [Managing Persistence](crd/VirtualServer/PolicyCRD/README.md#Persistence)
* [Custom HTTP Profile](crd/VirtualServer/PolicyCRD/README.md#custom-http-profile)
* [Enable WAF Policies](crd/VirtualServer/PolicyCRD/README.md#waf-policies)
* [VirtualServer with custom Port](crd/VirtualServer/CustomPort/)
* [VirtualServer with IPv6 Address](crd/VirtualServer/IPv6/)


## TransportServer CRD examples
In this section we provide examples for the most common use-cases of TransportServer CRDs with F5 CIS
- [TCP TransportServer](crd/TransportServer/#tcp-transport-server)
- [TCP TransportServer with IPAM](crd/TransportServer/#tcp-transport-server-with-ipam)
- [UDP TransportServer](crd/TransportServer/#udp-transport-server)

## Service Type LoadBalancer examples
In this section we provide examples for the most common use-cases of service type LoadBalancer with F5 CIS
- [Service Type LoadBalancer](crd/serviceTypeLB/#service-type-loadbalancer)
- [Multiport Type LoadBalancer](crd/serviceTypeLB/#create-multiport-type-loadbalancer)
- [Service Type LoadBalancer with Health monitor](crd/serviceTypeLB/#service-type-loadbalancer-with-health-monitor)

## IngressLink examples
In this section we provide examples for the most common use-cases of IngressLink with F5 CIS
- [IngressLink with static IP](crd/IngressLink/#staticip)
- [IngressLink with dynamic IP](crd/IngressLink/#dynamicip)

## EDNS examples
In this section we provide examples for the most common use-cases of ExternalDNS with F5 CIS
- [Publish FQDN](crd/ExternalDNS/#publish-FQDN)
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,37 @@

In this example we configure load balancing with TLS termination for a simple web application using the [VirtualServer](https://docs.nginx.com/nginx-ingress-controller/configuration/virtualserver-and-virtualserverroute-resources/) resource. The application, called cafe, lets you get either tea via the tea service or coffee via the coffee service. You indicate your drink preference with the URI of your HTTP request: URIs ending with `/tea` get you tea and URIs ending with `/coffee` get you coffee.

The example is similar to the [complete example](../../examples/complete-example/README.md). However, instead of the Ingress resource, we use the VirtualServer.

## Prerequisites

Use the terminal on VS Code. VS Code is under the `bigip-01` on the `Access` drop-down menu. Click <a href="https://raw.githubusercontent.com/F5EMEA/oltra/main/vscode.png"> here </a> to see how

Change the working directory to `basic-configuration`.
Change the working directory to `basic`.
```
cd ~/oltra/use-cases/nic-examples/custom-resources/basic-configuration
cd ~/oltra/use-cases/nic-examples/custom-resources/basic
```

## Step 1 - Deploy the Cafe Application

Create the coffee and the tea deployments and services:
```
kubectl apply -f cafe.yaml
kubectl apply -f app.yaml
```

## Step 2 - Configure Load Balancing and TLS Termination
## Step 2 - Configure Load Balancing

> No need to create a secret as we will be using the default wildcard cert configured on NGINX:
Create the VirtualServer resource:
```
kubectl apply -f cafe-virtual-server.yaml
kubectl apply -f virtual-server.yaml
```

## Step 3 - Test the Configuration

Check that the configuration has been successfully applied by inspecting the events of the VirtualServer:
```
kubectl describe virtualserver cafe
kubectl describe virtualserver basic
#################################### Expected Output ####################################
. . .
Expand All @@ -46,7 +45,7 @@ Events:

To get coffee:
```
curl https://cafe.f5k8s.net/coffee
curl http://basic-vs.f5k8s.net/coffee
########### Expected Output ##########
Server address: 10.244.196.136:8080
Expand All @@ -59,7 +58,7 @@ Request ID: 5ca5c11a263c4457ebb8194319fdc19e

If your prefer tea:
```
curl https://cafe.f5k8s.net/tea
curl http://basic-vs.f5k8s.net/tea
########### Expected Output ##########
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: cafe
name: basic
spec:
host: cafe.f5k8s.net
# tls:
# secret: cafe-secret
host: basic-vs.f5k8s.net
upstreams:
- name: tea
service: tea-svc
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Note that the VirtualServer references the policy `rate-limit-policy` created in

Let's test the configuration. If you access the application at a rate less than one request per second, NGINX will allow your requests:
```cmd
for i in {1..10} ; do curl http://webapp.example.com/ --resolve webapp.example.com:80:10.1.10.10; sleep 1; done
for i in {1..10} ; do curl http://rate.f5k8s.net/; sleep 1; done
```

The expected output is:
Expand All @@ -54,7 +54,7 @@ Request ID: a8d0428ffc9a9113a81fc3063327897c

If you access the application at a rate higher than one request per second, NGINX will start rejecting your requests:
```cmd
for i in {1..10} ; do curl http://webapp.example.com/ --resolve webapp.example.com:80:10.1.10.10; done
for i in {1..10} ; do curl http://rate.f5k8s.net/; done
```

The expected output is:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: webapp
name: rate-limit
spec:
host: webapp.example.com
host: rate.f5k8s.net
policies:
- name: rate-limit-policy
upstreams:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
# Basic Configuration

In this example we configure load balancing with TLS termination for a simple web application using the [VirtualServer](https://docs.nginx.com/nginx-ingress-controller/configuration/virtualserver-and-virtualserverroute-resources/) resource. The application, called cafe, lets you get either tea via the tea service or coffee via the coffee service. You indicate your drink preference with the URI of your HTTP request: URIs ending with `/tea` get you tea and URIs ending with `/coffee` get you coffee.
In this example we configure load balancing with TLS termination for a simple web application using the [VirtualServer](https://docs.nginx.com/nginx-ingress-controller/configuration/virtualserver-and-virtualserverroute-resources/) resource.

The example is similar to the [complete example](../../examples/complete-example/README.md). However, instead of the Ingress resource, we use the VirtualServer.

## Prerequisites

Use the terminal on VS Code. VS Code is under the `bigip-01` on the `Access` drop-down menu. Click <a href="https://raw.githubusercontent.com/F5EMEA/oltra/main/vscode.png"> here </a> to see how

Change the working directory to `basic-configuration`.
Change the working directory to `tls`.
```
cd ~/oltra/use-cases/nic-examples/custom-resources/basic-configuration
cd ~/oltra/use-cases/nic-examples/custom-resources/tls
```

## Step 1 - Deploy the Cafe Application
Expand All @@ -20,20 +19,27 @@ Create the coffee and the tea deployments and services:
kubectl apply -f cafe.yaml
```

## Step 2 - Deploy secret

Create the Kubernetes secret that contains the TLS cert/key:
```
kubectl apply -f cafe-secret.yaml
```

## Step 2 - Configure Load Balancing and TLS Termination

> No need to create a secret as we will be using the default wildcard cert configured on NGINX:
Create the VirtualServer resource:
```
kubectl apply -f cafe-virtual-server.yaml
kubectl apply -f virtual-server.yaml
```

## Step 3 - Test the Configuration

Check that the configuration has been successfully applied by inspecting the events of the VirtualServer:
```
kubectl describe virtualserver cafe
kubectl describe virtualserver tls
#################################### Expected Output ####################################
. . .
Expand All @@ -46,7 +52,7 @@ Events:

To get coffee:
```
curl https://cafe.f5k8s.net/coffee
curl https://tls.f5k8s.net/coffee
########### Expected Output ##########
Server address: 10.244.196.136:8080
Expand All @@ -59,7 +65,7 @@ Request ID: 5ca5c11a263c4457ebb8194319fdc19e

If your prefer tea:
```
curl https://cafe.f5k8s.net/tea
curl https://tls.f5k8s.net/tea
########### Expected Output ##########
Expand All @@ -72,7 +78,6 @@ Request ID: 76e835733e75a367455566e3cc31c9b5
```


***Clean up the environment (Optional)***
```
kubectl delete -f cafe-virtual-server.yaml
Expand Down
8 changes: 8 additions & 0 deletions examples/nic/custom-resources/tls/cafe-secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1
kind: Secret
metadata:
name: cafe-secret
type: kubernetes.io/tls
data:
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUU0ekNDQTh1Z0F3SUJBZ0lTQkEwWUl0TmVEZnFsYUJ6WSt5ZzAxaUZHTUEwR0NTcUdTSWIzRFFFQkN3VUEKTURJeEN6QUpCZ05WQkFZVEFsVlRNUll3RkFZRFZRUUtFdzFNWlhRbmN5QkZibU55ZVhCME1Rc3dDUVlEVlFRRApFd0pTTXpBZUZ3MHlOREF5TURReE16TXdNRFphRncweU5EQTFNRFF4TXpNd01EVmFNQll4RkRBU0JnTlZCQU1NCkN5b3VaalZyT0hNdWJtVjBNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTJiUEQKa25ZR1JoaVZYUHhBQWsvZDNQRm8rdUl0V3NicDhmS3draTdLNzZWTGhKY2xGSGhwc0U1YTFCazZxK0ZmOTBLTQpKWllENVpGNzVDNEtqVng2bExSbmlSK2QrdGJlU0thWXpHSmhkeXlPQjNGcm5sUVB4bGNna1Z2RiswVld0SlR5CmxJWkR3QzhXRGJGdkE3V0FJUVhsZ3VJTTBUS3VBU1FiU2tqeHlxVEJSOXgvZjI1SlFlQVB6MU84Mi9ZeUpXSTYKQ3JxdlA5SEFmZmdMdEVtMlF6MzZhWVBNcHBvU1NYaGFOY0RZa1MxNVNhWmIyQU81eW4zUWV5ZGRXTzdnWXRlcApsU0VhTHRHOVd3TlM1cjJkRElYZGpJTThJQmZmVDNsY05sOFgwZmt3U3dqck1pSE0xTm9ad3RBYjR3TFp2ZDJSCmJjQTIrbWZ3NUR2dzYyOUlxd0lEQVFBQm80SUNEVENDQWdrd0RnWURWUjBQQVFIL0JBUURBZ1dnTUIwR0ExVWQKSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkRGdRVwpCQlFZMEpUZ1NBaWdCa01UQ3U0OXZ1NHNFbVdZZmpBZkJnTlZIU01FR0RBV2dCUVVMck1YdDFoV3k2NVFDVURtCkg2K2RpeFRDeGpCVkJnZ3JCZ0VGQlFjQkFRUkpNRWN3SVFZSUt3WUJCUVVITUFHR0ZXaDBkSEE2THk5eU15NXYKTG14bGJtTnlMbTl5WnpBaUJnZ3JCZ0VGQlFjd0FvWVdhSFIwY0RvdkwzSXpMbWt1YkdWdVkzSXViM0puTHpBVwpCZ05WSFJFRUR6QU5nZ3NxTG1ZMWF6aHpMbTVsZERBVEJnTlZIU0FFRERBS01BZ0dCbWVCREFFQ0FUQ0NBUVFHCkNpc0dBUVFCMW5rQ0JBSUVnZlVFZ2ZJQThBQjJBRWl3NDJ2YXBrYzBEK1ZxQXZxZE1Pc2NVZ0hMVnQwc2dkbTcKdjZzNTJJUnpBQUFCalhTR3grd0FBQVFEQUVjd1JRSWdUY29Bd3lvRTZRSzN1N2RDQzdGRysxT2tGaXQ5bmhoTAptL2VhcWJqZjZBZ0NJUUNvc243VFhLS3IwRGtxemhzNXlzMlFObFJ1dVRwdFRkTVZFZzQvVTk1ZEVBQjJBRHRUCmQzVStMYm1BVG9zd1d3YitRRHRuMkUvRDlNZTlBQTB0Y20vaCt0UVhBQUFCalhTR3gvSUFBQVFEQUVjd1JRSWcKSjM5MEhRaHVJWTZtNG45OUcxVEFYWXRLc3VYUDZFR0xERmdLRWdSZ0hEVUNJUUNKcVhaS0pZaGx1KzQwdmwxRQp3dnV0dXZoRm9xUHM1Qk9HcXU2eUlhbS84REFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBalZSaXFCRDE0SGhtCkMyTVk0YVNaVVN0TlVDci80UFltNnRnM0pLQ3RWZU5hNEhIZVcyQ3VnMmVydFhrMkZHajZ2TmUvclR6cDZkeHoKQWIwTEZjUVRaak8rV3greUlTNUpEdnkxMDJXaTlkcWRydGw0SlVXT2hjdkNWS0d6MTdRMG0xdEZhcVA1a0t5OApyaHNjZVkwZG5OTjQvVXIwSW9MK1M4RnkvUWRjMkJob3N5TmNPd25HK1FVdXAwWkVybVYvbnVmRVR4S3hLTkx6Ck5VMUhSbTl6aEtPL1JFazlhZmJUbWhYakY0RjlvU0RMZy9sSkIyeDZiQVdFbjdTdHV5OXhIemZkQVIxWmRDQlYKL2l3anNFbEJMNXdWbEZ5N3ZXbUlwS2NtanBNT1ZURG5ZUlN6ZkFuZHBCY216Z3Ryam1oTjZ3UGNiMkFpMGM4cApueHlJZTVtbSt3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRkZqQ0NBdjZnQXdJQkFnSVJBSkVyQ0VyUERCaW5VL2JXTGlXblgxb3dEUVlKS29aSWh2Y05BUUVMQlFBdwpUekVMTUFrR0ExVUVCaE1DVlZNeEtUQW5CZ05WQkFvVElFbHVkR1Z5Ym1WMElGTmxZM1Z5YVhSNUlGSmxjMlZoCmNtTm9JRWR5YjNWd01SVXdFd1lEVlFRREV3eEpVMUpISUZKdmIzUWdXREV3SGhjTk1qQXdPVEEwTURBd01EQXcKV2hjTk1qVXdPVEUxTVRZd01EQXdXakF5TVFzd0NRWURWUVFHRXdKVlV6RVdNQlFHQTFVRUNoTU5UR1YwSjNNZwpSVzVqY25sd2RERUxNQWtHQTFVRUF4TUNVak13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUM3QWhVb3pQYWdsTk1QRXV5TlZaTEQrSUx4bWFaNlFvaW5YU2FxdFN1NXhVeXhyNDVyK1hYSW85Y1AKUjVRVVZUVlhqSjZvb2prWjlZSThRcWxPYnZVN3d5N2JqY0N3WFBOWk9PZnR6Mm53V2dzYnZzQ1VKQ1dIK2pkeApzeFBuSEt6aG0rL2I1RHRGVWtXV3FjRlR6alRJVXU2MXJ1MlAzbUJ3NHFWVXE3WnREcGVsUURScks5TzhadXRtCk5IejZhNHVQVnltWitEQVhYYnB5Yi91QnhhM1NobGc5RjhmbkNidnhLL2VHM01IYWNWM1VSdVBNclNYQmlMeGcKWjNWbXMvRVk5NkpjNWxQL09vaTJSNlgvRXhqcW1BbDNQNTFUK2M4QjVmV21jQmNVcjJPay81bXprNTNjVTZjRwova2lGSGFGcHJpVjF1eFBNVWdQMTdWR2hpOXNWQWdNQkFBR2pnZ0VJTUlJQkJEQU9CZ05WSFE4QkFmOEVCQU1DCkFZWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CTUJJR0ExVWRFd0VCL3dRSU1BWUIKQWY4Q0FRQXdIUVlEVlIwT0JCWUVGQlF1c3hlM1dGYkxybEFKUU9ZZnI1MkxGTUxHTUI4R0ExVWRJd1FZTUJhQQpGSG0wV2VaN3R1WGtBWE9BQ0lqSUdsajI2WnR1TURJR0NDc0dBUVVGQndFQkJDWXdKREFpQmdnckJnRUZCUWN3CkFvWVdhSFIwY0RvdkwzZ3hMbWt1YkdWdVkzSXViM0puTHpBbkJnTlZIUjhFSURBZU1CeWdHcUFZaGhab2RIUncKT2k4dmVERXVZeTVzWlc1amNpNXZjbWN2TUNJR0ExVWRJQVFiTUJrd0NBWUdaNEVNQVFJQk1BMEdDeXNHQVFRQgpndDhUQVFFQk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ0Z5azVIUHFQM2hVU0Z2TlZuZUxLWVk2MTFUUjZXClBUTmxjbFF0Z2FEcXcrMzRJTDlmekxkd0FMZHVPL1plbE43a0lKK203NHV5QStlaXRSWThrYzYwN1RrQzUzd2wKaWtmbVpXNC9SdlRaOE02VUsrNVV6aEs4akNkTHVNR1lMNkt2elhHUlNnaTN5TGdqZXdRdENQa0lWejZEMlFRegpDa2NoZUFtQ0o4TXF5SnU1emx6eVpNakF2bm5BVDQ1dFJBeGVrcnN1OTRzUTRlZ2RSQ25iV1NEdFk3a2grQkltCmxKTlhvQjFsQk1FS0lxNFFEVU9Yb1JnZmZ1RGdoamUxV3JHOU1MK0hiaXNxL3lGT0d3WEQ5UmlYOEY2c3c2VzQKYXZBdXZEc3p1ZTVMM3N6ODVLK0VDNFkvd0ZWRE52Wm80VFlYYW82WjBmK2xRS2MwdDhEUVl6azFPWFZ1OHJwMgp5Sk1DNmFsTGJCZk9EQUxadllIN243ZG8xQVpsczRJOWQxUDRqbmtEclFveEIzVXFROWhWbDNMRUtRNzN4RjFPCnlLNUdoRERYOG9WZkdLRjV1K2RlY0lzSDRZYVR3N21QM0dGeEpTcXYzKzBsVUZKb2k1TGM1ZGExNDlwOTBJZHMKaENFeHJvTDErN21yeUlrWFBlRk01VGdPOXIwcnZaYUJGT3ZWMnowZ3AzNVowK0w0V1BsYnVFak4vbHhQRmluKwpIbFVqcjhnUnNJM3FmSk9RRnkvOXJLSUpSMFkvOE9td3QvOG9UV2d5MW1kZUhtbWprN2oxbllzdkM5SlNRNlp2Ck1sZGxUVEtCM3poVGhWMStYV1lwNnJqZDVKVzF6YlZXRWtMTnhFN0dKVGhFVUczc3pnQlZHUDdwU1dUVVRzcVgKbkxSYndIT29xN2hId2c9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlGWURDQ0JFaWdBd0lCQWdJUVFBRjNJVGZVNlVLNDduYXFQR1FLdHpBTkJna3Foa2lHOXcwQkFRc0ZBREEvCk1TUXdJZ1lEVlFRS0V4dEVhV2RwZEdGc0lGTnBaMjVoZEhWeVpTQlVjblZ6ZENCRGJ5NHhGekFWQmdOVkJBTVQKRGtSVFZDQlNiMjkwSUVOQklGZ3pNQjRYRFRJeE1ERXlNREU1TVRRd00xb1hEVEkwTURrek1ERTRNVFF3TTFvdwpUekVMTUFrR0ExVUVCaE1DVlZNeEtUQW5CZ05WQkFvVElFbHVkR1Z5Ym1WMElGTmxZM1Z5YVhSNUlGSmxjMlZoCmNtTm9JRWR5YjNWd01SVXdFd1lEVlFRREV3eEpVMUpISUZKdmIzUWdXREV3Z2dJaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUN0NkNSejlCUTM4NXVlSzFjb0hJZSszTGZmT0pDTWJqem1WNkI0OTNYQwpvdjcxYW03MkFFOG8yOTVvaG14RWs3YXhZLzBVRW11L0g5THFNWnNoZnRFelBMcEk5ZDE1MzdPNC94THhJWnBMCndZcUdjV2xLWm1ac2ozNDhjTCt0S1NJRzgrVEE1b0N1NGt1UHQ1bCtsQU9mMDBlWGZKbElJMVBvT0s1UENtK0QKTHRGSlY0eUFkTGJhTDlBNGpYc0RjQ0ViZGZJd1BQcVBydDNhWTZ2ckZrL0NqaEZMZnM4TDZQKzFkeTcwc250Swo0RXdTSlF4d2pRTXBvT0ZUSk93VDJlNFp2eEN6U293L2lhTmhVZDZzaHdlVTlHTng3QzdpYjF1WWdlR0pYRFI1CmJIYnZPNUJpZWViYnBKb3ZKc1hRRU9FTzN0a1FqaGI3dC9lbzk4ZmxBZ2VZanpZSWxlZmlONVlOTm5XZSt3NXkKc1IyYnZBUDVTUVhZZ2QwRnRDcldRZW1zQVhhVkNnL1kzOVc5RWg4MUx5Z1hiTktZd2FnSlpIZHVSemU2enF4WgpYbWlkZjNMV2ljVUdRU2srV1Q3ZEp2VWt5UkduV3FOTVFCOUdvWm0xcHpwUmJvWTdubjF5cHhJRmVGbnRQbEY0CkZRc0RqNDNRTHdXeVBudEtIRXR6QlJMOHh1cmdVQk44UTVOMHM4cDA1NDRmQVFqUU1OUmJjVGEwQjdyQk1EQmMKU0xlQ081aW1mV0NLb3FNcGdzeTZ2WU1FRzZLREEwR2gxZ1h4RzhLMjhLaDhoanRHcUVncWlOeDJtbmEvSDJxbApQUm1QNnpqelpON0lLdzBLS1AvMzIrSVZRdFFpMENkZDRYbitHT2R3aUsxTzV0bUxPc2JkSjFGdS83eGs5VE5EClR3SURBUUFCbzRJQlJqQ0NBVUl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FRWXcKU3dZSUt3WUJCUVVIQVFFRVB6QTlNRHNHQ0NzR0FRVUZCekFDaGk5b2RIUndPaTh2WVhCd2N5NXBaR1Z1ZEhKMQpjM1F1WTI5dEwzSnZiM1J6TDJSemRISnZiM1JqWVhnekxuQTNZekFmQmdOVkhTTUVHREFXZ0JURXA3R2tleXh4Cit0dmhTNUIxLzhRVllJV0pFREJVQmdOVkhTQUVUVEJMTUFnR0JtZUJEQUVDQVRBL0Jnc3JCZ0VFQVlMZkV3RUIKQVRBd01DNEdDQ3NHQVFVRkJ3SUJGaUpvZEhSd09pOHZZM0J6TG5KdmIzUXRlREV1YkdWMGMyVnVZM0o1Y0hRdQpiM0puTUR3R0ExVWRId1ExTURNd01hQXZvQzJHSzJoMGRIQTZMeTlqY213dWFXUmxiblJ5ZFhOMExtTnZiUzlFClUxUlNUMDlVUTBGWU0wTlNUQzVqY213d0hRWURWUjBPQkJZRUZIbTBXZVo3dHVYa0FYT0FDSWpJR2xqMjZadHUKTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBS2N3QnNsbTcvRGxMUXJ0Mk01MW9HclMrbzQ0Ky95UW9ERlZEQwo1V3hDdTIrYjlMUlB3a1NJQ0hYTTZ3ZWJGR0p1ZU43c0o3bzVYUFdpb1c1V2xIQVFVN0c3NUsvUW9zTXJBZFNXCjlNVWdOVFA1MkdFMjRIR050TGkxcW9KRmxjRHlxU01vNTlhaHkyY0kycUJETEtvYmt4L0ozdldyYVYwVDlWdUcKV0NMS1RWWGtjR2R0d2xmRlJqbEJ6NHBZZzFodG1mNVg2RFlPOEE0anF2MklsOURqWEE2VVNiVzFGelhTTHI5TwpoZThZNElXUzZ3WTdiQ2tqQ1dEY1JRSk1FaGc3NmZzTzN0eEUrRmlZcnVxOVJVV2hpRjFteXY0UTZXK0N5QkZDCkRmdnA3T09HQU42ZEVPTTQrcVI5c2Rqb1NZS0VCcHNyNkd0UEFRdzRkeTc1M2VjNQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRRFpzOE9TZGdaR0dKVmMKL0VBQ1Q5M2M4V2o2NGkxYXh1bng4ckNTTHNydnBVdUVseVVVZUdtd1RsclVHVHFyNFYvM1Fvd2xsZ1Bsa1h2awpMZ3FOWEhxVXRHZUpINTM2MXQ1SXBwak1ZbUYzTEk0SGNXdWVWQS9HVnlDUlc4WDdSVmEwbFBLVWhrUEFMeFlOCnNXOER0WUFoQmVXQzRnelJNcTRCSkJ0S1NQSEtwTUZIM0g5L2JrbEI0QS9QVTd6YjlqSWxZam9LdXE4LzBjQjkKK0F1MFNiWkRQZnBwZzh5bW1oSkplRm8xd05pUkxYbEpwbHZZQTduS2ZkQjdKMTFZN3VCaTE2bVZJUm91MGIxYgpBMUxtdlowTWhkMk1nendnRjk5UGVWdzJYeGZSK1RCTENPc3lJY3pVMmhuQzBCdmpBdG05M1pGdHdEYjZaL0RrCk8vRHJiMGlyQWdNQkFBRUNnZ0VBWW9aMDBHZ1Ixczl4YWEvUDJEd0ZFT1ZBdWFwN0ZFWkp3bkl2YnprMkp0Y00KSW1tMUlscU1tbm9icVRueHo3QWtHbWRIdmdyeW9JY0RKdldmV1BLdGwzYytGRlQyem50SUJtRS9iZUJvYytMNgpOR3drWkhkdTNEaTZTSTdjUHlmV1ljdTNMWGpHV01mMmx5UGlOaStDV1crdHUxcEtxckxoQlNzdUhxUjhxVlNvCnhtUFZYOU1ES2tzVWsyYmczWXUzbnl3OFZ3R0NUc0Zwa0hKbUJXbU1UVzBtMitkN3l1VlpOOHhNSmh1dVd0bFIKRlN4NUhDaDBzU2djdE5UM3gyQXpWRkV3VDJPdlVLQVV3OWdjKzNGWFlhS0NRamlnQithNmIwbkkrcjVaeHVNUgpyVTducjVlV1dPNis3MUoycS9LdWpBV2JNUjdTcDFuRkNEd095ZjBaWVFLQmdRRCt5S1dWR1dQMUNwUlAzRC9JCjk0SjlKdFcxUjRtUXFoSnhoS2RWRU1tbnlQUmtQNjRSbFNDZkV3TVFXaWRxVDhvd2Z0T3pEL0lBaURzdUFmWHYKR0xGYUJENk1BdXU0VUxpSEhJc0pabmtnaGh6V0h2enRGbE01ZmJBWGdnV0c5U3NMZTBlT2oxdEZocmExaDQxQgpwRzAxK1U0NXpoVW5VYmhreUNDaTBQblJod0tCZ1FEYXZjMXBFb1dnQlZIRVVBNno0VTRpVitaYkdRbmpYM29lClVBcWJiMVpXQllNOWZyN0dSS29nOXhlb2dPZVhKUzhlUlY4d2RUSlhreVQvR0VTZS95bGZxYmdjK3E0WGJnbHMKRVl1M28yMlVzM3VzV0hscFlEcCtuZHY2ZU5YUXdjUGlsdytXQjFvYXdWODVUSzhhd0FwRzM0Nk9GSHRyVFpKVwpEN3pJL2ttb3ZRS0JnUURjaXFCU0RMVnFraXJKYWhSSWlIOEtpRWdxNys2VEs3UmxVUGRyZWVta2RCMmdmVUxXCjgyaFdhaVdYelFJYlUwL29aSkFwaXA3bmVRVUpFU2RxUE15ZjU5YWdhWkxUYkFRZTZFVXQ4T2Jla1ZoNnZENGgKbDlhWWlFU2FSTEUySGhpUmlyZnBIZ3hhaFg2NGFjcUxUS0pBT3pwTWJTZ0FiZ3VZS1dlZXFCZm5Gd0tCZ0NyVApaRWNCRUZaZkZENHFLbWEvWXN2SWg5b29FYzZKWCtCVmJXNDNJeUVlWFM2S0JSSE9XYnl3ZzlwQ3VwVFYrOTZpCldGdWxabURNOXo1V1l3RDZGZ0NidXVjNWtTSVhNaE1OY0Z4WXk5aUVOMTlyeHdHQmpKSkRsOUQzSFcyTXNpeEgKeFE1cmpCR1c4R3pJZmJQd0MxTUs2OThYVlg2UnBtZmhGdVlIR3liRkFvR0FZUnhZdjMvUDFzVG1vdW93eVBpLwpYQlhzcmYwZXBjRkFQWlVHNjJIVERrMngzeUtqYU4xdk50clZiVmxtN01CN24wUHMyMloyaGY3anFYRWhyOVFJCitmVnUweEVWRGVrNEpnMlVrcHIxOUplY3VzcjNWNU9aUG0yMEVOSUYvUVpFeHpCMEZsUEhqc3h6MWdJY1lzb1IKZmMySWg2R2Mxd2gxeXY2VzBPWjJuZnM9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
File renamed without changes.
Loading

0 comments on commit cafbf92

Please sign in to comment.