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.shsó é 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
kubeconfigde uma service account só para o GoShip a entregar o seu usuário administrador. - Um
kubeconfigautossuficiente. Ele vai inteiro para o GoShip, então use um com o token ou os certificados embutidos. Caminhos para arquivos locais e pluginsexecsó 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/configSem --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-k8sO 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
kubeconfigestá 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:
- Clusters → Visão geral
- Clusters → Conectar um servidor: mais simples, o GoShip instala o k3s por SSH
- Clusters → Cobrança