Skip to content

Commit 98e115c

Browse files
authored
Merge pull request #27852 from edsoncelio/pt_translate_task_secrets
[PT-BR] Add content/pt-br/docs/tasks/configmap-secret/
2 parents e4ae89a + fe63395 commit 98e115c

File tree

5 files changed

+479
-0
lines changed

5 files changed

+479
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: "Gerenciando Secrets"
3+
weight: 28
4+
description: Gerenciando dados de configurações usando Secrets.
5+
---
6+
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
---
2+
title: Gerenciando Secret usando Arquivo de Configuração
3+
content_type: task
4+
weight: 20
5+
description: Criando objetos Secret usando arquivos de configuração de recursos.
6+
---
7+
8+
<!-- overview -->
9+
10+
## {{% heading "prerequisites" %}}
11+
12+
{{< include "task-tutorial-prereqs.md" >}}
13+
14+
<!-- steps -->
15+
16+
## Crie o arquivo de configuração
17+
18+
Você pode criar um Secret primeiramente em um arquivo, no formato JSON ou YAML, e depois
19+
criar o objeto. O recurso [Secret](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core)
20+
contém dois mapas: `data` e `stringData`.
21+
O campo `data` é usado para armazenar dados arbitrários, codificados usando base64. O
22+
campo `stringData` é usado por conveniência, e permite que você use dados para um Secret
23+
como *strings* não codificadas.
24+
As chaves para `data` e `stringData` precisam ser compostas por caracteres alfanuméricos,
25+
`_`, `-` ou `.`.
26+
27+
Por exemplo, para armazenar duas strings em um Secret usando o campo `data`, converta
28+
as strings para base64 da seguinte forma:
29+
30+
```shell
31+
echo -n 'admin' | base64
32+
```
33+
A saída deve ser similar a:
34+
35+
```
36+
YWRtaW4=
37+
```
38+
39+
```shell
40+
echo -n '1f2d1e2e67df' | base64
41+
```
42+
43+
A saída deve ser similar a:
44+
45+
```
46+
MWYyZDFlMmU2N2Rm
47+
```
48+
49+
Escreva o arquivo de configuração do Secret, que será parecido com:
50+
```yaml
51+
apiVersion: v1
52+
kind: Secret
53+
metadata:
54+
name: mysecret
55+
type: Opaque
56+
data:
57+
username: YWRtaW4=
58+
password: MWYyZDFlMmU2N2Rm
59+
```
60+
61+
Perceba que o nome do objeto Secret precisa ser um
62+
[nome de subdomínio DNS](/docs/concepts/overview/working-with-objects/names#dns-subdomain-name) válido.
63+
64+
{{< note >}}
65+
Os valores serializados dos dados JSON e YAML de um Secret são codificados em strings
66+
base64. Novas linhas não são válidas com essas strings e devem ser omitidas. Quando
67+
usar o utilitário `base64` em Darwin/MacOS, os usuários devem evitar usar a opção `-b`
68+
para separar linhas grandes. Por outro lado, usuários de Linux *devem* adicionar a opção
69+
`-w 0` ao comando `base64` ou o *pipe* `base64 | tr -d '\n'` se a opção `w` não estiver disponível
70+
{{< /note >}}
71+
72+
Para cenários específicos, você pode querer usar o campo `stringData` ao invés de `data`.
73+
Esse campo permite que você use strings não-base64 diretamente dentro do Secret,
74+
e a string vai ser codificada para você quando o Secret for criado ou atualizado.
75+
76+
Um exemplo prático para isso pode ser quando você esteja fazendo *deploy* de uma aplicação
77+
que usa um Secret para armazenar um arquivo de configuração, e você quer popular partes desse
78+
arquivo de configuração durante o processo de implantação.
79+
80+
Por exemplo, se sua aplicação usa o seguinte arquivo de configuração:
81+
82+
```yaml
83+
apiUrl: "https://my.api.com/api/v1"
84+
username: "<user>"
85+
password: "<password>"
86+
```
87+
88+
Você pode armazenar isso em um Secret usando a seguinte definição:
89+
90+
```yaml
91+
apiVersion: v1
92+
kind: Secret
93+
metadata:
94+
name: mysecret
95+
type: Opaque
96+
stringData:
97+
config.yaml: |
98+
apiUrl: "https://my.api.com/api/v1"
99+
username: <user>
100+
password: <password>
101+
```
102+
103+
## Crie o objeto Secret
104+
105+
Agora, crie o Secret usando [`kubectl apply`](/docs/reference/generated/kubectl/kubectl-commands#apply):
106+
107+
```shell
108+
kubectl apply -f ./secret.yaml
109+
```
110+
111+
A saída deve ser similar a:
112+
113+
```
114+
secret/mysecret created
115+
```
116+
117+
## Verifique o Secret
118+
119+
O campo `stringData` é um campo de conveniência apenas de leitura. Ele nunca vai ser exibido
120+
ao buscar um Secret. Por exemplo, se você executar o seguinte comando:
121+
122+
```shell
123+
kubectl get secret mysecret -o yaml
124+
```
125+
126+
A saída deve ser similar a:
127+
128+
```yaml
129+
apiVersion: v1
130+
kind: Secret
131+
metadata:
132+
creationTimestamp: 2018-11-15T20:40:59Z
133+
name: mysecret
134+
namespace: default
135+
resourceVersion: "7225"
136+
uid: c280ad2e-e916-11e8-98f2-025000000001
137+
type: Opaque
138+
data:
139+
config.yaml: YXBpVXJsOiAiaHR0cHM6Ly9teS5hcGkuY29tL2FwaS92MSIKdXNlcm5hbWU6IHt7dXNlcm5hbWV9fQpwYXNzd29yZDoge3twYXNzd29yZH19
140+
```
141+
142+
Os comandos `kubectl get` e `kubectl describe` omitem o conteúdo de um `Secret` por padrão.
143+
Isso para proteger o `Secret` de ser exposto acidentalmente para uma pessoa não autorizada,
144+
ou ser armazenado em um log de terminal.
145+
Para verificar o conteúdo atual de um dado codificado, veja [decodificando secret](/docs/tasks/configmap-secret/managing-secret-using-kubectl/#decoding-secret).
146+
147+
Se um campo, como `username`, é especificado em `data` e `stringData`,
148+
o valor de `stringData` é o usado. Por exemplo, dada a seguinte definição do Secret:
149+
150+
```yaml
151+
apiVersion: v1
152+
kind: Secret
153+
metadata:
154+
name: mysecret
155+
type: Opaque
156+
data:
157+
username: YWRtaW4=
158+
stringData:
159+
username: administrator
160+
```
161+
162+
Resulta no seguinte Secret:
163+
164+
```yaml
165+
apiVersion: v1
166+
kind: Secret
167+
metadata:
168+
creationTimestamp: 2018-11-15T20:46:46Z
169+
name: mysecret
170+
namespace: default
171+
resourceVersion: "7579"
172+
uid: 91460ecb-e917-11e8-98f2-025000000001
173+
type: Opaque
174+
data:
175+
username: YWRtaW5pc3RyYXRvcg==
176+
```
177+
178+
Onde `YWRtaW5pc3RyYXRvcg==` é decodificado em `administrator`.
179+
180+
## Limpeza
181+
182+
Para apagar o Secret que você criou:
183+
184+
```shell
185+
kubectl delete secret mysecret
186+
```
187+
188+
## {{% heading "whatsnext" %}}
189+
190+
- Leia mais sobre o [conceito do Secret](/docs/concepts/configuration/secret/)
191+
- Leia sobre como [gerenciar Secret com o comando `kubectl`](/docs/tasks/configmap-secret/managing-secret-using-kubectl/)
192+
- Leia sobre como [gerenciar Secret usando kustomize](/docs/tasks/configmap-secret/managing-secret-using-kustomize/)
193+
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
---
2+
title: Gerenciando Secret usando kubectl
3+
content_type: task
4+
weight: 10
5+
description: Criando objetos Secret usando a linha de comando kubectl.
6+
---
7+
8+
<!-- overview -->
9+
10+
## {{% heading "prerequisites" %}}
11+
12+
{{< include "task-tutorial-prereqs.md" >}}
13+
14+
<!-- steps -->
15+
16+
## Criando um Secret
17+
18+
Um `Secret` pode conter credenciais de usuário requeridas por Pods para acesso a um banco de dados.
19+
Por exemplo, uma string de conexão de banco de dados é composta por um usuário e senha.
20+
Você pode armazenar o usuário em um arquivo `./username.txt` e a senha em um
21+
arquivo `./password.txt` na sua máquina local.
22+
23+
```shell
24+
echo -n 'admin' > ./username.txt
25+
echo -n '1f2d1e2e67df' > ./password.txt
26+
```
27+
28+
A opção `-n` nos comandos acima garante que os arquivos criados não vão conter
29+
uma nova linha extra no final do arquivo de texto. Isso é importante porque
30+
quando o `kubectl` lê um arquivo e codifica o conteúdo em uma string base64,
31+
o caractere da nova linha extra também é codificado.
32+
33+
O comando `kubectl create secret` empacota os arquivos em um Secret e cria um
34+
objeto no API server.
35+
36+
37+
```shell
38+
kubectl create secret generic db-user-pass \
39+
--from-file=./username.txt \
40+
--from-file=./password.txt
41+
```
42+
43+
A saída deve ser similar a:
44+
45+
```
46+
secret/db-user-pass created
47+
```
48+
49+
O nome da chave padrão é o nome do arquivo. Opcionalmente, você pode definir
50+
o nome da chave usando `--from-file=[key=]source`. Por exemplo:
51+
52+
```shell
53+
kubectl create secret generic db-user-pass \
54+
--from-file=username=./username.txt \
55+
--from-file=password=./password.txt
56+
```
57+
Você não precisa escapar o caractere especial em senhas a partir de arquivos (`--from-file`).
58+
59+
Você também pode prover dados para Secret usando a tag `--from-literal=<key>=<value>`.
60+
Essa tag pode ser especificada mais de uma vez para prover múltiplos pares de chave-valor.
61+
Observe que caracteres especiais como `$`, `\`, `*`, `=`, e `!` vão ser interpretados
62+
pelo seu [shell](https://en.wikipedia.org/wiki/Shell_(computing)) e precisam ser escapados.
63+
Na maioria dos shells, a forma mais fácil de escapar as senhas é usar aspas simples (`'`).
64+
Por exemplo, se sua senha atual é `S!B\*d$zDsb=`, você precisa executar o comando dessa forma:
65+
66+
```shell
67+
kubectl create secret generic dev-db-secret \
68+
--from-literal=username=devuser \
69+
--from-literal=password='S!B\*d$zDsb='
70+
```
71+
72+
## Verificando o Secret
73+
74+
Você pode verificar se o secret foi criado:
75+
76+
```shell
77+
kubectl get secrets
78+
```
79+
80+
A saída deve ser similar a:
81+
82+
```
83+
NAME TYPE DATA AGE
84+
db-user-pass Opaque 2 51s
85+
```
86+
87+
Você pode ver a descrição do `Secret`:
88+
89+
```shell
90+
kubectl describe secrets/db-user-pass
91+
```
92+
A saída deve ser similar a:
93+
94+
```
95+
Name: db-user-pass
96+
Namespace: default
97+
Labels: <none>
98+
Annotations: <none>
99+
100+
Type: Opaque
101+
102+
Data
103+
====
104+
password: 12 bytes
105+
username: 5 bytes
106+
```
107+
108+
Os comandos `kubectl get` e `kubectl describe` omitem o conteúdo de um `Secret` por padrão.
109+
Isso para proteger o `Secret` de ser exposto acidentalmente para uma pessoa não autorizada,
110+
ou ser armazenado em um log de terminal.
111+
112+
## Decodificando o Secret {#decoding-secret}
113+
114+
Para ver o conteúdo de um Secret que você criou, execute o seguinte comando:
115+
116+
```shell
117+
kubectl get secret db-user-pass -o jsonpath='{.data}'
118+
```
119+
120+
A saída deve ser similar a:
121+
122+
```json
123+
{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="}
124+
```
125+
126+
Agora, você pode decodificar os dados de `password`:
127+
128+
```shell
129+
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
130+
```
131+
132+
A saída deve ser similar a:
133+
134+
```
135+
1f2d1e2e67df
136+
```
137+
138+
## Limpeza
139+
140+
Para apagar o Secret que você criou:
141+
142+
```shell
143+
kubectl delete secret db-user-pass
144+
```
145+
146+
<!-- discussion -->
147+
148+
## {{% heading "whatsnext" %}}
149+
150+
- Leia mais sobre o [conceito do Secret](/docs/concepts/configuration/secret/)
151+
- Leia sobre como [gerenciar Secret com o comando `kubectl`](/docs/tasks/configmap-secret/managing-secret-using-kubectl/)
152+
- Leia sobre como [gerenciar Secret usando kustomize](/docs/tasks/configmap-secret/managing-secret-using-kustomize/)

0 commit comments

Comments
 (0)