198 lines
4.2 KiB
Bash
198 lines
4.2 KiB
Bash
kubectl create namespace tekton-pipelines
|
||
|
||
kubectl apply -f https://infra.tekton.dev/tekton-releases/pipeline/previous/v1.7.0/release.yaml
|
||
|
||
kubectl edit cm feature-flags -n tekton-pipelines
|
||
data:
|
||
enable-api-fields: "stable"
|
||
disable-affinity-assistant: "false"
|
||
enable-tekton-oci-bundles: "true"
|
||
enable-custom-tasks: "true"
|
||
|
||
|
||
kubectl edit cm config-defaults -n tekton-pipelines
|
||
data:
|
||
default-timeout-minutes: "60"
|
||
default-service-account: "tekton-sa"
|
||
|
||
cat <<EOF | cat > tekton-sa.yaml -
|
||
apiVersion: v1
|
||
kind: ServiceAccount
|
||
metadata:
|
||
name: tekton-sa
|
||
namespace: tekton-pipelines
|
||
EOF
|
||
|
||
kubectl apply -f tekton-sa.yaml
|
||
|
||
#STEP 1– Creare Robot Account in Harbor
|
||
#Harbor UI → Projects → (es. library o apps) → Robot Accounts
|
||
#Nome: k8s-pull
|
||
#Permessi:
|
||
#✔️ FULL permission
|
||
|
||
|
||
kubectl create secret docker-registry harbor-regcred \
|
||
-n tekton-pipelines \
|
||
--docker-server=harbor.italiadatacenter.com \
|
||
--docker-username=robot$tekton \
|
||
--docker-password=pyyMRe2kRIp6LQmIh8jaSWquL1mDtz04 \
|
||
--docker-email=harbor@italiadatacenter.com
|
||
|
||
|
||
cat <<EOF > config.json
|
||
{
|
||
"auths": {
|
||
"harbor.italiadatacenter.com": {
|
||
"username": "robot\$tekton",
|
||
"password": "pyyMRe2kRIp6LQmIh8jaSWquL1mDtz04",
|
||
"email": "harbor@italiadatacenter.com",
|
||
"auth": "$(echo -n 'robot$tekton:pyyMRe2kRIp6LQmIh8jaSWquL1mDtz04' | base64)"
|
||
}
|
||
}
|
||
}
|
||
EOF
|
||
|
||
|
||
kubectl create secret generic harbor-push-secret -n tekton-pipelines --from-file=config.json=config.json
|
||
|
||
|
||
|
||
|
||
kubectl patch sa tekton-sa \
|
||
-n tekton-pipelines \
|
||
-p '{"imagePullSecrets":[{"name":"harbor-regcred"}]}'
|
||
|
||
cat <<EOF | cat > tekton-workspace.yaml -
|
||
apiVersion: v1
|
||
kind: PersistentVolumeClaim
|
||
metadata:
|
||
name: tekton-workspace
|
||
namespace: tekton-pipelines
|
||
spec:
|
||
accessModes:
|
||
- ReadWriteOnce
|
||
storageClassName: csi-rbdfs-sc
|
||
resources:
|
||
requests:
|
||
storage: 10Gi
|
||
EOF
|
||
|
||
kubectl apply -f tekton-workspace.yaml -n tekton-pipelines
|
||
|
||
#Tekton Triggers
|
||
kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml -n tekton-pipelines
|
||
|
||
#Tekton Dashboard
|
||
kubectl apply -f https://storage.googleapis.com/tekton-releases/dashboard/latest/release.yaml -n tekton-pipelines
|
||
|
||
cat <<EOF | cat > tekton-ingress.yaml -
|
||
apiVersion: networking.k8s.io/v1
|
||
kind: Ingress
|
||
metadata:
|
||
name: tekton-dashboard
|
||
namespace: tekton-pipelines
|
||
annotations:
|
||
kubernetes.io/ingress.class: "nginx"
|
||
cert-manager.io/cluster-issuer: "letsencrypt-production"
|
||
spec:
|
||
tls:
|
||
- hosts:
|
||
- tekton.pigreco66.it
|
||
secretName: myapp-tls
|
||
rules:
|
||
- host: tekton.pigreco66.it
|
||
http:
|
||
paths:
|
||
- path: /
|
||
pathType: Prefix
|
||
backend:
|
||
service:
|
||
name: tekton-dashboard
|
||
port:
|
||
number: 9097
|
||
EOF
|
||
|
||
cat <<EOF | cat > tekton-httproute.yaml -
|
||
apiVersion: gateway.networking.k8s.io/v1
|
||
kind: HTTPRoute
|
||
metadata:
|
||
name: tekton
|
||
namespace: tekton-pipelines
|
||
spec:
|
||
hostnames:
|
||
- tekton.italiadatacenter.com
|
||
parentRefs:
|
||
- name: main-gateway
|
||
namespace: nginx-gateway
|
||
rules:
|
||
- matches:
|
||
- path:
|
||
type: PathPrefix
|
||
value: /
|
||
backendRefs:
|
||
- name: tekton-dashboard
|
||
port: 9097
|
||
EOF
|
||
|
||
kubectl apply -f tekton-httproute.yaml -n tekton-pipelines
|
||
|
||
kubectl label namespace tekton-pipelines \
|
||
pod-security.kubernetes.io/enforce=privileged \
|
||
pod-security.kubernetes.io/audit=privileged \
|
||
pod-security.kubernetes.io/warn=privileged \
|
||
--overwrite
|
||
|
||
|
||
#installazione cli
|
||
|
||
curl -LO https://github.com/tektoncd/cli/releases/download/v0.43.0/tkn_0.43.0_Linux_x86_64.tar.gz
|
||
tar xvf tkn_0.43.0_Linux_x86_64.tar.gz
|
||
sudo mv tkn /usr/local/bin/
|
||
|
||
|
||
#TEST
|
||
|
||
|
||
|
||
cat <<EOF | cat > tekton-test.yaml -
|
||
apiVersion: tekton.dev/v1
|
||
kind: Task
|
||
metadata:
|
||
name: hello
|
||
namespace: tekton-pipelines
|
||
spec:
|
||
steps:
|
||
- name: echo
|
||
image: alpine
|
||
script: |
|
||
echo "Tekton OK"
|
||
---
|
||
apiVersion: tekton.dev/v1
|
||
kind: Pipeline
|
||
metadata:
|
||
name: hello-pipeline
|
||
namespace: tekton-pipelines
|
||
spec:
|
||
tasks:
|
||
- name: hello
|
||
taskRef:
|
||
name: hello
|
||
---
|
||
apiVersion: tekton.dev/v1
|
||
kind: PipelineRun
|
||
metadata:
|
||
name: hello-pipeline-run
|
||
spec:
|
||
pipelineRef:
|
||
name: hello-pipeline
|
||
params:
|
||
- name: username
|
||
value: "Tekton"
|
||
EOF
|
||
kubectl apply -f tekton-test.yaml -n tekton-pipelines
|
||
|
||
|
||
|
||
|