cfg configurado, um ctx de context.Background(), e importações para log, basaltic (github.com/basaltic-sh/sdk-go) e compute (github.com/basaltic-sh/sdk-go/compute).
- Console
- API
- CLI
- Go
Vá para Compute → Instances e escolha Create instance. O formulário é um cartão por decisão — Details, Flavor, Boot
volume, Data volumes, Networking, IAM role, User data — com um resumo em execução ao lado deles.Networking é o cartão para desacelerar. Cada interface carrega seu próprio VPC, Subnet, Security groups e Public floating IPs; Add network interface adiciona outro, e o primeiro na lista é o NIC primário.
202 com a instância em pending. A construção do disco de inicialização, as interfaces e a semente acontece após a resposta, então faça a consulta GET /v1/instances/{instance_id} e observe current_state.
Tamanho: tipos de instância
Um flavor é CPU e memória, e nada mais. Ele carrega nenhum tamanho de disco — o disco de inicialização é um volume com o tamanho no lançamento — entãoGET /v1/flavors é um catálogo de formas de computação, não de tipos de máquina.
shared | dedicated
shared sobre-subscreve CPU para maior densidade. dedicated fixa cada vCPU 1:1 a um núcleo físico. Ambas as classes são executadas nos mesmos hosts; a classe decide como a instância desenha nos threads de um host.general | loadbalancer | database
Somente os flavors
general podem executar instâncias e pools de instâncias. Os outros dois são reservados para os produtos gerenciados, cujos nós são operados e preços pela plataforma, e são recusados aqui. Passe ?family=general ao listar.percent of one vCPU
O piso garantido e o teto. A instância tem direito a
vcpus × cpu_baseline_pct / 100 núcleos, por mais ocupados que seus vizinhos fiquem, e não pode exceder o limite de explosão, mesmo em um host ocioso. Ausente significa que o flavor não garante nenhum piso ou impõe nenhum teto além da contagem de vCPUs.aggregate throughput
O limite de rede da instância, em megabits/s, em todas as suas interfaces. Ausente significa sem limite. Um resize move isso com o tipo de instância.
GET /v1/flavors não é paginado.
Escolhendo uma imagem
image assume quatro formas, e a diferença importa para a reprodutibilidade:
- Um nome nu
- Nome: Versão
- A CRN
- Uma imagem id
"image": "debian-13" segue a tag. Você obtém a compilação que estiver atual no momento em que a instância for criada, então dois lançamentos com um mês de diferença podem inicializar bits diferentes.amd64). Uma imagem completa CRN fixa sua arquitetura. Veja Images para saber como uma tag se move e o que a listagem mostra e não mostra.
Discos
volumes é uma lista, e o disco de inicialização é a entrada que diz assim:
boolean
Marca o disco de inicialização, clonado de
image ou selecionado com volume. No máximo uma entrada pode definir isso. Uma entrada de inicialização não tem mount_path ou fstype; seu sistema de arquivos vem da imagem ou do disco existente.Ao usar image, omita a entrada de boot e você obtém seu min_disk_gb na camada padrão da região.integer, 1–16384
Necessário para novos discos de dados; omitido para discos existentes. Em uma nova entrada de inicialização, isso não pode ir abaixo do
min_disk_gb da imagem. Qualquer coisa menor é um 400 antes da linha de instância existir, não uma compilação falhada.string
Com um caminho de montagem definido, o agente in-guest formata o disco — somente se ele estiver em branco — e monta-o lá, usando
fstype: ext4 por padrão, ou xfs.boolean
Novos volumes de tempo de inicialização são definidos como true. Os discos existentes têm o padrão false e não podem definir isso como true durante o lançamento. Os discos anexados após o lançamento também são padrão para false.
Desempenho e discos existentes
Novos discos de inicialização e dados podem provisionar IOPS e taxa de transferência independentemente da capacidade. A franquia incluída é de 3.000 IOPS / 125 MiB/s. O SSD suporta até 8.000 IOPS/250 MiB/s e o NVMe até 12.000 IOPS/500 MiB/s, sujeito a cotas de conta e capacidade regional. O resumo mostra desempenho adicional separadamente da capacidade de armazenamento; 3.500 IOPS / 250 MiB/s adiciona R$35/mês. Consulte preços por volume para obter taxas e proporções. Você também pode iniciar a partir de um disco inicializável existente e anexar discos de dados existentes. Eles devem estar disponíveis na mesma conta e região, sem uma alteração de desempenho pendente. Cada disco pode aparecer apenas uma vez. Os discos existentes mantêm seus dados, desempenho, programações de snapshot e encargos atuais. Eles são retidos se o lançamento falhar ou a instância for excluída, e suas cobranças contínuas são excluídas da estimativa de novos recursos. Isso requercompute:AttachVolume além de compute:CreateInstance.
- Console
- API
- CLI
- Go
Em Create instance, use Boot volume para escolher New volume from
image ou Existing volume. Um novo disco de inicialização oferece Provisioned IOPS e Provisioned throughput (MiB/s). Cada entrada em Data volumes oferece a mesma escolha. Os discos existentes mostram seu desempenho atual. O resumo lista Additional performance separadamente.
Programações de snapshot no lançamento
Cada novo volume de inicialização ou de dados pode ter até 16 snapshot schedules independentes. Isso requerstorage:CreateSnapshotPolicy além das permissões para iniciar uma instância. Os nomes de agendamento devem ser exclusivos em toda a conta, incluindo os outros volumes na mesma solicitação.
- Console
- API
- CLI
- Go
Em Boot volume ou uma nova entrada Data volumes, use Add snapshot schedule. Defina Schedule name, Every (minutes), Keep snapshots e, opcionalmente, Maximum age (days). Desmarque Enabled para criar uma programação em pausa. O resumo do lançamento inclui as programações solicitadas.
snapshot_schedules.
Acesso SSH e cloud-init
Use SSH access with IAM para logins humanos e de automação. Adicione uma chave pública à identidade e conceda acesso à instância. A plataforma instala o IAM SSH durante a primeira inicialização em imagens compatíveis; a criação de instância não tem campo de anexo de chave e não cria usuário de login compartilhado.user_data é base64-codificado cloud-init. A configuração base desabilita a senha e o login root. As chaves de nível superior do cliente substituem os valores base, enquanto a plataforma adiciona sua rota de metadados e instalação de agente convidado posteriormente. Seu próprio bloco users: pode criar usuários de aplicativos locais sem alterar a identidade e as permissões dos usuários do IAM.
Um documento #cloud-config contendo YAML inválido falha no provisionamento.
Dando uma identidade à instância
No lançamento,iam_role aceita um nome de função, UUID ou CRN e anexa essa função IAM. O software dentro do convidado então obtém credenciais de curta duração do serviço de metadados em 169.254.169.254 — nenhuma chave de acesso é escrita para a instância, e nada precisa ser girado.
Duas condições, e ambas são fáceis de perder. A política de confiança da função deve aceitar
crn:compute:*:*:instance/* (ou o CRN da instância específica), e o principal que faz a chamada de lançamento precisa de iam:PassRole na função, separadamente de compute:CreateInstance. Sem a política de confiança, a instância é iniciada e as credenciais nunca são criadas; sem iam:PassRole, o lançamento em si é negado. Funções e identidade de instância percorre ambos.iam_role como um resumo opcional em vez de uma referência de string ou iam_role_id:
iam:GetRole. Ele contém apenas id, crn e name, excluindo campos de função sensíveis, como políticas. O campo é omitido quando nenhuma função está anexada, a função foi excluída ou pertence a outra conta. Abrir os detalhes do IAM da função ainda requer iam:GetRole.
Alterar a função de uma instância existente
Você pode anexar, substituir ou remover uma função de carga de trabalho enquanto uma instância estiver em execução ou parada, sem nenhuma operação em andamento. Essas alterações não exigem reinicialização. Há uma função anexada por instância. A substituição é atômica; se a validação falhar, a função anterior permanece anexada.- Console
- API
- CLI
- Go
Abra a instância e selecione Settings. Em IAM role, selecione uma função e clique em Save IAM role. Para desconectá-lo, clique em Remove role e, em seguida, em Remove IAM role.
compute:UpdateInstance na instância. Anexar e substituir também requer iam:PassRole na função selecionada, que deve pertencer à mesma conta e confiar nesta instância. A lista de funções do console requer iam:ListRoles. O desligamento não requer a passagem de uma função.
Novas solicitações de metadados observam a associação salva imediatamente. Uma solicitação já em andamento pode ser completada com a associação anterior. A desconexão interrompe a recuperação subsequente de credenciais; a reconexão da mesma função obtém um novo conjunto de credenciais. As solicitações que se sobrepõem a uma alteração de função podem precisar tentar novamente a descoberta de função. Edições simultâneas se aplicam na ordem de commit, e repetir a associação atual deixa-a inalterada.
As instâncias gerenciadas por serviço não podem ser editadas dessa maneira. Para um membro de pool de instâncias, altere o launch template do pool; o template define a função usada pelas instâncias de substituição. Uma edição de instância nunca modifica seu modelo de pool.
Nomes, tags e metadados
unique per account
1–128 caracteres, seguros para DNS: letras, dígitos, ponto, traço, sublinhado, alfanumérico inicial e final. Um nome que colidem com outra instância na conta é um
409.not supported
PATCH /v1/instances/{instance_id} edita description, metadata, tags e iam_role. Um nome é fixado para a vida da instância.No console, esses são os cartões Details, Tags, Metadata e IAM role na guia Settings da instância. Nenhum tem um campo de nome.IAM and cost
Leia as condições da política do IAM como
basalt:RequestTag/<key> na criação e basalt:ResourceTag/<key> depois, e usado para atribuição de custo. Veja políticas.replaced, not merged
O mapa que você
PATCH se torna o conjunto inteiro de suas chaves.Chaves de metadados sob o namespace
basalt: são estados de plano de controle — como uma instância prova a qual pool ou recurso gerenciado ela pertence. Você não pode configurá-los, e você não pode removê-los: eles são preservados através de um PATCH, quer você os refaça ou não, e propor um valor diferente para um é um 400 ao invés de uma queda silenciosa. Leitura-modificação-gravação contra todo o mapa de metadados é, portanto, seguro.Leitura de endereços de instância
A tabela de instâncias mostra IPv4 privado, IPv4 público e IPv6 da NIC primária. Os detalhes da instância mostram esses mesmos valores individualmente. A guia Networking lista cada NIC com seus endereços primários. Um IP flutuante IPv6 anexado é mostrado em vez do endereço IPv6 diretamente anexado da NIC. A visão geral mostra um endereço por instância, preferindo IPv4 público, depois IPv6 público e, em seguida, IPv4 privado.Referências de recursos
Consulte Referências de recursos para classificação, versões de imagem e busca de uma instância por nome ou CRN.flavor, iam_role, e por-NIC security_groups aceitam um UUID, um CRN, ou um nome exato. Os tipos de instância são regionais; os grupos de segurança pertencem à sua conta e as funções do IAM pertencem à sua conta. subnet aceita um UUID ou um CRN completo de VPC/subnet. Um nome de sub-rede nu não pode ser resolvido sem seu pai VPC. O anexo de interface também requer um UUID ou um CRN completo de VPC/sub-rede/interface.
Cada lista de computação aceita exatos filtros name e crn. Eles se cruzam com outros filtros e paginação. Um CRN estrangeiro ou não correspondido não corresponde a nenhuma linha; um CRN mal formado ou vazio retorna 400. Nomes vazios não ampliam a lista. Listas de instâncias também aceitam referências flavor e image. Os nomes da lista de NICs correspondem aos nomes de interface dentro das ligações de instância; nomes duplicados podem retornar várias interfaces. IPs flutuantes não têm identidade de nome.
