Gerenciar serviços do Google

O Distributed Cloud conectado oferece suporte à implantação de vários serviços Google Cloud . Essas cargas de trabalho de serviço são executadas em contêineres do Kubernetes nos clusters do Distributed Cloud conectado.

Serviços com suporte Google Cloud

O Distributed Cloud conectado oferece suporte à implantação dos seguintes Google Cloud serviços:

Tipo de serviço Incluído nos custos do GDC conectado Faturado separadamente
Computação Google Distributed Cloud somente de software
Ambiente de execução de VM no Google Distributed Cloud
Sistemas operacionais convidados
(é necessário adquirir suas próprias licenças)
Armazenamento Interface de armazenamento em contêineres (CSI, na sigla em inglês)
Armazenamento híbrido
Armazenamento definido por software (SDS),
como o Symcloud Storage
(é necessário adquirir suas próprias licenças)
Rede API Edge Network
Suporte a VLAN
Plug-ins de interface de rede personalizada (CNI) do GKE
Balanceador de carga L4 agrupado do GKE
Não relevante
IA/ML Como implantar modelos do AutoML em contêineres Não relevante
Banco de dados Nenhum AlloyDB Omni (prévia)
Soluções de banco de dados de terceiros, como o MongoDB
(é necessário adquirir suas próprias licenças)
Observabilidade Cloud Logging
Cloud Monitoring
API Cloud Logging Registros e métricas do GDCc
Prometheus para observabilidade desconectada
Registros e métricas personalizados no nível do aplicativo
Gerenciamento de configuração Config Sync
Usar pacotes de frota no Distributed Cloud conectado
Pacotes de frota (prévia)
Não relevante
Gerenciamento Painel do Google Kubernetes Engine no Google Cloud console
Gateway de conexão
A ferramenta local kubectl
Upgrades de software do Distributed Cloud conectado
Não relevante
Segurança Integração do Cloud Key Management Service
Unidades de disco auto criptografadas (SED)
Identidade da carga de trabalho da frota
Registro de auditoria
Não relevante

Pré-requisitos

Antes de implantar Google Cloud serviços no Distributed Cloud conectado, é necessário concluir os pré-requisitos listados nesta seção.

Receber credenciais do cluster

Use o comando a seguir para receber as credenciais de acesso ao cluster de destino:

 gcloud container hub memberships get-credentials CLUSTER_ID \
       --project="PROJECT_ID"

Substitua:

  • CLUSTER_ID: o nome do cluster de destino.
  • PROJECT_ID: o ID do projeto de destino. Google Cloud

Criar ou selecionar um cluster

Se você ainda não fez isso, crie um cluster do Distributed Cloud conectado conforme descrito em Criar um cluster. Ao criar o cluster, especifique pelo menos oito endereços IP virtuais (VIPs). Esses VIPs serão usados pelos contêineres do Kubernetes que executam suas Google Cloud cargas de trabalho de serviço.

Se você estiver usando um cluster atual, use o comando a seguir para verificar se há VIPs suficientes disponíveis nele:

 kubectl get cluster --all-namespaces -o jsonpath="{.items[0].spec.loadBalancer.addressPools}"

O comando retorna uma saída semelhante a esta:

[
  {
    "addresses": [
      "10.200.11.188-10.200.11.196"
    ],
    "name": "loadBalancerAddressPool-1"
  }
]

Se houver VIPs insuficientes provisionados no cluster, o erro a seguir vai aparecer, em que n é o número necessário de VIPs e m é o número de VIPs descobertos no cluster:

Cluster has less than n external IPs, got m.

Se você receber esse erro, exclua e recrie o cluster com um número suficiente de VIPs.

Configurar o Google Cloud subdomínio de serviço

