Skip to content

Commit 59b4b7f

Browse files
committed
Translate /docs/tasks/configmap-secret/ into Korean
Translate /docs/tasks/configmap-secret/ into Korean - fix ver 2
1 parent 95bd616 commit 59b4b7f

File tree

4 files changed

+499
-0
lines changed

4 files changed

+499
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: "시크릿(Secret) 관리"
3+
weight: 28
4+
description: 시크릿을 사용하여 기밀 설정 데이터 관리.
5+
---
6+
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
---
2+
title: 환경 설정 파일을 사용하여 시크릿을 관리
3+
content_type: task
4+
weight: 20
5+
description: 환경 설정 파일을 사용하여 시크릿 오브젝트를 생성.
6+
---
7+
8+
9+
10+
## {{% heading "prerequisites" %}}
11+
12+
{{< include "task-tutorial-prereqs.md" >}}
13+
14+
15+
16+
## 환경 설정 파일 생성
17+
18+
먼저 새 파일에 JSON 이나 YAML 형식으로 시크릿(Secret)에 대한 상세 사항을 기록하고,
19+
이 파일을 이용하여 해당 시크릿 오브젝트를 생성할 수 있다. 이
20+
[시크릿](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core)
21+
리소스에는 `data``stringData` 의 두 가지 맵이 포함되어 있다.
22+
`data` 필드는 base64로 인코딩된 임의의 데이터를 기입하는 데 사용된다.
23+
`stringData` 필드는 편의를 위해 제공되며, 이를 사용해 시크릿 데이터를 인코딩되지 않은 문자열로
24+
기입할 수 있다.
25+
`data``stringData`은 영숫자,
26+
`-`, `_` 그리고 `.`로 구성되어야 한다.
27+
28+
예를 들어 시크릿에 `data` 필드를 사용하여 두 개의 문자열을 저장하려면 다음과 같이
29+
문자열을 base64로 변환한다.
30+
31+
```shell
32+
echo -n 'admin' | base64
33+
```
34+
35+
출력은 다음과 유사하다.
36+
37+
```
38+
YWRtaW4=
39+
```
40+
41+
```shell
42+
echo -n '1f2d1e2e67df' | base64
43+
```
44+
45+
출력은 다음과 유사하다.
46+
47+
```
48+
MWYyZDFlMmU2N2Rm
49+
```
50+
51+
다음과 같이 시크릿 구성 파일을 작성한다.
52+
53+
```yaml
54+
apiVersion: v1
55+
kind: Secret
56+
metadata:
57+
name: mysecret
58+
type: Opaque
59+
data:
60+
username: YWRtaW4=
61+
password: MWYyZDFlMmU2N2Rm
62+
```
63+
64+
시크릿 오브젝트의 이름은 유효한
65+
[DNS 서브도메인 이름](/ko/docs/concepts/overview/working-with-objects/names/#dns-서브도메인-이름)이어야 한다.
66+
67+
{{< note >}}
68+
시크릿 데이터의 직렬화된(serialized) JSON 및 YAML 값은 base64 문자열로 인코딩된다.
69+
이러한 문자열에는 개행(newline)을 사용할 수 없으므로 생략해야 한다.
70+
Darwin/macOS에서 `base64` 도구를 사용할 경우, 사용자는 긴 줄을 분할하는 `-b` 옵션을 사용해서는 안 된다.
71+
반대로, 리눅스 사용자는 `-w` 옵션을 사용할 수 없는 경우
72+
`base64` 명령어 또는 `base64 | tr -d '\n'` 파이프라인에
73+
`-w 0` 옵션을 *추가해야 한다*.
74+
{{< /note >}}
75+
76+
특정 시나리오의 경우 `stringData` 필드를 대신 사용할 수 있다. 이
77+
필드를 사용하면 base64로 인코딩되지 않은 문자열을 시크릿에 직접 넣을 수 있으며,
78+
시크릿이 생성되거나 업데이트될 때 문자열이 인코딩된다.
79+
80+
이에 대한 실제적인 예로,
81+
시크릿을 사용하여 구성 파일을 저장하는 애플리케이션을 배포하면서,
82+
배포 프로세스 중에 해당 구성 파일의 일부를 채우려는 경우를 들 수 있다.
83+
84+
예를 들어 애플리케이션에서 다음 구성 파일을 사용하는 경우:
85+
86+
```yaml
87+
apiUrl: "https://my.api.com/api/v1"
88+
username: ""
89+
password: ""
90+
```
91+
92+
다음 정의를 사용하여 이를 시크릿에 저장할 수 있다.
93+
94+
```yaml
95+
apiVersion: v1
96+
kind: Secret
97+
metadata:
98+
name: mysecret
99+
type: Opaque
100+
stringData:
101+
config.yaml: |
102+
apiUrl: "https://my.api.com/api/v1"
103+
username:
104+
password:
105+
```
106+
107+
## 시크릿 오브젝트 생성
108+
109+
[`kubectl apply`](/docs/reference/generated/kubectl/kubectl-commands#apply)를 이용하여 시크릿 오브젝트를 생성한다.
110+
111+
```shell
112+
kubectl apply -f ./secret.yaml
113+
```
114+
115+
출력은 다음과 유사하다.
116+
117+
```
118+
secret/mysecret created
119+
```
120+
121+
## 시크릿 확인
122+
123+
`stringData` 필드는 쓰기 전용 편의 필드이다. 시크릿을 조회할 때 절대 출력되지 않는다.
124+
예를 들어 다음 명령을 실행하는 경우:
125+
126+
```shell
127+
kubectl get secret mysecret -o yaml
128+
```
129+
130+
출력은 다음과 유사하다.
131+
132+
```yaml
133+
apiVersion: v1
134+
data:
135+
config.yaml: YXBpVXJsOiAiaHR0cHM6Ly9teS5hcGkuY29tL2FwaS92MSIKdXNlcm5hbWU6IHt7dXNlcm5hbWV9fQpwYXNzd29yZDoge3twYXNzd29yZH19
136+
kind: Secret
137+
metadata:
138+
creationTimestamp: 2018-11-15T20:40:59Z
139+
name: mysecret
140+
namespace: default
141+
resourceVersion: "7225"
142+
uid: c280ad2e-e916-11e8-98f2-025000000001
143+
type: Opaque
144+
```
145+
146+
`kubectl get` 및 `kubectl describe` 명령은 기본적으로 `시크릿`의 내용을 표시하지 않는다.
147+
이는 `시크릿`이 실수로 구경꾼에게 노출되거나
148+
터미널 로그에 저장되는 것을 방지하기 위한 것이다.
149+
인코딩된 데이터의 실제 내용을 확인하려면 다음을 참조한다.
150+
[시크릿 디코딩](/ko/docs/tasks/configmap-secret/managing-secret-using-kubectl/#decoding-secret).
151+
152+
하나의 필드(예: `username`)가 `data`와 `stringData`에 모두 명시되면, `stringData`에 명시된 값이 사용된다.
153+
예를 들어 다음과 같은 시크릿인 경우:
154+
155+
```yaml
156+
apiVersion: v1
157+
kind: Secret
158+
metadata:
159+
name: mysecret
160+
type: Opaque
161+
data:
162+
username: YWRtaW4=
163+
stringData:
164+
username: administrator
165+
```
166+
167+
결과는 다음과 같은 시크릿이다.
168+
169+
```yaml
170+
apiVersion: v1
171+
data:
172+
username: YWRtaW5pc3RyYXRvcg==
173+
kind: Secret
174+
metadata:
175+
creationTimestamp: 2018-11-15T20:46:46Z
176+
name: mysecret
177+
namespace: default
178+
resourceVersion: "7579"
179+
uid: 91460ecb-e917-11e8-98f2-025000000001
180+
type: Opaque
181+
```
182+
183+
여기서 `YWRtaW5pc3RyYXRvcg==`는 `administrator`으로 디코딩된다.
184+
185+
## 삭제
186+
187+
생성한 시크릿을 삭제하려면 다음 명령을 실행한다.
188+
189+
```shell
190+
kubectl delete secret mysecret
191+
```
192+
193+
## {{% heading "whatsnext" %}}
194+
195+
- [시크릿 개념](/ko/docs/concepts/configuration/secret/)에 대해 자세히 알아보기
196+
- [`kubectl` 커맨드를 사용하여 시크릿을 관리](/ko/docs/tasks/configmap-secret/managing-secret-using-kubectl/)하는 방법 알아보기
197+
- [kustomize를 사용하여 시크릿을 관리](/ko/docs/tasks/configmap-secret/managing-secret-using-kustomize/)하는 방법 알아보기
198+
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
---
2+
title: kubectl을 사용한 시크릿 관리
3+
content_type: task
4+
weight: 10
5+
description: kubectl 커맨드를 사용하여 시크릿 오브젝트를 생성.
6+
---
7+
8+
9+
10+
## {{% heading "prerequisites" %}}
11+
12+
{{< include "task-tutorial-prereqs.md" >}}
13+
14+
15+
16+
## 시크릿 생성
17+
18+
`시크릿`에는 파드가 데이터베이스에 접근하는 데 필요한 사용자 자격 증명이 포함될 수 있다.
19+
예를 들어 데이터베이스 연결 문자열은 사용자 이름과 암호로 구성된다.
20+
사용자 이름은 로컬 컴퓨터의 `./username.txt` 파일에, 비밀번호는
21+
`./password.txt` 파일에 저장할 수 있다.
22+
23+
```shell
24+
echo -n 'admin' > ./username.txt
25+
echo -n '1f2d1e2e67df' > ./password.txt
26+
```
27+
이 명령에서 `-n` 플래그는 생성된 파일의
28+
텍스트 끝에 추가 개행 문자가 포함되지 않도록 해 준다. 이는 `kubectl`이 파일을 읽고
29+
내용을 base64 문자열로 인코딩할 때 개행 문자도 함께 인코딩될 수 있기 때문에
30+
중요하다.
31+
32+
`kubectl create secret` 명령은 이러한 파일들을 시크릿으로 패키징하고
33+
API 서버에 오브젝트를 생성한다.
34+
35+
```shell
36+
kubectl create secret generic db-user-pass \
37+
--from-file=./username.txt \
38+
--from-file=./password.txt
39+
```
40+
41+
출력은 다음과 유사하다.
42+
43+
```
44+
secret/db-user-pass created
45+
```
46+
47+
기본 키 이름은 파일 이름이다. 선택적으로 `--from-file=[key=]source`를 사용하여 키 이름을 설정할 수 있다.
48+
예제:
49+
50+
```shell
51+
kubectl create secret generic db-user-pass \
52+
--from-file=username=./username.txt \
53+
--from-file=password=./password.txt
54+
```
55+
56+
파일에 포함하는 암호 문자열에서
57+
특수 문자를 이스케이프하지 않아도 된다.
58+
59+
`--from-literal==` 태그를 사용하여 시크릿 데이터를 제공할 수도 있다.
60+
이 태그는 여러 키-값 쌍을 제공하기 위해 두 번 이상 지정할 수 있다.
61+
`$`, `\`, `*`, `=``!`와 같은 특수 문자는
62+
[shell](https://en.wikipedia.org/wiki/Shell_(computing))에 해석하고 처리하기 때문에
63+
이스케이프할 필요가 있다.
64+
65+
대부분의 셸에서 암호를 이스케이프하는 가장 쉬운 방법은 암호를 작은따옴표(`'`)로 둘러싸는 것이다.
66+
예를 들어, 비밀번호가 `S!B\*d$zDsb=`인 경우,
67+
다음 커맨드를 실행한다.
68+
69+
```shell
70+
kubectl create secret generic dev-db-secret \
71+
--from-literal=username=devuser \
72+
--from-literal=password='S!B\*d$zDsb='
73+
```
74+
75+
## 시크릿 확인
76+
77+
시크릿이 생성되었는지 확인한다.
78+
79+
```shell
80+
kubectl get secrets
81+
```
82+
83+
출력은 다음과 유사하다.
84+
85+
```
86+
NAME TYPE DATA AGE
87+
db-user-pass Opaque 2 51s
88+
```
89+
90+
다음 명령을 실행하여 `시크릿`에 대한 상세 사항을 볼 수 있다.
91+
92+
```shell
93+
kubectl describe secrets/db-user-pass
94+
```
95+
96+
출력은 다음과 유사하다.
97+
98+
```
99+
Name: db-user-pass
100+
Namespace: default
101+
Labels:
102+
Annotations:
103+
104+
Type: Opaque
105+
106+
Data
107+
====
108+
password: 12 bytes
109+
username: 5 bytes
110+
```
111+
112+
`kubectl get``kubectl describe` 명령은
113+
기본적으로 `시크릿`의 내용을 표시하지 않는다. 이는 `시크릿`이 실수로 노출되거나
114+
터미널 로그에 저장되는 것을 방지하기 위한 것이다.
115+
116+
## 시크릿 디코딩 {#decoding-secret}
117+
118+
생성한 시크릿을 보려면 다음 명령을 실행한다.
119+
120+
```shell
121+
kubectl get secret db-user-pass -o jsonpath='{.data}'
122+
```
123+
124+
출력은 다음과 유사하다.
125+
126+
```json
127+
{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="}
128+
```
129+
130+
이제 `password` 데이터를 디코딩할 수 있다.
131+
132+
```shell
133+
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
134+
```
135+
136+
출력은 다음과 유사하다.
137+
138+
```
139+
1f2d1e2e67df
140+
```
141+
142+
## 삭제
143+
144+
생성한 시크릿을 삭제하려면 다음 명령을 실행한다.
145+
146+
```shell
147+
kubectl delete secret db-user-pass
148+
```
149+
150+
151+
152+
## {{% heading "whatsnext" %}}
153+
154+
- [시크릿 개념](/ko/docs/concepts/configuration/secret/)에 대해 자세히 알아보기
155+
- [환경 설정 파일을 사용하여 시크릿을 관리](/ko/docs/tasks/configmap-secret/managing-secret-using-config-file/)하는 방법 알아보기
156+
- [kustomize를 사용하여 시크릿을 관리](/ko/docs/tasks/configmap-secret/managing-secret-using-kustomize/)하는 방법 알아보기

0 commit comments

Comments
 (0)