Como implantar aplicativos Kubernetes em clusters não-GKE

Se você quiser implantar um aplicativo do Kubernetes em configurações de cluster que não sejam do GKE, como um cluster do Anthos que executa o GKE On-prem ou um cluster que executa o Istio, conclua as tarefas nesta seção, conforme aplicável.

Dependendo do aplicativo que você está implantando, talvez seja necessário realizar etapas extras para executar o aplicativo no seu cluster. Consulte a documentação do fornecedor do aplicativo para mais informações sobre como configurá-lo.

Acesse os apps Anthos no Google Cloud Marketplace

Como implantar em clusters que executam o Istio

Nos clusters que executam o Istio, as conexões externas com serviços de terceiros, como repositórios de pacotes de sistema operacional, são bloqueadas por padrão. É necessário configurar o tráfego de saída do Istio para ativar o acesso a serviços externos.

Como implantar o GKE On-Prem

Só é possível implantar clusters do GKE On-Prem em aplicativos do Cloud Marketplace compatíveis com essa configuração. Para verificar se um aplicativo é compatível com o GKE On-Prem, abra a listagem do Cloud Marketplace do aplicativo e procure a seguinte instrução na Visão geral: "O aplicativo é compatível com a implantação do GKE On-Prem".

Depois de verificar se o aplicativo é compatível com o GKE On-Prem, conclua estas tarefas antes de implantar o aplicativo:

Depois de concluir essas tarefas, abra a listagem do Cloud Marketplace do aplicativo e siga as etapas para implantar o aplicativo.

Configurar o acesso de rede ao Container Registry

Para fazer o download das imagens de contêiner do aplicativo, verifique se o cluster tem acesso de rede ao Container Registry. Seu host de cluster precisa poder executar ping em marketplace.gcr.io. Para ativar o acesso, talvez seja necessário executar um ou mais dos seguintes procedimentos:

Configurar a autenticação do Docker para acessar o Container Registry

Para conceder ao cluster do GKE On-Prem acesso a imagens de aplicativos no Container Registry, você precisa criar uma chave de conta de serviço do Google Cloud e anotar o namespace do aplicativo com a chave. Em seguida, é feito um patch na chave como um imagePullSecret para o namespace da conta de serviço padrão do Kubernetes (KSA), no momento da implantação do aplicativo.

Na primeira vez que você implantar um aplicativo em um cluster GKE On-Prem, também será necessário criar um namespace chamado application-system para os componentes do Cloud Marketplace e aplicar um imagePullSecret à conta de serviço padrão para o namespace.

Siga estas etapas para configurar a autenticação no Container Registry:

  1. Crie uma nova conta de serviço do Google Cloud. Não é necessário atribuir nenhum papel à conta de serviço.

    Para ver as etapas de criação de uma conta de serviço, consulte Como criar e gerenciar contas de serviço.

  2. Crie uma chave para a conta de serviço e faça o download dela como um arquivo JSON. Para ver as etapas de criação e download da chave, consulte Como criar e gerenciar chaves de contas de serviço.

  3. Se aplicável, faça upload da chave JSON na estação de trabalho que você usa para se conectar ao cluster do GKE On-Prem.

  4. Se você estiver implantando um aplicativo do Cloud Marketplace pela primeira vez, siga estas etapas para configurar o namespace application-system com um secret para acessar o Container Registry. Se você já configurou o namespace, pule esta etapa.

    1. Crie um namespace application-system no cluster.

    2. Use o comando a seguir para criar o secret que contém um imagePullSecret para application-system:

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace="application-system" \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat $JSON_KEY_FILENAME)"
      
    3. Aplique isso imagePullSecret à ServiceAccount padrão no namespace application-system, usando o comando a seguir:

      kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
      
  5. Para cada namespace em que você quiser implantar um aplicativo, crie um novo secret do Kubernetes e anote o namespace. Não é possível reutilizar um secret de outro namespace.

    1. Crie um secret do Kubernetes para acessar o Container Registry usando a chave da conta de serviço do Google Cloud:

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace=$NAMESPACE_NAME \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat ~/$JSON_KEY_FILENAME)"
      

      Em que $NAMESPACE_NAME é o namespace que você quer usar para o aplicativo.

    2. Anote o namespace do aplicativo usando o comando a seguir:

      kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
      

      Use esse namespace quando implantar o app no Cloud Marketplace, conforme descrito em Como implantar um app Kubernetes.