Antes de implantar o primeiro Google Cloud serviço em uma zona do Distributed Cloud conectado, você tem a opção de personalizar o subdomínio em que todos os Google Cloud serviços implantados nessa zona vão detectar conexões. Não é possível modificar esse subdomínio depois de implantar pelo menos um serviço nessa zona do Distributed Cloud.

Use o comando a seguir para conferir a configuração do subdomínio:

kubectl -n dns-system get celldns cell-dns -o yaml

O comando retorna uma saída semelhante a esta:

apiVersion: system.private.gdc.goog/v1alpha1
kind: CellDNS
metadata:
  name: cell-dns
  namespace: dns-system
spec:
  delegatedSubdomain: private.goog

Use o comando a seguir para modificar a configuração do subdomínio:

kubectl -n dns-system edit celldns cell-dns

Implantar um Google Cloud serviço no Distributed Cloud conectado

Para implantar um Google Cloud serviço no cluster do Distributed Cloud conectado, siga as etapas de implantação descritas na documentação desse serviço.

Configurar o serviço implantado Google Cloud

Esta seção descreve as etapas de configuração pós-implantação que você pode concluir com base nos requisitos de negócios.

Encaminhar consultas DNS do DNS interno para o DNS do cluster

Ao implantar um Google Cloud serviço no cluster do Distributed Cloud conectado, um servidor DNS dedicado a esse serviço é implantado no cluster. Recomendamos que você encaminhe as consultas DNS do subdomínio do serviço para o servidor DNS recém-criado no cluster.

  1. Use os comandos a seguir para receber o subdomínio do cluster:

    CLUSTER_SUBDOMAIN=$(kubectl get configmap -n \
        $(kubectl get clusters -A -o jsonpath="{.items[0].metadata.namespace}") \
        dns-prefix -o jsonpath="{.data.dnsPrefix}")
    DELEGATED_SUBDOMAIN=$(kubectl get celldns -n dns-system cell-dns -o \
      jsonpath="{.spec.delegatedSubdomain}")
    CLUSTER_FQDN="${CLUSTER_SUBDOMAIN?}.${DELEGATED_SUBDOMAIN?}"
    echo "${CLUSTER_FQDN?}"
    

    O último comando retorna uma saída semelhante a esta:

    my-zone.google.private.goog
    
  2. Use o comando a seguir para receber o VIP do servidor DNS no cluster:

    DNS_EXT_IP=$(k -n dns-system get service gpc-coredns-external-tcp -o "jsonpath={.status.loadBalancer.ingress[0].ip}")
    
  3. Configure o servidor DNS interno para encaminhar consultas DNS do serviço implantado Google Cloud para o VIP recebido na etapa anterior. Exemplo:

    • Para dnsmasq, adicione o seguinte a /etc/dnsmasq.conf:

      server=/${CLUSTER_FQDN?}/${DNS_EXT_IP?}
      
    • Para o CoreDNS, adicione o seguinte ao Corefile:

      ${CLUSTER_FQDN?}:53 {
        errors
        cache 30
        forward . ${DNS_EXT_IP?} {
          max_concurrent 1000
        }
      }
      

Testar a resolução de DNS

Use o comando dig a seguir para testar a resolução de domínio adequada. Preste atenção especial à ANSWER SECTION:

 dig "ais-core.${CLUSTER_FQDN?}"

O comando retorna uma saída semelhante a esta:

...
;; ANSWER SECTION:
ais-core.my-zone.google.private.goog. 300 IN A 10.200.0.0
...

Recuperar o certificado autoassinado do serviço implantado Google Cloud

Ao implantar um Google Cloud serviço no cluster do Distributed Cloud conectado, o Distributed Cloud conectado emite um certificado autoassinado que é usado para criptografar o tráfego de rede desse serviço. Recomendamos que você recupere esse certificado e configure seu ambiente de negócios para confiar nele.

Para receber esse certificado no formato codificado em PEM, use o comando a seguir:

 kubectl get secret -n cert-manager-cluster-resources web-ca-cert -o jsonpath="{.data.ca\.crt}" | base64 -d

