Início
Usando a CLI
Especificando o código fonte
Especificando uma imagem
Especificando um template
Especificando variáveis de ambiente
Especificando labels
Comando output
Avançado: Múltiplos componentes e agrupamento
Início
Você pode criar uma nova aplicação OpenShift usando o console web ou rodando o comando oc new-app a partir da CLI. O OpenShift vai criar a nova aplicação a partir do código fonte, imagens ou templates. O comando new-app procura por imagens na instalação local do Docker (se disponível), em um registro Docker ou em um OpenShift Image stream.
![]() |
Por questões de segurança o build de Dockerfile não é permitido nesta versão. |
Se você especificar o código fonte, o new-app tenta construir um build config que vai fazer build do seu código em uma nova imagem de aplicação. Também constrói um deployment config que faz o deploy de uma nova imagem, e um serviço que fornece acesso através de um load balance ao deployment que esta rodando sua imagem.
![]() |
Se você especificar o código fonte, você talvez precise rodar um build com o comando oc start-build depois que a aplicação for criada. |
Usando a CLI
Você pode criar uma nova aplicação usando o comando oc new-app a partir da CLI.
Especificando o código fonte
O comando new-app permite a você criar aplicações usando o código fonte local ou a partir de um repositório Git. Se o repositório é especificado, o new-app tenta automaticamente determinar o tipo de build strategy a ser utilizado(Docker ou Source), e em caso do tipo Source também um apropriado language builder image.
Você pode dizer ao new-app para usar um diretório do seu repositório ao especificar a flag --context-dir. Também quando espeficar uma URL, você pode especificar uma referência ao Git ao adicionar #[reference] ao final da URL.
![]() |
Se você estiver usando um repositório Git local, o repositório deve ter um origin que aponta para uma URL acessível pelo OpenShift. |
Exemplo 1. Para criar uma aplicação usando o repositório Git no diretório atual:
$ oc new-app .
Exemplo 2. Para criar uma aplicação usando o repositório Git remoto e um diretório especifico:
$ oc new-app https://github.com/openshift/sti-ruby.git --context-dir=2.0/test/puma-test-app
Exemplo 3. Para criar uma aplicação usando o repositório Git remoto e um Branch especifico:
$ oc new-app https://github.com/openshift/ruby-hello-world.git#beta4
Detecção Build Strategy
Se o new-app encontrar um Dockerfile no repositório, vai gerar um Docker build strategy. Caso contrário, vai gerar um Source strategy. Para usar uma strategy especifica, você deve usar a flag --strategy com source ou docker.
Exemplo 4. Para forçar o new-app a usar o Docker strategy para um repositório local:
$ oc new-app /home/user/code/myapp --strategy=docker
Detecção de Linguagem
Se estiver criando um Source build, o new-app vai tentar determinar qual builder de linguagem utilizar baseado na presença de certos arquivos na raiz do repositório:
Tabela 1. Linguagens detectadas pelo new-app
Linguagem | Arquivos |
---|---|
ruby | Rakefile, Gemfile, config.ru |
jee | pom.xml |
nodejs | app.json, package.json |
php | index.php, composer.json |
python | requirements.txt, setup.py |
perl | index.pl, cpanfile |
Depois que uma liguagem é detectada, o new-app procura o servidor OpenShift por tags de image stream que devem ter uma anotação de supports combinando com a linguagem detectada, ou um image stream que combine com o nome da linguagem detectada. Se nenhuma combinação for encontrada, o new-app procura o registro do Docker Hub por uma imagem que combine com a o nome da linguagem detectada.
Para sobrescrever a imagem que o new-app usa como builder para um repositório especifico, a imagem (image stream) pode ser especificada com o repositório usando o ~ como separador.
Exemplo 5. Para usar o image stream myproject/my-ruby para fazer o build do source para um repositório remoto no GitHub:
$ oc new-app myproject/my-ruby~https://github.com/openshift/ruby-hello-world.git
Exemplo 6. Para usar imagem Docker openshift/ruby-20-centos7:latest para fazer o build do source em um repositório local:
$ oc new-app openshift/ruby-20-centos7:latest~/home/user/code/my-ruby-app
Especificando uma imagem
O comando new-app gera os artefatos necessários para fazer o deploy de uma imagem como uma aplicação. As imagens podem ser a partir de image streams no servidor OpenShift, imagens em um registro especifico, no Docker Hub ou imagens no servidor Docker local.
O comando new-app tenta determinar o tipo de imagem especificado com os argumentos passados. Entretanto, você pode falar explicitamente ao new-app se a imagem é uma imagem Docker (usando o argumento --docker-image) ou um image stream (usando o argumento -i|--image).
![]() |
Se você especificar uma imagem a partir do seu repositório Docker local, o Openshift não poderá completar o build pois as imagens não serão encontradas. Utilize o Docker Hub. |
Exemplo 7. Para criar uma aplicação a partir da imagem DockerHub MySQL:
$ oc new-app mysql
Exemplo 8. Para criar uma aplicação a partir de um repositório local:
$ oc new-app myregistry:5000/example/myimage
![]() |
Se o registro dessa imagem vem de um repositório que não é seguro com SSL, os administradores do cluster devem garantir que o daemon do Docker nos nodes do OpenShift esta sendo executado com a flag --insecure-registry apontando para o registro. Você deve dizer ao new-app que a imagem vem de um registro inseguro com a flag --insecure-registry=true. |
Para criar uma aplicação a partir de um image stream existente, especifique o namespace (opcional), nome e tag (opcional) para o image stream.
Exemplo 9. Para criar uma aplicação a partir de um image stream existente com uma tag especifica:
$ oc new-app my-stream:v1
Especificando um template
O comando new-app pode instanciar um template a partir de um template anterior ou de um arquivo de template. Para instanciar um template anterior, especifique o nome do template como um argumento. Exemplo, armazene um template de uma aplicação de exemplo e use para criar uma aplicação.
Exemplo 10. Para criar uma aplicação a partir de um template anterior:
$ oc create -f examples/sample-app/application-template-stibuild.json
$ oc new-app ruby-helloworld-sample
Exemplo 11. Para criar uma aplicação a partir de um arquivo template:
$ oc new-app -f examples/sample-app/application-template-stibuild.json
Parâmetros de template
Quando criando uma aplicação baseada em um template, use o argumento -p|--param para setar os valores definidos pelo template.
Exemplo 12. Para especificar parâmetros de template com um Template:
$ oc new-app ruby-helloworld-sample -p ADMIN_USERNAME=admin,ADMIN_PASSWORD=mypassword
Especificando variáveis de ambiente
Quando gerando aplicações a partir do source ou image, você pode usar o argumento -e|--env para especificar as variáveis a ser passada para a aplicação na sua execução.
Exemplo 13. Para definir variáveis de ambiente quando criando uma aplicação para uma Database Image:
$ oc new-app openshift/postgresql-92-centos7 -e POSTGRESQL_USER=user -e POSTGRESQL_DATABASE=db -e POSTGRESQL_PASSWORD=password
Especificando labels
Quando gerando aplicações a partir do source, image ou templates, você pode usar a flag -l|--label para adicionar labels aos objetos criados pelo new-app. Isso é recomendad, por que labels tornam mais fácil o selcionar, manipular e deletar objetos associados à nova aplicação.
Exemplo 14. Para usar o argumento Label para fazer label de objetos criados pelo new-app:
$ oc new-app https://github.com/openshift/ruby-hello-world -l name=hello-world
Saída de Comando
O comando new-app gera objetos OpenShift que vão fazer o build, deploy e executar a aplicação que esta sendo criada. Normalmente esses objetos são criados no projeto atual usando os nomes derivados do repositório de origem ou input images. Entretanto, o new-app permite a você, modificar esse comportamento.
Criação sem output
Para ver o que o new-app vai criar, você pode usar a flag -o|--output com o valor yaml ou json. Você pode usar a saída para pré-visualizar os objetos que vão ser criados, ou redirecionar para um arquivo que você pode editar e então usar o comando oc create para criar os objetos do OpenShift.
Exemplo 15. Para mandar a saída dos artefatos do new-app para um arquivo, editar o arquivo e então criar usando o comando oc create:
$ oc new-app https://github.com/openshift/ruby-hello-world -o json > myapp.json
$ vi myapp.json
$ oc create -f myapp.json
Nomes de objetos
Objetos criados pelo new-app são normalmente nomeados depois de serem gerados pelo repositório do repositório de código ou da imagem utilizada. Você pode definir os nomes dos objetos produzidos ao adicionar o argumento --name ao comando.
Exemplo 16. Para criar artefatos do new-app com nome diferente:
$ oc new-app https://github.com/openshift/ruby-hello-world --name=myapp
Objetos de projeto e namespace
Normalmente o new-app cria objetos no projeto atual. Entretanto, você pode dizer para ele criar objetos em um projeto diferente que você tenha acesso ao usar o argumento -n|--namespace.
Exemplo 17. Para criar artefatos do new-app em um projeto diferente:
$ oc new-app https://github.com/openshift/ruby-hello-world -n myproject
Artefatos criados
O conjunto de artefatos criados pelo new-app depende dos artefatos passados como entrada: repositórios git/svn, imagens ou templates.
Tabela 2. Objetos de saida do new-app.
Artefato | Descrição |
BuildConfig | O BuildConfig é criado para cada source repository especificado na linha de comando. O BuildConfig especifica a estratégia a ser utilizada, a origem e a saída do build. |
ImageStreams | Para o BuildConfig, duas ImageStreams são criadas: uma para representar a imagem de entrada (o builder image no caso d e builds do tipo Source ou FROM image no caso de builds do tipo Docker), e outra para representar a imagem de saída. Se uma imagem Docker for especificada como input ao new-app, então o image stream é criado para aquela imagem. |
DeploymentConfig | O DeploymentConfig é criado para fazer o deploy de um build ou de uma imagem especifica. O comando new-app cria o volume EmptyDir para todos os volumes Docker que são especificados nos containers incluidos no resultado do DeploymentConfig. |
Service | O comando new-app tenta detectar portas expostas em input images. Utiliza a porta mais baixa exposta para gerar um serviço que exponha a porta. Para expor diferentes portas, depois que o new-app terminou, utilize o comando oc expose para gerar serviços adicionais. |
Outros | Outros objetos podem ser gerados quando instanciando templates. |
Avançado: Múltiplos componentes e agrupamento
O comando new-app permite criar múltiplas aplicações a partir do source, images ou templates de uma vez. Para fazer isso, especifique múltiplos parâmetros ao comando new-app. Os Labels especificados na linha de comando valem para todos os objetos criados pela chamada unica. Variáveis de ambiente são aplicadas em todos os componentes criados a partir do código fonte ou imagens.
Exemplo 18. Para criar uma aplicação a partir de um repositório Git e uma Image do Docker Hub:
$ oc new-app https://github.com/openshift/ruby-hello-world mysql
![]() |
Se um repositório e builder image forem especificados como argumentos separados, o new-app vai usar o builder image como builder para o repositório. Se não for essa a intenção, especifique um image builder para o repositório usando o ~ para separar. |
Agrupando imagens em um único pod
O comando new-app permite o deploy de múltiplas imagens juntas em um único pod. Para especificar quais imagens agrupar, use o + como separador. O argumento --group também pode ser usado para especificar quais imagens devem ser agrupadas. Para agrupar uma imagem construída a partir de um repositório com outras imagens, especifique o builder image no grupo.
Exemplo 19. Para fazer o deploy de duas imagens em um único Pod:
$ oc new-app nginx+mysql
Exemplo 20. Para fazer o deploy de uma imagem construída a partir do Source e uma imagem externa juntas:
$ oc new-app ruby~https://github.com/openshift/ruby-hello-world mysql --group=ruby+mysql
Comentários
0 comentário
Por favor, entre para comentar.