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.

Objetivos

  • Saiba como ativar o GKE Sandbox no seu cluster do Knative serving.
  • Implante um serviço especificado para ser executado em nós em sandbox.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

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
    

A seguir

Depois de verificar se é possível implantar apps não confiáveis no pool de nós do GKE Sandbox recém-criado, adicione runtimeClassName: gvisor às especificações do Kubernetes para outros serviços não confiáveis que você quer executar no nó do GKE Sandbox. piscinas.

Mais informações: