Segurança com o GKE Sandbox

Este documento descreve como configurar a veiculação do Knative em execução no Google Kubernetes Engine (GKE) para usar o GKE Sandbox e melhorar o isolamento de cargas de trabalho do kernel do host.

Adicionar um pool de nós do GKE Sandbox a um cluster atual do Knative serving

Siga as etapas para adicionar um pool de nós ativado para uso GKE Sandbox ao cluster atual do Knative serving. É aqui que as cargas de trabalho que você aceitou para usar o GKE Sandbox são executadas.

Implantar uma carga de trabalho no pool de nós do GKE Sandbox

Quando você tiver um cluster do GKE com um nó ativado para o GKE Sandbox pool, atualize a configuração do Knative serving. Além disso, atualize cada especificação de serviço para usar os novos nós. Essas atualizações são necessárias apenas uma vez.

Ativar a sinalização de recurso da classe de tempo de execução

Nesta seção, você ativa a classe de ambiente de execução do Kubernetes usando sinalizações de extensão e o recurso Knative no ConfigMap config-features no namespace knative-serving. Para ativar a classe de ambiente de execução, defina a sinalização ConfigMap kubernetes.podspec-runtimeclassname como enabled. Para mais informações, consulteClasse de ambiente de execução do Kubernetes eComo configurar sinalizações no KnativeRecursos e extensões documentação.

  1. Abra o ConfigMap config-features para edição:

    kubectl edit configmap config-features -n knative-serving
    
  2. Adicione a flag de recurso kubernetes.podspec-runtimeclassname: enabled ao campo data.

  3. Como alternativa às etapas anteriores, execute o seguinte comando para corrigir essa sinalização nos recursos do Knative:

    kubectl patch configmap config-features \
        --type='json' \
        -p="[{'op': 'replace', 'path': '/data/kubernetes.podspec-runtimeclassname', 'value': 'enabled'}]" \
        -n knative-serving
    
  4. Se quiser verificar suas edições, execute o seguinte comando para ver o ConfigMap:

    kubectl get configmap config-features -n knative-serving -o yaml
    

    O ConfigMap vai ser semelhante a este:

    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: config-features
        namespace: knative-serving
        labels:
            serving.knative.dev/release: v0.22.0
    data:
        kubernetes.podspec-runtimeclassname: enabled
    

Implantar um serviço configurado para ser executado no GKE Sandbox

Depois de ativar a sinalização de recurso da classe de execução, crie serviços que especifiquem um runtimeClassName na especificação. Defina runtimeClassName como gvisor para indicar que um serviço precisa ser executado no pool de nós do GKE Sandbox.

.
  1. Implante um aplicativo Knative "Hello World" executando o seguinte comando:

    cat <<EOF | kubectl apply -f -
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        name: helloworld-go
    spec:
        template:
            spec:
                runtimeClassName: gvisor
                containers:
                    -   image: gcr.io/knative-samples/helloworld-go
                        env:
                        -   name: TARGET
                            value: "gVisor User"
    EOF
    

    Se o recurso de nome de classe de ambiente de execução do Kubernetes estiver ativado, o comando terminará sem erros.

  2. Execute os pods do serviço em execução e da classe de ambiente de execução configurada:

    kubectl get pods \
        -o=custom-columns='NAME:.metadata.name,RUNTIME CLASS:.spec.runtimeClassName,STATUS:.status.phase'
    

    A saída será semelhante a esta:

    NAME                                              RUNTIME CLASS   STATUS
    helloworld-go-00001-deployment-55f58477f-fxm6m    gvisor          Running