Os problemas do OpenShift são diferentes se o contêiner do Docker tiver uma rede definida pelo usuário ou não

0

Eu quero o OpenShift em um contêiner do Docker para suportar um aplicativo da Web (na AWS). Implantei o OpenShift em um contêiner do Docker de duas maneiras diferentes. Uma maneira é com a opção --net = host quando eu uso docker run -d ... Essa maneira funciona, exceto que o próprio EXTERNAL-IP (aquele exibido com o comando oc get service coolapp -o wide ) para o cluster OpenShift não está acessível de nenhuma maneira determinar. Por exemplo, o endereço IP é um 172.31.x.x. endereço. É interno ao host do Docker. É um salto para longe dele (como mostra o comando traceroute do host do Docker). Não consigo acessá-lo da minha estação de trabalho ou de outras instâncias do AWS além do host do Docker. Eu tentei acessar o aplicativo da Web que, de outra forma, é criado por meio de métodos diferentes.

O aplicativo da web é criado a partir de arquivos .yaml para criar uma pilha LAMP. Eu posso encontrar atividade de porta no host do Docker para alcançá-lo quando eu uso nmap -Pn 127.0.0.1 . As portas que se tornam ativas do OpenShift em um contêiner Docker com este aplicativo da web são 4001, 7001 e 8443. Se eu for para a URL xxxx: 8443 (onde xxxx é o endereço IP externo do host do Docker), vejo isso como a página da Web sem outras mensagens ou texto:

Então, não tenho certeza do que pensar sobre isso.

Os arquivos .yaml que estou usando comprovadamente funcionam para implantar um aplicativo da Web com o Kubernetes (não necessariamente com o OpenShift). Quando eu implemento através do Kubernetes no AWS (que foi configurado com o Juju), os arquivos .yaml criam um ELB. Esse ELB pode ser acessado pela internet depois de eu modificar o Grupo de segurança da AWS relevante. Com o OpenShift em um contêiner Docker, nenhum ELB é criado. Este ELB é o endereço IP EXTERNO (aquele exibido com o comando oc get service coolapp -o wide ) do aplicativo da web. Portanto, com o OpenShift em um contêiner do Docker, estou procurando outro método, porque o próprio endereço EXTERNAL-IP parece totalmente inacessível. Existe uma maneira de trabalhar?

A alternativa que eu pensei é implantar o OpenShift em um contêiner Docker com uma rede definida pelo usuário. Dessa forma, achei que poderia obter um endereço IP externo de um aplicativo de cluster do OpenShift. Mas eu não estou indo muito longe na implantação do aplicativo da web. Eu não posso nem usar oc login .

Com o comando docker run (para criar o contêiner com o OpenShift), faço duas coisas: uma, eu crio um contêiner do Docker com a opção -p 8443:8443 . Dois, conecto o contêiner a uma rede definida pelo usuário. Esses aspectos são diferentes da minha abordagem inicial. Eu posso entrar no contêiner. Eu sei que o comando oc login usa a porta 8443. No contêiner eu corro oc login , mas eu entendo isso:

error: net/http: TLS handshake timeout

Eu já tentei alguns mapeamentos de portas diferentes, mas tive problemas. Eu posso usar um contêiner Docker com diferentes mapeamentos de porta. Mas eu não posso fazer nada com o OpenShift até que eu possa efetuar login com o oc login .

Com minha tentativa de trabalho, não posso usar oc login . Como posso usar uma rede definida pelo usuário com um contêiner Docker e usar oc login ?

Sem uma rede definida pelo usuário, o endereço EXTERNAL-IP do meu aplicativo da web não está acessível. Existe uma maneira de torná-lo acessível (por exemplo, projetá-lo para usar um AWS ELB)? Como eu faria isso?

Espero que o OpenShift funcione em um contêiner Docker com ou sem uma rede definida pelo usuário. Eu só preciso de um método para funcionar. Qual problema é mais fácil de corrigir?

    
por Jermoe 13.01.2018 / 07:36

0 respostas