Como registrar recursos

Registrar máquinas de inventário

Para que o administrador da plataforma crie um cluster de usuário, o Anthos precisa de um pool de máquinas inativas disponíveis. Nesta seção, você registra máquinas de inventário no cluster do administrador do Anthos para que o administrador da plataforma use-as posteriormente para criar um cluster de usuário. Essas máquinas precisam atender aos mesmos requisitos dos nós do cluster do administrador.

kubectl apply -f <path/to/example-machine.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

Exemplo:

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: InventoryMachine
metadata:
  name: <ip address of the machine. e.g., 10.200.0.10>
  labels:
    "mykey": "myvalue"
    "rack": "r1020"
spec:
  address: <ip address of the machine. e.g., 10.200.0.10>

Os labels são pares de chave-valor de forma livre anexados ao recurso. Eles podem ser usados posteriormente no centro de gerenciamento para filtrar máquinas. Por exemplo, é possível usar os "labels" para identificar o local do rack, configurações especiais de hardware etc.

[Opcional] Como usar chaves SSH diferentes para máquinas de inventário

Por padrão, o modo particular do Anthos usa o ssh-key fornecido por sshPrivateKeyPath (usado para acessar máquinas do cluster de administrador) para acessar essas máquinas de inventário. Para ter melhor isolamento entre máquinas de cluster de administrador e máquinas de inventário (usadas para clusters de usuário), você pode usar uma chave ssh diferente para máquinas de inventário. Crie-os antes dos clusters de usuários de que você precisará.

  1. Distribua a chave pública SSH para todas as máquinas de inventário.

  2. Armazene a chave privada SSH como secret no cluster de administrador, por exemplo, user-cluster-ssh-key

    kubectl create secret generic user-cluster-ssh-key -n anthos-creds --kubeconfig=${ADMIN_KUBECONFIG} \
      --from-file=id_rsa=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
    
  3. Ao criar clusters de usuários, especifique o secret criado na etapa 1 (ou user-cluster-ssh-key) no namespace anthos-creds.

    Isso é aceito apenas quando são criados clusters com a API. Adicione a chave SSH na definição do cluster dentro do arquivo yaml do cluster do usuário como sshKeySecret e especifique imagePullSecret, por exemplo:

      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: <cluster-name>
        namespace: cluster-<cluster-name>
      spec:
        type: user
        credentials:
          sshKeySecret:
            name: user-cluster-ssh-key
            namespace: anthos-creds
          ....
        nodeAccess:
          loginUser: <login user name>
          ....
    

Registrar pool de endereços VIP

Para que o administrador da plataforma crie um cluster de usuário diferente de InventoryMachines, o Anthos precisa de um pool de todos os IPs virtuais disponíveis. Ele é usado pela IU do centro de gerenciamento para informar ao administrador da plataforma quais IPs virtuais estão disponíveis e validar a disponibilidade do VIP durante a criação do cluster de usuários.

Nesta seção, você registra um AddressPool no cluster do administrador do Anthos para usá-lo posteriormente na criação de clusters de usuários. Crie apenas um pool de endereços usando o nome anthos-addresspool-default. Cada cluster de usuário será forçado a usar VIPs desse pool de endereços e não poderá reutilizar o mesmo intervalo de VIPs. Os IPs virtuais precisam atender aos mesmos requisitos dos VIPs usados para o cluster de administrador e não podem se sobrepor aos IPs dos nós. O campo de descrição permite adicionar algumas instruções extras na IU.

kubectl apply -f <path/to/example-addresspool.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

Exemplo:

apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
kind: AddressPool
metadata:
  name: anthos-addresspool-default
spec:
  description: <description text>
  addresses:
  - <vip address pool. e.g, 10.200.0.100-10.200.0.200>

Registrar serviço de inicialização

O serviço de inicialização é um mecanismo usado para pré-instalar recursos adicionais, como os serviços de armazenamento e os drivers de GPU, nos clusters do usuário, depois de criados, para disponibilizá-los imediatamente para uso. Crie os serviços de inicialização antes dos clusters de usuários em que serão usados.

  1. Use

    kubectl create configmap <configmap-name> --kubeconfig=${ADMIN_KUBECONFIG} \
      --from-file=<path/to/manifests> --namespace=anthos-management-center
    

    para criar o configmap que contém todos os manifestos necessários para inicializar o serviço.

  2. Crie o objeto de serviço de inicialização que se refere ao configmap

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: BootstrapService
    metadata:
      name: <bootstrap-service-name>
      namespace: anthos-management-center
    spec:
      # If set to True, this configuration can be applied to many user clusters,
      # e.g. a GPU driver configuration. If False, this configuration can only be
      # applied to a single user cluster, e.g. a CSI Driver + StorageClass
      # combination which is intended for exclusive use by a single user cluster.
      # Defaults to False.
      isReusable: False
      configMapRef:
        name: <configmap-name>
        namespace: anthos-management-center
    
  3. Repita as etapas acima se forem necessários mais serviços de inicialização.