Skip to content

Conectar Kubernetes

Se você já roda um cluster Kubernetes, conecte-o ao GoShip com o kubeconfig dele. O GoShip não monta nem opera esse cluster: ele só passa a publicar apps nele, quando um ambiente aponta para ele. Para o GoShip criar a máquina, veja Criar na sua nuvem ou Conectar um servidor.

O que o cluster precisa ter

  • Alcance pela rede. O GoShip fala com a API do cluster pelo endereço que está no kubeconfig, então esse endereço precisa estar acessível a partir da internet.
  • Um ingress controller com endereço público. É por ele que os apps ficam acessíveis. O GoShip cria o Ingress de cada app no seu cluster, e você aponta o seu domínio (um CNAME) para esse ingress. O endereço *.apps.goship.sh só é criado para clusters com um IP público que o GoShip conhece; num Kubernetes conectado, use o seu domínio.
  • Uma credencial com poder suficiente. Ela cria namespaces e, dentro deles, os Deployments, Services e Ingresses dos apps, no cluster inteiro. Prefira um kubeconfig de uma service account só para o GoShip a entregar o seu usuário administrador.
  • Um kubeconfig autossuficiente. Ele vai inteiro para o GoShip, então use um com o token ou os certificados embutidos. Caminhos para arquivos locais e plugins exec só existem no seu computador e não funcionam.

Conectar

Pelo painel: em Clusters, no grupo Infrastructure da barra lateral, clique em Add cluster e escolha Kubernetes (“A cluster you run, by kubeconfig”) em Where. Cole em Kubeconfig o kubeconfig de um cluster-admin e dê um nome ao cluster. O GoShip guarda o kubeconfig para alcançar o cluster e nunca o mostra de volta.

Pela CLI:

goship cluster create meu-k8s --kubeconfig ~/.kube/config

Sem --no-wait, o comando acompanha as etapas até o cluster ficar active, ou sai com código 1 se alguma falhar. Com --no-wait ele devolve na hora, e -o json imprime o cluster. A conexão também existe na API (POST /orgs/{org}/clusters, com type: kubernetes e o kubeconfig).

Depois, aponte um ambiente para ele (ou passe --environment <slug> ao conectar, para ambientes que já existem):

goship environment create qa --cluster meu-k8s

O que muda num Kubernetes conectado

O cluster conectado se comporta como os outros, com estas diferenças, porque o GoShip não o montou e não conhece o que há nele:

  • Cobrança. Um Kubernetes conectado por kubeconfig está em beta e não é cobrado enquanto o GoShip não mede a capacidade dele. Os clusters que o GoShip cria, na sua nuvem ou por SSH, são cobrados pela capacidade medida (Cobrança).
  • Isolamento. Cada projeto ganha um namespace por ambiente, e é só isso: o GoShip não aplica isolamento de rede entre os projetos (Visão geral).
  • Sandbox. Não: as máquinas que o GoShip monta trazem o gVisor junto, e só nelas os planos com sandbox são oferecidos. Os apps de um Kubernetes conectado rodam sem sandbox (Sandbox).
  • Volumes. Ainda não: o GoShip não sabe quais storage classes o cluster tem, então não oferece volumes nele (Volumes).
  • Apps privados. Não funcionam em Kubernetes conectado (Apps privados).
  • Tamanho. O GoShip não redimensiona: a máquina é sua.

Veja também: