Kubernetes: Atualizando uma imagem de implantação com um recurso de entrada TLS

1

Estou tentando atualizar o image para minha implantação. Para isso, estou executando kubectl edit deployment web e estou alterando a propriedade spec.template.spec.containers.image de:

gcr.io/my-project-id-1234/app:v1

Para:

gcr.io/my-project-id-1234/app:v2

Nos logs, conheço bem as atualizações de implantação. O problema que estou tendo é com o ingresso de TLS; aqui está minha configuração:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tls-ingress
spec:
  tls:
    - secretName: tls-secrets
  backend:
    serviceName: web
    servicePort: 80

E aqui está o resultado de kubectl describe ing web antes da atualização:

$ kubectl describe ing                                                                                                                                                          
Name:                   tls-ingress
Namespace:              default
Address:                105.78.154.212
Default backend:        web:80 (10.0.2.3:8000)
TLS:
  tls-secrets terminates 
Rules:
  Host  Path    Backends
  ----  ----    --------
Annotations:
  backends:                     {"k8s-be-32171":"HEALTHY"}
  forwarding-rule:              k8s-fw-default-tls-ingress
  https-forwarding-rule:        k8s-fws-default-tls-ingress
  https-target-proxy:           k8s-tps-default-tls-ingress
  static-ip:                    k8s-fw-default-tls-ingress
  target-proxy:                 k8s-tp-default-tls-ingress
  url-map:                      k8s-um-default-tls-ingress

Antes da atualização, tudo funciona corretamente. Mas logo o tráfego deixa de ser roteado com sucesso para o meu cluster. Descrever o ingresso agora retorna:

Name:                   tls-ingress
Namespace:              default
Address:                105.78.154.212
Default backend:        web:80 (10.0.2.3:8000)
TLS:
  tls-secrets terminates 
Rules:
  Host  Path    Backends
  ----  ----    --------
Annotations:
  static-ip:                    k8s-fw-default-tls-ingress
  target-proxy:                 k8s-tp-default-tls-ingress
  url-map:                      k8s-um-default-tls-ingress
  backends:                     {"k8s-be-32171":"UNHEALTHY"}
  forwarding-rule:              k8s-fw-default-tls-ingress
  https-forwarding-rule:        k8s-fws-default-tls-ingress
  https-target-proxy:           k8s-tps-default-tls-ingress

Como faço para atualizar corretamente o Ingress quando atualizo minha implantação assim?

    
por mikeycgto 09.05.2016 / 16:31

2 respostas

1

Os pontos de ingresso em um serviço. O serviço aponta para um conjunto de pods com alguns rótulos. A implantação define esses rótulos nos pods. Veja uma lista do que solucionar problemas:

  1. Confirme se o seletor de etiquetas no seu Serviço corresponde aos rótulos no Pods que sua implantação está criando. Caso contrário, os Pods criados pelo A implantação não será selecionada para o serviço e seu ingresso será estar apontando para nada.

  2. Confirme se o Serviço está exposto como NodePort . Caso contrário, O balanceador de carga externo do Google não poderá alcançar o interior seu cluster.

  3. Confirme se os pods estão em execução / saudáveis. É possível para um Implantação a ser atualizada, mas os Pods não são íntegros ou em um CrashLoop. É importante que o aplicativo responda com um status 200 código para GET / .

  4. Crie uma regra de firewall para as verificações de integridade:

    gcloud compute firewall-rules create allow-130-211-0-0-22 \
      --source-ranges 130.211.0.0/22 \
      --allow tcp:30000-32767
    
por 09.05.2016 / 19:57
0

A entrada está relatando {"k8s-be-32171": "UNHEALTHY"}, que indica que a verificação de integridade falhou no serviço de back-end.

Verifique se os pods de aplicativos estão ativos e em execução, verifique com

kubectl get pods <pod-name>

e

kubectl get deployment <deplyment-name>

Se os pods do aplicativo estiverem prontos e em execução, o ingresso deve ser conectado aos novos pods rs automaticamente, mas isso pode demorar um pouco, dependendo dos parâmetros de verificação de integridade.

    
por 09.05.2016 / 19:54