O Distributed Cloud conectado gera vários pacotes de confiança em todo o cluster. Esses pacotes de confiança são armazenados como ConfigMaps em todos os namespaces do cluster. São elas:

  • trust-store-internal-only. Contém autoridades de certificação (ACs) para serviços internos do Distributed Cloud conectado.
  • trust-store-root-ext. Contém todas as ACs em trust-store-root-ext, além da AC que assinou o certificado autoassinado do serviço de destino Google Cloud . Monte esse pacote de confiança em um pod se ele precisar acessar o serviço Google Cloud de destino.
  • trust-store-user-ext. Contém todas as ACs em trust-store-root-ext, além de todas as ACs adicionadas manualmente. Monte esse pacote em um pod se ele precisar acessar o serviço de destino Google Cloud e todos os recursos internos que usam certificados assinados pelas ACs adicionadas manualmente.

Use o comando a seguir para conferir o ConfigMap de destino:

 kubectl -n default get configmap trust-store-user-root-ext -o yaml

A saída de exemplo a seguir mostra um recurso ConfigMap trust-store-user-root-ext típico:

apiVersion: v1
binaryData:
  ca.jks: WW91IGFyZSBhd2Vzb21lIQo=
data:
  ca.crt: |-
    -----BEGIN CERTIFICATE-----
    WW91IGFyZSBncmVhdCEK
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    WW91IGFyZSBmYW50YXN0aWMhCg==
    -----END CERTIFICATE-----
kind: ConfigMap
metadata:
  labels:
    trust.cert-manager.io/bundle: trust-store-user-root-ext
  name: trust-store-user-root-ext
  namespace: default

Configurar um serviço Google Cloud implantado para confiar nos seus próprios certificados

É possível criar um secret TLS no cluster do Distributed Cloud conectado e fazer a anotação dele com a anotação security.private.gdc.goog/bundles=trust-store-user-root-ext no namespace cert-manager-cluster-resources. Isso permite que o serviço implantado Google Cloud confie nos seus serviços internos de terceiros para facilitar a troca de dados entre eles.

Quando você aplica esse secret ao cluster, o serviço implantado confia no certificado de CA armazenado no arquivo ca.crt referenciado no secret. Google Cloud Exemplo:

apiVersion: v1
data:
  ca.crt: base64EncodedCaCert
  tls.crt: base64EncodedCert
  tls.key: base64EncodedKey
kind: Secret
metadata:
  annotations:
    security.private.gdc.goog/bundles: trust-store-user-root-ext
  name: my-corporate-cert
  namespace: cert-manager-cluster-resources
type: kubernetes.io/tls

Configurar um provedor de autenticação

É possível configurar um provedor de autenticação para facilitar o login pela interface do serviço implantado Google Cloud . O exemplo a seguir mostra uma configuração para um OpenID Connect provedor:

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: "google-oidc"
    oidc:
      clientID: "my-supersecret-client-id.apps.googleusercontent.com"
      clientSecret: "my-supersecret-secret"
      issuerURI: "https://accounts.google.com"
      scopes: "email"
      userClaim: "email"
  name: "default"

Para mais informações, consulte Configurar o Serviço de identidade do GKE para clusters individuais.

Usar um serviço implantado Google Cloud

Consulte a documentação do serviço Google Cloud implantado para saber como configurá-lo para atender aos requisitos de negócios.

Remover um serviço implantado Google Cloud

Para remover um serviço Google Cloud implantado do cluster do Distributed Cloud conectado, siga as etapas na documentação desse serviço. Se você concluiu alguma das etapas opcionais pós-implantação descritas nesta página, faça o seguinte:

  • Desative o encaminhamento de DNS para o subdomínio do serviço no DNS interno.
  • Desative a confiança no certificado autoassinado do serviço sempre que essa confiança tiver sido estabelecida.