Skip to content

Commit 7bb8836

Browse files
committed
Add TektonResult to TektonConfig doc
This will add the instructions in TektonConfig doc how to install and manage Results component through Tekton Config TektonConfig doc and updates TektonResult doc Signed-off-by: Shiv Verma
1 parent cc1c23d commit 7bb8836

File tree

2 files changed

+80
-78
lines changed

2 files changed

+80
-78
lines changed

docs/TektonConfig.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Operator provides support for installing and managing following operator compone
1818
Other than the above components depending on the platform operator also provides support for
1919
- On both Kubernetes and OpenShift
2020
- [TektonChain](./TektonChain.md)
21+
- [TektonResult](./TektonResult.md)
2122
- On Kubernetes
2223
- [TektonDashboard](./TektonDashboard.md)
2324
- On OpenShift
@@ -113,6 +114,10 @@ The TektonConfig CR provides the following features
113114
configMaps: {}
114115
deployments: {}
115116
webhookConfigurationOptions: {}
117+
result:
118+
disabled: false
119+
is_external_db: false
120+
options: {}
116121
platforms:
117122
openshift:
118123
pipelinesAsCode:
@@ -165,8 +170,8 @@ By default, namespace would be `tekton-pipelines` for Kubernetes and `openshift-
165170

166171
This allows user to choose which all components to install on the cluster.
167172
There are 3 profiles available:
168-
- `all`: This profile will install all components (TektonPipeline, TektonTrigger and TektonChain)
169-
- `basic`: This profile will install only TektonPipeline, TektonTrigger and TektonChain component
173+
- `all`: This profile will install all components (TektonPipeline, TektonTrigger,TektonResult and TektonChain)
174+
- `basic`: This profile will install only TektonPipeline, TektonTrigger, TektonResult and TektonChain component
170175
- `lite`: This profile will install only TektonPipeline component
171176

172177
On Kubernetes, `all` profile will install `TektonDashboard` and on OpenShift `TektonAddon` will be installed.
@@ -284,6 +289,39 @@ chain:
284289
transparency.url: #value
285290
```
286291
292+
### Result
293+
294+
Result section allows user to customize the Tekton Result component, Refer to [Result Spec](https://github.com/tektoncd/operator/blob/main/docs/TektonResult.md#spec) section in TektonResult for available options.
295+
296+
Example:
297+
298+
```yaml
299+
result:
300+
disabled: false # - `disabled` : if the value set as `true`, result component will be disabled (default: `false`)
301+
targetNamespace: tekton-pipelines
302+
is_external_db: false # If it's true use external database and Result gets it's database from kubernetes secret named `tekton-results-postgres`
303+
db_host: localhost
304+
db_port: 5342
305+
db_sslmode: verify-full
306+
db_sslrootcert: /etc/tls/db/ca.crt
307+
db_enable_auto_migration: true
308+
log_level: debug
309+
logs_api: true
310+
logs_type: File
311+
logs_buffer_size: 90kb
312+
logs_path: /logs
313+
auth_disable: true
314+
logging_pvc_name: tekton-logs
315+
secret_name: # optional
316+
gcs_creds_secret_name: <value>
317+
gcc_creds_secret_key: <value>
318+
gcs_bucket_name: <value>
319+
loki_stack_name: #optional
320+
loki_stack_namespace: #optional
321+
prometheus_port: 9090
322+
prometheus_histogram: false
323+
```
324+
287325
### Pruner
288326
Pruner provides auto clean up feature for the Tekton `pipelinerun` and `taskrun` resources. In the background pruner container runs `tkn` command.
289327

docs/TektonResult.md

Lines changed: 40 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,20 @@
1-
<!--
2-
---
1+
## <!--
2+
33
linkTitle: "TektonResult"
44
weight: 5
5+
56
---
7+
68
-->
9+
710
# Tekton Result
811

912
TektonResult custom resource allows user to install and manage [Tekton Result][result].
1013

11-
TektonResult is an optional component and currently cannot be installed through TektonConfig. It has to be installed seperately.
12-
13-
To install Tekton Result on your cluster follow steps as given below:
14-
- Make sure Tekton Pipelines is installed on your cluster, using the Operator.
15-
- Generate a database root password.
16-
A database root password must be generated and stored in a [Kubernetes Secret](https://kubernetes.io/docs/concepts/configuration/secret/)
17-
before installing results. By default, Tekton Results expects this secret to have
18-
the following properties:
19-
20-
- namespace: `tekton-pipelines`
21-
- name: `tekton-results-postgres`
22-
- contains the fields:
23-
- `user=<user name>`
24-
- `password=<your password>`
25-
26-
If you are not using a particular password management strategy, the following
27-
command will generate a random password for you:
28-
Update namespace value in the command if Tekton Pipelines is installed in a different namespace..
29-
30-
```sh
31-
export NAMESPACE="tekton-pipelines"
32-
kubectl create secret generic tekton-results-postgres --namespace=${NAMESPACE} --from-literal=POSTGRES_USER=result --from-literal=POSTGRES_PASSWORD=$(openssl rand -base64 20)
33-
```
34-
- Generate cert/key pair.
35-
Note: Feel free to use any cert management software to do this!
36-
37-
Tekton Results expects the cert/key pair to be stored in a [TLS Kubernetes Secret](https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets).
38-
Update the namespace value in below export command if Tekton Pipelines is installed in a different namespace.
39-
```sh
40-
export NAMESPACE="tekton-pipelines"
41-
# Generate new self-signed cert.
42-
openssl req -x509 \
43-
-newkey rsa:4096 \
44-
-keyout key.pem \
45-
-out cert.pem \
46-
-days 365 \
47-
-nodes \
48-
-subj "/CN=tekton-results-api-service.${NAMESPACE}.svc.cluster.local" \
49-
-addext "subjectAltName = DNS:tekton-results-api-service.${NAMESPACE}.svc.cluster.local"
50-
# Create new TLS Secret from cert.
51-
kubectl create secret tls -n ${NAMESPACE} tekton-results-tls \
52-
--cert=cert.pem \
53-
--key=key.pem
54-
```
55-
- Create PVC if using PVC for logging
14+
TektonResult is installed through [TektonConfig](./TektonConfig.md) by default.
15+
16+
- Create PVC if using PVC for logging (Optional)
17+
5618
```!bash
5719
cat <<EOF > pvc.yaml
5820
apiVersion: v1
@@ -71,17 +33,15 @@ EOF
7133
kubectl apply -f pvc.yaml
7234
```
7335

74-
- Once the secrets are created create a TektonResult CR (Check ##Properties) as below.
75-
```sh
76-
kubectl apply -f config/crs/kubernetes/result/operator_v1alpha1_result_cr.yaml
77-
```
7836
- Check the status of installation using following command
7937
```sh
8038
kubectl get tektonresults.operator.tekton.dev
8139
```
8240

8341
## Spec
42+
8443
The TektonResult CR is like below:
44+
8545
```yaml
8646
apiVersion: operator.tekton.dev/v1alpha1
8747
kind: TektonResult
@@ -114,22 +74,23 @@ spec:
11474
11575
These properties are analogous to the one in configmap of tekton results api `tekton-results-api-config` documented at [api.md]:https://github.com/tektoncd/results/blob/4472848a0fb7c1473cfca8b647553170efac78a1/cmd/api/README.md
11676

117-
118-
[result]:https://github.com/tektoncd/results
119-
77+
[result]: https://github.com/tektoncd/results
12078

12179
### Property "secret_name":
80+
12281
`secret_name` - name of your custom secret or leave it as empty. It an optional property. The secret should be created by the user on the `targetNamespace`. The secret can contain `S3_` prefixed keys from the [result API properties](https://github.com/tektoncd/results/blob/fded140081468e418aeb860d16aca3306c675d8b/cmd/api/README.md). Please note: the key of the secret should be in UPPER_CASE and values should be in `string` format.
12382
The following keys are supported by this secret.
124-
* `S3_BUCKET_NAME`
125-
* `S3_ENDPOINT`
126-
* `S3_HOSTNAME_IMMUTABLE`
127-
* `S3_REGION`
128-
* `S3_ACCESS_KEY_ID`
129-
* `S3_SECRET_ACCESS_KEY`
130-
* `S3_MULTI_PART_SIZE`
83+
84+
- `S3_BUCKET_NAME`
85+
- `S3_ENDPOINT`
86+
- `S3_HOSTNAME_IMMUTABLE`
87+
- `S3_REGION`
88+
- `S3_ACCESS_KEY_ID`
89+
- `S3_SECRET_ACCESS_KEY`
90+
- `S3_MULTI_PART_SIZE`
13191

13292
#### Sample Secret File
93+
13394
```yaml
13495
apiVersion: v1
13596
kind: Secret
@@ -147,9 +108,10 @@ stringData:
147108
S3_MULTI_PART_SIZE: "5242880"
148109
```
149110

150-
151111
### GCS specific Property
112+
152113
The follow keys are needed for enabling GCS storage of logs:
114+
153115
```yaml
154116
apiVersion: operator.tekton.dev/v1alpha1
155117
kind: TektonResult
@@ -185,15 +147,18 @@ If you want to move from internal DB to external DB, please take backup of the D
185147
delete previous TektonResult CR. and recreate the fresh one with following instructions:
186148

187149
- Generate a secret with user name and password for Postgres (subsitute ${password} with your password):
150+
188151
```sh
189152
export NAMESPACE="tekton-pipelines" # Put the targetNamespace of TektonResult where it is going to be installed.
190153
kubectl create secret generic tekton-results-postgres --namespace=${NAMESPACE} --from-literal=POSTGRES_USER=result --from-literal=POSTGRES_PASSWORD=${password}
191154
```
192155

193156
- Create a TektonResult CR like below:
157+
194158
* Add `db_host` with DB url without port.
195159
* Add `db_port` with your DB port.
196160
* Set `is_external_db` to true.
161+
197162
```yaml
198163
apiVersion: operator.tekton.dev/v1alpha1
199164
kind: TektonResult
@@ -205,14 +170,12 @@ spec:
205170
db_user: result
206171
db_host: tekton-results-postgres-external-service.pg-redhat.svc.cluster.local
207172
is_external_db: true
208-
...
209173
```
210174

211175
### Securing the DB connection
212176

213177
To secure the DB connection using self-segned certificate or using certificate signed by 3rd party CA (e.g AWS RDS), one can provide path to the DB SSL root certificate, mounted and available on the Results API pod. The configuration will look like:
214178

215-
216179
```yaml
217180
apiVersion: operator.tekton.dev/v1alpha1
218181
kind: TektonResult
@@ -238,10 +201,11 @@ and bad for performance. It's better to use forwarders like Vector, Promtail, Fl
238201

239202
#### Loki
240203

241-
You can either use Grafana's [Helm Repo](https://grafana.com/docs/loki/latest/setup/install/helm/) or operator from [OperatorHub](https://operatorhub.io/operator/loki-operator) to install Loki.
204+
You can either use Grafana's [Helm Repo](https://grafana.com/docs/loki/latest/setup/install/helm/) or operator from [OperatorHub](https://operatorhub.io/operator/loki-operator) to install Loki.
242205
Installing via operator simplies certain operations for Tekton Operator. You just need to configure `lokistack_name` and `lokistack_namespace`.
243206

244207
In case of helm installation, you will need to configure options field to configure Results API configMap `tekton-results-api-config`:
208+
245209
```yaml
246210
LOGS_API
247211
LOGGING_PLUGIN_PROXY_PATH
@@ -260,6 +224,7 @@ Please consult the docs [here](https://github.com/tektoncd/results/blob/main/doc
260224
These fields allow you to configure how Tekton Results interacts with your Loki backend.
261225

262226
You might need to configure following environment variable to Tekton Results API deployment if you are using some custom CA to generate TLS certificate:
227+
263228
```yaml
264229
LOGGING_PLUGIN_CA_CERT
265230
```
@@ -270,14 +235,12 @@ LOGGING_PLUGIN_CA_CERT
270235

271236
You need to configure forwarder systems to add labels for namespace, pass TaskRun UID/PipelineRun UID in pods and a common label <key:value> alongwith logs from nodes.
272237

273-
A sample configuration for vector: [values.yaml](https://github.com/tektoncd/results/blob/main/test/e2e/loki_vector/vector.yaml).
238+
A sample configuration for vector: [values.yaml](https://github.com/tektoncd/results/blob/main/test/e2e/loki_vector/vector.yaml).
274239

275240
### OpenShift (LokiStack + OpenShift Logging)
276241

277-
278242
To configure LokiStack with TektonResult, you can use the `lokistack_name` and `lokistack_namespace` properties in the TektonResult custom resource. Here's how to do it:
279243

280-
281244
1. First, ensure that you have LokiStack installed in your cluster.
282245

283246
2. Then, create or update your TektonResult CR with the following properties:
@@ -293,16 +256,17 @@ spec:
293256
lokistack_name: your-lokistack-name
294257
lokistack_namespace: your-lokistack-namespace
295258
```
259+
296260
Replace your-lokistack-name with the name of your LokiStack instance and your-lokistack-namespace with the namespace where LokiStack is installed.
297261

298262
By setting these properties, Operator will configure Tekton Result to use the specified LokiStack instance for log retrieval.
299263

300-
301264
#### OpenShift Logging
302265

303266
Install the openshift logging operator by following this: [Deploying Cluster Logging](https://docs.openshift.com/container-platform/4.16/observability/logging/cluster-logging-deploying.html#logging-loki-gui-install_cluster-logging-deploying)
304267

305268
If you are installing OpenShift Logging Operator only for TaskRun Logs, then you also need to configure a ClusterLogForwarder:
269+
306270
```yaml
307271
apiVersion: "logging.openshift.io/v1"
308272
kind: ClusterLogForwarder
@@ -311,15 +275,15 @@ metadata:
311275
namespace: openshift-logging
312276
spec:
313277
inputs:
314-
- name: only-tekton
315-
application:
316-
selector:
317-
matchLabels:
318-
app.kubernetes.io/managed-by: tekton-pipelines
278+
- name: only-tekton
279+
application:
280+
selector:
281+
matchLabels:
282+
app.kubernetes.io/managed-by: tekton-pipelines
319283
pipelines:
320284
- name: enable-default-log-store
321-
inputRefs: [ only-tekton ]
322-
outputRefs: [ default ]
285+
inputRefs: [only-tekton]
286+
outputRefs: [default]
323287
```
324288

325289
### Debugging

0 commit comments

Comments
 (0)