Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Esta é uma documentação não divulgada para Admission Controller 1.34-dev.

Instalação de air gap

Para uma instalação de SUSE Security Admission Controller em um ambiente air-gapped, você precisa de um repositório privado da Open Container Initiative (OCI) acessível pelo seu cluster Kubernetes. Admission Controller As políticas são módulos WebAssembly, portanto você pode armazená-las em um registro compatível com OCI como artefatos OCI. Você precisa adicionar as imagens e políticas de Admission Controller a este repositório OCI. Você pode consultar uma lista de Admission Controller artefatos na página Referência de artefatos. As seções a seguir descrevem o processo.

Recomendamos o uso de Hauler. Veja nossa página de documentação do Hauler.

Alternativamente, você pode usar o processo manual listado abaixo.

Salve os gráficos do Helm localmente

Você precisa baixar os seguintes gráficos do Helm para sua estação de trabalho:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults
helm pull kubewarden/sbomscanner

Opcionalmente, você pode verificar as assinaturas dos gráficos do Helm e imagens de contêiner.

Salve as imagens de contêiner localmente

  1. Cada um dos nossos gráficos do Helm contém um imagelist.txt com as imagens de contêiner consumidas por ele e, quando aplicável, um policylist.txt com os módulos OCI Wasm das políticas que ele consome também.

    Para obtê-los, você pode fazer:

    helm pull --untar \
      kubewarden/kubewarden-crds \
      kubewarden/kubewarden-controller \
      kubewarden/kubewarden-defaults \
      kubewarden/sbomscanner

    E então concatene-os em um único arquivo:

    cat */imagelist.txt > kubewarden-images.txt
  2. Baixe kubewarden-save-images.sh e kubewarden-load-images.sh do repositório de utilitários.

  3. Salve as Admission Controller imagens do contêiner em um arquivo .tar.gz:

     ./kubewarden-save-images.sh \
       --image-list ./kubewarden-images.txt \
       --images kubewarden-images.tar.gz

    O Docker começa a baixar as imagens usadas para uma instalação em ambiente isolado. Esse processo pode levar alguns minutos. Quando concluído, seu diretório atual, onde você executou o comando, terá um tarball, kubewarden-images.tar.gz.

Salve as políticas localmente

  1. Adicione todas as políticas que deseja usar a um arquivo policies.txt:

    cat */policylist.txt > policies.txt

    Um arquivo com uma lista de políticas padrão está na Admission Controller página de lançamento.

  2. Baixe kubewarden-save-policies.sh e kubewarden-load-policies.sh do repositório kubewarden-controller.

  3. Salve as políticas em um arquivo .tar.gz:

    ./kubewarden-save-policies.sh --policies-list policies.txt

    Use kwctl para baixar as políticas. O kubewarden-policies.tar.gz arquivo contém as políticas.

Gráficos do Helm

Você precisa baixar os seguintes gráficos do Helm para sua estação de trabalho:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults

Popule o registro privado

Mova esses arquivos para o ambiente air-gapped:

  • Gráficos do Helm no formato tgz (por exemplo, kubewarden-crds-1.23.0.tgz)

  • kubewarden-policies.tar.gz,

  • kubewarden-images.tar.gz,

  • kubewarden-load-images.sh,

  • kubewarden-load-policies.sh e

  • policies.txt

    1. Carregue as Admission Controller imagens no repositório privado. Você precisa autenticar o cliente Docker contra o registro local.

       ./kubewarden-load-images.sh \
         --image-list ./kubewarden-images.txt \
         --images kubewarden-images.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT>
    2. Carregue Admission Controller políticas no registro privado. Você deve autenticar kwctl o registro local (kwctl usa o mesmo mecanismo de autenticação que docker, ou seja, um arquivo ~/.docker/config.json)

       ./kubewarden-load-policies.sh \
         --policies-list policies.txt \
         --policies kubewarden-policies.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT> \
         --sources-path sources.yml

O comando kwctl precisa do sources.yaml arquivo para se conectar a registros nessas categorias:

  • A autenticação é necessária

  • Um certificado autoassinado está sendo usado

  • Nenhuma terminação TLS é feita

Consulte a seção sobre autoridades de certificação personalizadas na documentação para aprender sobre a configuração do arquivo sources.yaml

Instale Admission Controller

Agora que seu registro privado tem tudo o que é necessário, você pode instalar Admission Controller. A única diferença em relação a uma instalação padrão de Admission Controller é que você precisa alterar o registro nas imagens de contêiner e políticas para ser o registro privado.

Instale a Admission Controller pilha:

helm install --wait -n kubewarden \
  kubewarden-crds kubewarden-crds.tgz
helm install --wait -n kubewarden \
  kubewarden-controller kubewarden-controller.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

Para usar o subgráfico Policy Reporter disponível no kubewarden-controller gráfico, você precisa definir outros valores específicos para o subgráfico em um ambiente air-gapped. Um exemplo está abaixo:

helm install --wait -n kubewarden kubewarden-controller kubewarden-controller.tgz \
    --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set auditScanner.policyReporter=true \
    --set policy-reporter.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.ui.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.image.repository=kyverno/policy-reporter \
    --set policy-reporter.ui.image.repository=kyverno/policy-reporter-ui

É necessário definir auditScanner.policyReporter para habilitar o subgráfico e mais 4 valores, para configurar o registro e o repositório onde você armazena as imagens do Policy Reporter. Para mais informações sobre os valores do subgráfico de relatório de políticas, consulte a documentação do Policy Reporter.

helm install --wait -n kubewarden \
  kubewarden-defaults kubewarden-defaults.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

Para baixar as políticas recomendadas instaladas pelo kubewarden-defaults Helm Chart de um registro diferente de global.cattle.systemDefaultRegistry, use a configuração recommendedPolicies.defaultPoliciesRegistry. Essa configuração permite que os usuários especifiquem um registro dedicado para puxar os artefatos OCI das políticas. É particularmente útil quando o repositório de imagens de contêiner deles não suporta artefatos OCI.

Para instalar e aguardar a conclusão da instalação, use o seguinte comando:

helm install --wait -n kubewarden \
  kubewarden-defaults kubewarden-defaults.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
  --set recommendedPolicies.defaultPoliciesRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

Se a recommendedPolicies.defaultPoliciesRegistry configuração não estiver definida, o global.cattle.systemDefaultRegistry é usado como o registro padrão.

Por fim, você precisa configurar o Policy Server para buscar políticas do seu registro privado. Consulte a seção usando registro privado da documentação.

Agora você pode criar Admission Controller políticas em seu cluster. As políticas devem estar disponíveis em seu registro privado.

kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
  name: privileged-pods
spec:
  module: registry://<REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policies/pod-privileged:v0.2.2
  rules:
  - apiGroups: [""]
    apiVersions: [“v1”]
    resources: [“pods”]
    operations:
    - CREATE
  mutating: false
EOF

Os PolicyServer recursos devem usar a imagem disponível em seu registro privado. Por exemplo:

apiVersion: policies.kubewarden.io/v1
kind: PolicyServer
metadata:
  name: reserved-instance-for-tenant-a
spec:
  image: <REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policy-server:v1.3.0
  replicas: 2
  serviceAccountName: sa