OpenShift - Tekton

O autor original desta página é Haroun

O que é o tekton

De acordo com a documentação: Tekton é um framework open-source poderoso e flexível para criar sistemas de CI/CD, permitindo que os desenvolvedores construam, testem e implementem em provedores de nuvem e sistemas locais. Tanto Jenkins quanto Tekton podem ser usados para testar, construir e implantar aplicativos, no entanto, o Tekton é nativo da nuvem.

Com o Tekton, tudo é representado por arquivos YAML. Os desenvolvedores podem criar Recursos Personalizados (CR) do tipo Pipelines e especificar vários Tasks neles que desejam executar. Para executar um Pipeline, recursos do tipo PipelineRun devem ser criados.

Quando o tekton é instalado, uma conta de serviço (sa) chamada pipeline é criada em cada namespace. Quando um Pipeline é executado, um pod será iniciado usando esta sa chamada pipeline para executar as tarefas definidas no arquivo YAML.

Documentação do Tekton sobre Pipelines

As capacidades da conta de serviço do Pipeline

Por padrão, a conta de serviço do pipeline pode usar a capacidade pipelines-scc. Isso ocorre devido à configuração padrão global do tekton. Na verdade, a configuração global do tekton também é um arquivo YAML em um objeto openshift chamado TektonConfig que pode ser visto se você tiver algumas funções de leitura no cluster.

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "pipelines-scc"

Em qualquer namespace, se você conseguir obter o token da conta de serviço do pipeline, poderá usar pipelines-scc.

A Configuração Incorreta

O problema é que o scc padrão que a conta de serviço do pipeline pode usar é controlável pelo usuário. Isso pode ser feito usando um rótulo na definição do namespace. Por exemplo, se eu puder criar um namespace com a seguinte definição yaml:

apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
annotations:
operator.tekton.dev/scc: privileged

O operador tekton dará à conta de serviço do pipeline no test-namespace a capacidade de usar o scc privilegiado. Isso permitirá a montagem do nó.

A solução

Documentos do Tekton sobre como restringir a substituição do scc adicionando um rótulo no objeto TektonConfig.

Documento do Tekton sobre scc

Este rótulo é chamado max-allowed

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "restricted-v2"
maxAllowed: "privileged"

Last updated