Início
Upload de Template
Criando a partir de templates usando a CLI
Labels
Parâmetros
Gerando uma lista de Objetos
Modificando um Template
Usando o Instant App e Quickstart Templates
Escrevendo Templates
Descrição
Labels
Parâmetros
Lista de Objetos
Criando um template a partir de objetos existentes
Início
Um template descreve um conjunto de objetos que podem ser parametrizados e processados para produzir uma lista de objetos para criação pelo OpenShift. Um template pode ser processado para criar qualquer coisa que você tenha permissão para criar dentro de um projeto, exemplo, services, build configurations e deployment configurations. Um template pode também definir um conjunto de labels para aplicar em cada objeto definido no template.
Upload de Template
Se você tem um arquivo JSON ou YAML que define o template, como pode ser visto nesse exemplo, você pode fazer upload do template para projetos usando a CLI. Isso salva o template no projeto para uso repetido por qualquer usuário com acesso ao projeto. Instruções de como escrever seus templates estão no final desse artigo.
Para fazer upload de um template para o projeto atual, passe o arquivo JSON ou YAML com o seguinte comando:
$ oc create -f <filename>
Você pode fazer upload do template para um projeto diferente usando a opção -n com o nome do projeto:
$ oc create -f <filename> -n <project>
O template agora esta disponível para seleção usando a CLI.
Criando a partir de templates usando a CLI
Você pode usar a CLI para processar templates e usar a configuração que é gerada para criar os objetos.
Labels
Labels são usados para gerenciar e organizar objetos, como pods. Os labels especificados no template são aplicados a todos os objetos que são gerados a partir do template.
Existe também a possibilidade de adicionar labels no template a partir da CLI.
$ oc process -f <filename> -l name=otherlabel
Parâmetros
A lista de parâmetros que você pode sobrescrever são listadas na seção parameters do template. Você pode listar através da CLI ao usar o seguinte comando e especificar o arquivo a ser usado:
$ oc process --parameters -f <filename>
Alternativamente, se já foi feito o upload do template:
$ oc process --parameters -n <project> <template_name>
Por exemplo, a seguir é exibida a saída quando listando os parâmetros para um template Quickstart no projeto default openshift:
$ oc process --parameters -n openshift rails-postgresql-example
NAME DESCRIPTION GENERATOR VALUE
SOURCE_REPOSITORY_URL The URL of the repository with your application source code https://github.com/openshift/rails-ex.git
SOURCE_REPOSITORY_REF Set this to a branch name, tag or other ref of your repository if you are not using the default branch
CONTEXT_DIR Set this to the relative path to your project if it is not in the root of your repository
APPLICATION_DOMAIN The exposed hostname that will route to the Rails service rails-postgresql-example.openshiftapps.com
GITHUB_WEBHOOK_SECRET A secret string used to configure the GitHub webhook expression [a-zA-Z0-9]{40}
SECRET_KEY_BASE Your secret key for verifying the integrity of signed cookies expression [a-z0-9]{127}
APPLICATION_USER The application user that is used within the sample application to authorize access on pages openshift
APPLICATION_PASSWORD The application password that is used within the sample application to authorize access on pages secret
DATABASE_SERVICE_NAME Database service name postgresql
POSTGRESQL_USER database username expression user[A-Z0-9]{3}
POSTGRESQL_PASSWORD database password expression [a-zA-Z0-9]{8}
POSTGRESQL_DATABASE database name root
POSTGRESQL_MAX_CONNECTIONS database max connections 10
POSTGRESQL_SHARED_BUFFERS database shared buffers 12MB
A saída identifica diversos parâmetros que são gerados com uma expressão regular quando o template é processado.
Gerando uma lista de Objetos
Usando a CLI, você pode processar um arquivo definindo um template para retornar a lista de objetos para a saída padrão.
$ oc process -f <filename>
Alternativamente, se já foi feito o upload do template para o projeto atual:
$ oc process <template_name>
O comando process também pega uma lista de templates que você pode processar para uma lista de objetos. Nesse caso, cada template vai ser processado e o a lista que for gerada contem objetos de todos os templates passados ao comando process:
$ cat <first_template> <second_template> | oc process -f -
Você pode criar objetos a partir de um template ao processar o template e redirecionar a saída para o comando oc create:
$ oc process -f <filename> | oc create -f -
Alternativamente, se já foi feito o upload do template para o projeto atual:
$ oc process <template> | oc creat -f -
Você pode sobrescrever qualquer parâmetro definido no arquivo ao adicionar a opção -v seguido de uma virgula e <name>=<value>. O parâmetro referenciado pode aparecer em qualquer campo de texto dentro do template.
Por exemplo, nos parâmetros seguintes POSTGRESQL_USER e POSTGRESQL_DATABASE de um template vão ser substituídos com variáveis de ambiente personalizadas:
Exemplo 1. Criando uma lista de Objetos a partir de um Template
$ oc process -f my-rails-postgresql -v POSTGRESQL_USER=bob,POSTGRESQL_DATABASE=mydatabase
O arquivo JSON pode ser redirecionado para um arquivo sem ter que fazer o upload do template pelo redirecionamento da saída processada para o comando oc create:
$ oc process -f my-rails-postgresql -v POSTGRESQL_USER=bob,POSTGRESQL_DATABASE=mydatabase | oc create -f -
Modificando um Template
Você pode editar um template que já esta no seu projeto ao usar o seguinte comando:
$ oc edit template <template>
Usando o Instant App e Quickstart Templates
O OpenShift fornece um número default de Instant App e Quickstart Templates que tornam mais fácil a criação de uma nova aplicação seja qual for sua linguagem. Os templates são fornecidos para Rails(Ruby), Django(Python), Node.js, CakePHP(PHP) e Dancer(Perl). O administrador deve ter criado estes templates no projeto default openshift, assim você pode acessa-los. Você pode listar os templates de Instant App e Quickstart com:
$ oc get templates -n openshift
Se eles não estiverem disponíveis, fale com o administrador do openshift para Carregar os templates default e image stream.
Por padrão, o template faz o build usando um repositório público no GitHub que contem o código necessário da aplicação. Para modificar o código e fazer sua própria versão da aplicação, você deve:
- Fazer uma cópia(fork) do repositório, ao referenciar o parâmetro do template SOURCE_REPOSITORY_URL.
- Sobrescrever o valor do parâmetro SOURCE_REPOSITORY_URL quando estiver criando a partir do template, especificar seu fork em vez do valor default.
Ao fazer isso, o build config é criado pelo template que vai agora apontar para o código da sua aplicação, você pode modificar o código e fazer o rebuild da aplicação.
![]() |
Alguns dos templates do Instant App e Quickstart, define um deployment config de um banco. Estes templates devem ser utilizados para propósitos de demonstração apenas. Já que qualquer dado vai ser perdido se o pod do banco for reiniciado. |
Escrevendo Template
Você pode criar novos templates para tornar fácil a tarefa de recriar todos os objetos de sua aplicação. O template vai definir os objetos que serão criados ao longo do instanciamento, além de alguns metadados para guiar na criação desses objetos.
Descrição
A descrição do template contem detalhes que informa os usuários sobre o que o seu template faz e ajuda eles a encontrar quando estiverem pesquisando no console web. Além da descrição geral, inclui um conjunto de tags. Tags uteis incluem o nome da linguagem que seu template é relacionado(ex. java, php, ruby, etc.). Você também pode adicionar a tag especial instant-app que faz com que seu template seja mostrado na lista de instant apps na página de seleção de templates.
{
"kind": "Template",
"apiVersion": "v1",
"metadata": {
"name": "cakephp-mysql-example",
"annotations": {
"description": "An example CakePHP application with a MySQL database",
"tags": "instant-app,php,cakephp,mysql",
"iconClass": "icon-php"
}
}
...
}
O nome do template que vai aparecer para o usuário.
Uma descrição do template.
Tags que serão associadas com o template para busca e agrupamento.
Um ícone a ser exibido com seu template no console web.
Labels
Templates podem incluir um conjunto de labels. Estes labels podem ser adicionados para cada objeto que for criado quando o template for instanciado. Definir um label dessa forma torna fácil para os usuários encontrar e gerenciar todos os objetos criados a partir de um template em particular.
{
"kind": "Template",
"apiVersion": "v1",
...
"labels": {
"template": "cakephp-mysql-example"
}
...
}
O label que vai ser aplicado a todos os objetos criados a partir desse template.
Parâmetros
Parâmetros permitem que valores sejam fornecidos pelo usuário ou gerados quando o template é instanciado. Isso é útil quando for gerar senhas aleatórias ou ao permitir um usuário fornecer o hostname ou outro valor especifico que é necessário para customizar o template. Parâmetros podem ser referenciados ao colocar "${PARAMETER_NAME}" em qualquer campo no template.
{
"kind": "Template",
"apiVersion": "v1",
...
{
"kind": "BuildConfig",
"apiVersion": "v1",
"metadata": {
"name": "cakephp-mysql-example",
"annotations": {
"description": "Defines how to build the application"
}
},
"spec": {
"source": {
"type": "Git",
"git": {
"uri": "${SOURCE_REPOSITORY_URL}",
"ref": "${SOURCE_REPOSITORY_REF}"
},
"contextDir": "${CONTEXT_DIR}"
},
}
}
...
"parameters": [
{
"name": "SOURCE_REPOSITORY_URL",
"description": "The URL of the repository with your application source code",
"value": "https://github.com/openshift/cakephp-ex.git"
"required": true
},
{
"name": "GITHUB_WEBHOOK_SECRET",
"description": "A secret string used to configure the GitHub webhook",
"generate": "expression",
"from": "[a-zA-Z0-9]{40}"
},
]
...
}
Esse valor vai ser substituído pelo valor do parâmetro SOURCE_REPOSITORY_URL quando o template for instanciado.
O nome do parâmetro. Este valor é exibido para os usuários e usado para referenciar o parâmetro dentro do template.
Uma descrição do parâmetro.
O valor default para o parâmetro que vai ser usado caso o do usuário não sobrescreva o valor quando instanciando o template.
Indica que o parâmetro é necessário, ou seja o usuário não pode deixar o campo em branco. Se o parâmetro não fornece um valor default, o usuário deve fornecer algum valor.
Um parâmetro que tem o seu valor gerado através de expressões regulares.
O input do valor a ser gerado. Nesse caso o vai gerar um valor de 40 caracteres incluindo caixa alta e baixa.
Lista de Objetos
A parte principal de um template é a lista de objetos que devem ser criados quando o template for instanciado. Isso pode ser qualquer objeto valido da API, como BuildConfig, DeploymentConfig, Service, etc. O objeto vai ser criado exatamente como definido aqui, com todos os valores de parâmetros substituídos antes da criação. A definição desses objetos podem referenciar parâmetros definidos anteriormente.
{
"kind": "Template",
"apiVersion": "v1",
...
"objects": [
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "cakephp-mysql-example",
"annotations": {
"description": "Exposes and load balances the application pods"
}
},
"spec": {
"ports": [
{
"name": "web",
"port": 8080,
"targetPort": 8080
}
],
"selector": {
"name": "cakephp-mysql-example"
}
}
}
]
...
}

Criando um template a partir de objetos existentes
Em vez de escrever um template do zero, você pode exportar objetos do seu projeto em um template form e então modificar o template a partir disso e adicionar parâmetros e outras customizações. Para exportar objetos em um projeto para um template form, execute:
$ oc export all --as-template=<template_name>
Você também pode substituir um resource type ou múltiplos resources em vez de all. Execute $ oc export -h para mais exemplos.
Comentários
0 comentário
Por favor, entre para comentar.