K8s
Resumo
- Use o cliente OpenShift Python para executar operações CRUD em objetos K8s.
- Passe a definição do objeto de um arquivo de origem ou embutido. Veja exemplos de leitura de arquivos e uso de modelos Jinja ou arquivos criptografados em vault.
- Acesso a toda a gama de APIs K8s.
- Autentique usando um arquivo de configuração, certificados, senha ou token.
- Suporta modo de verificação.
Requisitos
Os requisitos abaixo são necessários no host que executa este módulo.
- openshift> = 0,6
- PyYAML> = 3,11
Parâmetros
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
api_key | string | | Token usado para autenticação com a API. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_API_KEY. |
api_version aliases: api, version | string | Default: "v1" | Use para especificar a versão da API. Use para criar, excluir ou descobrir um objeto sem fornecer uma definição de recurso completa. Use em conjunto com tipo , nome e namespace para identificar um objeto específico. Se a definição de recurso for fornecida, o valor apiVersion de resource_definition substituirá esta opção. |
append_hash | boolean | Escolhas: - false(default) - true | Se deve anexar um hash a um nome de recurso para fins de imutabilidade Aplica-se apenas a recursos ConfigMap e Secret O parâmetro será ignorado silenciosamente para outros tipos de recursos A definição completa de um objeto é necessária para gerar o hash - isso significa que excluir um objeto criado com append_hash só funcionará se o mesmo objeto for passado com state = absent (alternativamente, apenas use state = absent com o nome incluindo o hash gerado e append_hash = no) |
apply | boolean | Escolhas: - false(default) - true | apply compara a definição de recurso desejada com a definição de recurso fornecida anteriormente, ignorando propriedades que são geradas automaticamente apply funciona melhor com serviços do que 'force = yes' |
ca_cert aliases: ssl_ca_cert | path | | Caminho para um certificado CA usado para autenticação com a API. A cadeia de certificação completa deve ser fornecida para evitar erros de validação de certificado. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_SSL_CA_CERT. |
client_cert aliases: cert_file | path | | Caminho para um certificado usado para autenticação com a API. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_CERT_FILE. |
client_key aliases: key_file | path | | Caminho para um arquivo de chave usado para autenticação com a API. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_KEY_FILE. |
context | string | | O nome de um contexto encontrado no arquivo de configuração. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_CONTEXT. |
delete_options | dictionary | | Configure o comportamento ao excluir um objeto. Usado apenas quando state=absent. |
force | boolean | Escolhas: - false(default) - true | Se definido como yes e o state for present, um objeto existente será substituído. |
host | string | | Forneça um URL para acessar a API. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_HOST. |
kind | string | | Use para especificar um modelo de objeto. Use para criar, excluir ou descobrir um objeto sem fornecer uma definição de recurso completa. Use em conjunto com api_version , name e namespace para identificar um objeto específico. Se resource definition for fornecida, o valor do tipo de resource_definition substituirá esta opção. |
kubeconfig | path | | Caminho para um arquivo de configuração Kubernetes existente. Se não for fornecido e nenhuma outra opção de conexão for fornecida, o cliente openshift tentará carregar o arquivo de configuração padrão de ~/.kube/config.json. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_KUBECONFIG. |
merge_type | list / elements=string | Escolhas: - json - merge - strategic-merge | Se a abordagem de mesclagem de patch padrão deve ser substituída por um tipo específico. Por padrão, a fusão estratégica normalmente será usada. Por exemplo, as Definições de recursos personalizados normalmente não podem ser atualizadas pela fusão estratégica usual. Você pode querer usar merge se vir "o formato de patch de mesclagem estratégica não é suportado" Consultehttps://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment Se mais de um merge_type for fornecido, os merge_types serão tentados em ordem Se openshift> = 0.6.2, o padrão ['strategic-merge', 'merge'] é, o que é ideal para usar os mesmos parâmetros em tipos de recursos que combinam recursos personalizados e recursos integrados. Para openshift <0.6.2, o padrão é simplesmente strategic-merge. mutuamente exclusivo com apply |
name | string | | Use para especificar um nome de objeto. Use para criar, excluir ou descobrir um objeto sem fornecer uma definição de recurso completa. Use em conjunto com api_version , kind e namespace para identificar um objeto específico. Se a definição de recurso for fornecida, o valor metadata.name de resource_definition substituirá esta opção. |
namespace | string | | Use para especificar um namespace de objeto. Útil ao criar, excluir ou descobrir um objeto sem fornecer uma definição de recurso completa. Use em conjunto com api_version , kind e name para identificar um objeto específico. Se a definição de recurso for fornecida, o valor metadata.namespace de resource_definition substituirá esta opção. |
password | string | | Forneça uma senha para autenticação com a API. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_PASSWORD. Leia a descrição da username opção para uma discussão sobre quando esta opção é aplicável. |
persist_config | boolean | Escolhas: - false(default) - true | Se deve ou não salvar os tokens de atualização de configuração do kube. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_PERSIST_CONFIG. Quando o contexto k8s está usando credenciais de usuário com tokens de atualização (como oidc ou gke / gcloud auth), o token é atualizado pela biblioteca cliente python k8s, mas não é salvo por padrão. Portanto, o token de atualização antigo pode expirar e a próxima autenticação pode falhar. Definir este sinalizador como verdadeiro dirá ao cliente python k8s para salvar o novo token de atualização no arquivo de configuração do kube. Padrão para falso. Observe que a versão atual da biblioteca cliente python k8s ainda não suporta a configuração deste sinalizador como Verdadeiro. A correção para esta biblioteca python k8s está aqui: https://github.com/kubernetes-client/python-base/pull/169 |
proxy | string | | A URL de um proxy HTTP a ser usado para a conexão. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_PROXY. Observe que este módulo não coleta configurações de proxy típicas do ambiente (por exemplo, HTTP_PROXY). |
resource_definition aliases: definition, inline | string | | Fornece uma definição YAML válida (como string, lista ou dict) para um objeto ao criar ou atualizar. NOTA: kind , api_version , name e namespace serão substituídos pelos valores correspondentes encontrados na resource_definition fornecida . |
src | path | | Fornece um caminho para um arquivo contendo uma definição YAML válida de um objeto ou objetos a serem criados ou atualizados. Mutuamente exclusivo com resource_definition. NOTA: kind , api_version , name e namespace serão substituídos pelos valores correspondentes encontrados na configuração lida no arquivo src. Lê do sistema de arquivos local. Para ler do sistema de arquivos do controlador Ansible, incluindo arquivos protegidos, use o plug-in de pesquisa de arquivo ou o plug-in de pesquisa de modelo, combinado com o filtro from_yaml, e passe o resultado para resource_definition. |
state | string | Escolhas: - present - absent | Determina se um objeto deve ser criado, corrigido ou excluído. Quando definido como present, um objeto será criado, se ainda não existir. Se definido como absent, um objeto existente será excluído. Se definido como present, um objeto existente será corrigido, se seus atributos forem diferentes daqueles especificados usando resource_definition ou src . |
template | raw | | Fornece um arquivo de definição de modelo YAML válido para um objeto ao criar ou atualizar. O valor pode ser fornecido como string ou dicionário.Mutuamente exclusivo com src e resource_definition. Os arquivos de modelo precisam estar presentes no sistema de arquivos do Ansible Controller. Parâmetros adicionais podem ser especificados usando o dicionário. Parâmetros adicionais válidos - newline_sequence (str): Especifique a sequência de nova linha a ser usada para arquivos de modelo. As opções válidas são "\ n", "\ r", "\ r \ n". Valor padrão "\ n". block_start_string(str): A string que marca o início de um bloco. Valor padrão "{%". block_end_string(str): A corda que marca o final de um bloco. Valor padrão "%}". variable_start_string(str): A string que marca o início de uma instrução de impressão. Valor padrão "{{". variable_end_string(str): A string que marca o final de uma instrução de impressão. Valor padrão "}}". trim_blocks(bool): Determina quando as novas linhas devem ser removidas dos blocos. Quando definido para yes a primeira nova linha após a remoção de um bloco (bloco, não tag variável!). O valor padrão é verdadeiro. lstrip_blocks(bool): Determine quando os espaços e tabulações devem ser removidos. Quando definido para yesespaços iniciais e tabulações são removidas do início de uma linha para um bloco. Esta funcionalidade requer Jinja 2.7 ou mais recente. O valor padrão é falso. |
username | string | | Forneça um nome de usuário para autenticação com a API. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_USERNAME. Observe que isso só funciona com clusters configurados para usar HTTP Basic Auth. Se o seu cluster tiver uma forma diferente de autenticação (por exemplo, OAuth2 no OpenShift), esta opção não funcionará conforme o esperado e você deve olhar para o k8s_auth módulo, pois ele pode fazer o que você precisa. |
validate | dictionary | | como (se for o caso) validar a definição do recurso em relação ao esquema kubernetes. Requer o módulo python kubernetes-validate e openshift> = 0.8.0 |
validate_certs aliases: verify_ssl | | Escolhas: - false(default) - true | Se deve ou não verificar os certificados SSL do servidor API. Também pode ser especificado por meio da variável de ambiente K8S_AUTH_VERIFY_SSL. |
wait | boolean | Escolhas: - false(default) - true | Se é necessário esperar que certos tipos de recursos cheguem ao estado desejado. Por padrão, o módulo é encerrado assim que o Kubernetes recebe a solicitação. Implementado para state=present para Deployment, DaemonSet e Pod, e para state=absent para todos os tipos de recursos. Para tipos de recursos sem uma implementação, waitretorna imediatamente, a menos que wait_conditionseja definido. |
wait_condition | dictionary | | Especifica uma condição personalizada no status a aguardar. Ignorado se waitnão estiver definido ou estiver definido como False. |
wait_sleep | integer | Default: 5 | Número de segundos para dormir entre verificações. |
wait_timeout | integer | Default: 120 | Quanto tempo, em segundos, deve-se esperar até que o recurso chegue ao estado desejado. Ignorado se wait não estiver definido. |
Subcampos da opção delete_options
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
gracePeriodSeconds | integer | | Especifique quantos segundos esperar antes de encerrar com força.Implementado apenas para recursos de pod. Se não for especificado, o período de carência padrão para o tipo de objeto será usado. |
preconditions | dictionary | | Especifique a condição que deve ser atendida para que a exclusão prossiga. |
propagationPolicy | string | Escolhas: - Foreground - Background - Orphan | Use para controlar como os objetos dependentes são excluídos.Se não for especificado, a política padrão para o tipo de objeto será usada. Isso pode variar entre os tipos de objeto. |
Subcampos da opção preconditions
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
resourceVersion | string | | Especifique a versão do recurso do objeto de destino. |
uid | string | | Especifique o UID do objeto de destino. |
Subcampos da opção validate
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
fail_on_error | boolean | Escolhas: - false(default) - true | se deve falhar em erros de validação. |
strict | boolean | Escolhas: - false(default) - true | se deve falhar ao passar propriedades inesperadas |
version | string | | versão do Kubernetes para validação. o padrão é a versão do servidor Kubernete |
Subcampos da opção wait_condition
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
reason | string | | O valor do campo de razão em sua condição desejada Por exemplo, se a Deployment estiver pausado, The Progressing type terá o Deployment Paused. Os possíveis motivos em uma condição são específicos para cada tipo de recurso no Kubernetes. Consulte a documentação da API do campo de status de um determinado recurso para ver as opções possíveis. |
status | string | Escolhas: - false - true(default) - unknown | O valor do campo de status em sua condição desejada. Por exemplo, se a Deployment estiver pausado, o Progressing type terá o status Unknown. |
type | string | | O tipo de condição a aguardar. Por exemplo, o Pod recurso definirá a Ready condição (entre outras). Obrigatório se você estiver especificando a wait_condition. Se deixado em branco, o wait_condition campo será ignorado. Os tipos possíveis para uma condição são específicos para cada tipo de recurso no Kubernetes. Consulte a documentação da API do campo de status de um determinado recurso para ver as opções possíveis. |
Notas
Observação
- Se sua biblioteca OpenShift Python não for 0.9.0 ou mais recente e você estiver tentando remover um item de uma matriz / dicionário associativo, por exemplo, um rótulo ou uma anotação, você precisará definir explicitamente o valor do item a ser removido para nulo . A simples exclusão da entrada no dicionário não a removerá do openshift ou do kubernetes.
- O cliente OpenShift Python envolve o cliente Python K8s, fornecendo acesso total a todos os APIS e modelos disponíveis em ambas as plataformas. Para obter detalhes da versão da API e informações adicionais, visite https://github.com/openshift/openshift-restclient-python
- Para evitar erros de validação de certificado SSL quando validate_certsfor True , toda a cadeia de certificados para o servidor API deve ser fornecida via ca_certou no arquivo kubeconfig.
Exemplos
- name: Crie um namespace k8s
community.okd.k8s:
name: testing
api_version: v1
kind: Namespace
state: present
- name: Crie um objeto de serviço a partir de uma definição embutida
community.okd.k8s:
state: present
definition:
apiVersion: v1
kind: Service
metadata:
name: web
namespace: testing
labels:
app: galaxy
service: web
spec:
selector:
app: galaxy
service: web
ports:
- protocol: TCP
targetPort: 8000
name: port-8000-tcp
port: 8000
- name: Remover um objeto de serviço existente
community.okd.k8s:
state: absent
api_version: v1
kind: Service
namespace: testing
name: web
# Passando a definição do objeto de um arquivo
- name: Crie uma implantação lendo a definição de um arquivo local
community.okd.k8s:
state: present
src: /testing/deployment.yml
- name: >-
Leia o arquivo de definição do sistema de arquivos do controlador do Atmosphere.
Se o arquivo de definição foi criptografado com o Atmosphere Vault, ele será automaticamente descriptografado.
community.okd.k8s:
state: present
definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml }}"
- name: Leia o arquivo de definição do sistema de arquivos do controlador do Atmosphere após a modelagem Jinja
community.okd.k8s:
state: present
definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"
- name: falha em erros de validação
community.okd.k8s:
state: present
definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"
validate:
fail_on_error: yes
- name: avisar sobre erros de validação, verificar propriedades inesperadas
community.okd.k8s:
state: present
definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"
validate:
fail_on_error: no
strict: yesValores Retornados
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
result | complex | sucesso | O objeto criado, corrigido ou presente de outra forma. Estará vazio no caso de exclusão. |
Subcampos da chave de retorno result
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
api_version | string | sucesso | O esquema com versão desta representação de um objeto. |
duration | integer | quando wait é true | tempo decorrido da tarefa em segundos |
items | list / elements=string | quando resource_definition ou src contém uma lista de objetos | Retornado apenas quando vários documentos yaml são passados para src ou resource_definition |
kind | string | sucesso | Representa o recurso REST que este objeto representa. |
metadata | complex | sucesso | Metadados de objeto padrão. Inclui nome, namespace, anotações, rótulos, etc. |
spec | complex | sucesso | Atributos específicos do objeto. Irá variar com base na api_version e no tipo . |
status | complex | sucesso | Detalhes do status atual do objeto. |