
ತಂಡದ ನವೀಕರಿಸುವಾಗ ಹೆಲ್ಮ್ ರಹಸ್ಯಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೇಗೆ ರಚಿಸುವುದು ಎಂಬುದರ ಕುರಿತು. ಕೆಳಗಿನ ಪಠ್ಯವು ಲೇಖನದ ಲೇಖಕರಿಂದ ಬಂದಿದೆ, ಅವರು SaaS ಪರಿಹಾರಗಳ ಡೆವಲಪರ್ ಆಗಿರುವ Intoware ನ ತಾಂತ್ರಿಕ ನಿರ್ದೇಶಕರು.
ಕಂಟೇನರ್ಗಳು ಅದ್ಭುತವಾಗಿವೆ. ನಾನು ಆರಂಭದಲ್ಲಿ ಕಂಟೇನರ್ಗಳ ವಿರೋಧಿಯಾಗಿದ್ದೆ (ಒಪ್ಪಿಕೊಳ್ಳಲು ಮುಜುಗರವಾಗುತ್ತದೆ), ಆದರೆ ಈಗ ನಾನು ತಂತ್ರಜ್ಞಾನದ ಸಂಪೂರ್ಣ ಬೆಂಬಲಿಗನಾಗಿದ್ದೇನೆ. ನೀವು ಇದನ್ನು ಓದುತ್ತಿದ್ದರೆ, ನೀವು ಡಾಕರ್ ಸಮುದ್ರಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ದಾಟಿದ್ದೀರಿ, ಕುಬರ್ನೆಟ್ಸ್ನ ಪ್ರಯೋಜನಗಳನ್ನು ಅರಿತುಕೊಂಡಿದ್ದೀರಿ ಮತ್ತು ಹೆಲ್ಮ್ನೊಂದಿಗೆ ನಿಮ್ಮ ಜೀವನವನ್ನು ಹೆಚ್ಚು ಸುಲಭಗೊಳಿಸಿದ್ದೀರಿ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
ಆದಾಗ್ಯೂ, ಕೆಲವು ವಿಷಯಗಳು ಅವು ಇರಬೇಕಾದುದಕ್ಕಿಂತ ಸ್ಪಷ್ಟವಾಗಿ ಹೆಚ್ಚು ಜಟಿಲವಾಗಿವೆ.
ನವೀಕರಿಸುವಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಹಸ್ಯಗಳನ್ನು ಹೇಗೆ ರಚಿಸುವುದು?
ಕುಬರ್ನೆಟ್ಸ್ ರಹಸ್ಯವು ನಿಮ್ಮ ಕೋಡ್ನಲ್ಲಿ ಬಳಸಲು ಬಯಸುವ ಕೀ/ಮೌಲ್ಯ ಜೋಡಿಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಸಂಪನ್ಮೂಲವಾಗಿದೆ. ಇವು ಡೇಟಾಬೇಸ್ ಸಂಪರ್ಕ ಸ್ಟ್ರಿಂಗ್ಗಳು, ಇಮೇಲ್ ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಮುಂತಾದವುಗಳಾಗಿರಬಹುದು. ರಹಸ್ಯಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ನೀವು ಕೋಡ್ ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ ನಡುವೆ ಸ್ಪಷ್ಟವಾದ ಪ್ರತ್ಯೇಕತೆಯನ್ನು ರಚಿಸುತ್ತೀರಿ, ನಿಮ್ಮ ಕೋಡ್ಬೇಸ್ ಅನ್ನು ಬದಲಾಯಿಸದೆಯೇ ವಿಭಿನ್ನ ನಿಯೋಜನೆಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಸುಲಭವಾಗುತ್ತದೆ.
ಎರಡು ಮಾಡ್ಯೂಲ್ಗಳು ಸಾಮಾನ್ಯ ಕೀಲಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಸಂವಹನ ನಡೆಸಬೇಕಾದಾಗ ಸಾಮಾನ್ಯ ಪರಿಸ್ಥಿತಿ ಇದೆ. ಕ್ಲಸ್ಟರ್ನ ಹೊರಗಿನ ಯಾರಿಗೂ ಈ ಕೀಲಿ ತಿಳಿದಿರಬಾರದು, ಏಕೆಂದರೆ ಇದು ಕ್ಲಸ್ಟರ್ನೊಳಗೆ "ಒಂದರಿಂದ ಒಂದು" ಸಂವಹನಕ್ಕಾಗಿ ಉದ್ದೇಶಿಸಲಾಗಿದೆ.
ರಹಸ್ಯಗಳನ್ನು ರಚಿಸುವುದು
ಸಾಮಾನ್ಯವಾಗಿ, ಹೆಲ್ಮ್ನಲ್ಲಿ ರಹಸ್ಯವನ್ನು ರಚಿಸಲು, ನೀವು ಹೀಗೆ ಮಾಡಬೇಕಾಗಿದೆ:
- ಮೌಲ್ಯಗಳ ಫೈಲ್ನಲ್ಲಿ ರಹಸ್ಯವನ್ನು ವಿವರಿಸಿ;
- ನಿಯೋಜನೆಯ ಸಮಯದಲ್ಲಿ ಅದನ್ನು ಅತಿಕ್ರಮಿಸಿ;
- ಅದನ್ನು ಡಿಪ್ಲೋಯ್/ಪಾಡ್ ಒಳಗೆ ಉಲ್ಲೇಖಿಸಿ;
- … ಲಾಭ!
ಸಾಮಾನ್ಯವಾಗಿ ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:
apiVersion: v1
kind: Secret
metadata:
name: my-super-awesome-api-key
type: Opaque
stringData:
apiKey: {{ .Values.MyApiKeySecret | quote }}
values.yml ನಿಂದ ಮೌಲ್ಯಗಳನ್ನು ಬಳಸುವ ಸರಳ ಕುಬರ್ನೆಟ್ಸ್ ರಹಸ್ಯ.
ಆದರೆ ಮೌಲ್ಯಗಳ ಫೈಲ್ನಲ್ಲಿ ನಿಮ್ಮ ರಹಸ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ನೀವು ಬಯಸುವುದಿಲ್ಲ ಎಂದು ಹೇಳೋಣ.
ಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ರಚಿಸಬೇಕಾದ ಹಂಚಿಕೆಯ ಕೀಲಿಯನ್ನು ನಿಯೋಜನೆಗೆ ಅಗತ್ಯವಿರುವ ಹಲವು ಸನ್ನಿವೇಶಗಳಿವೆ.
ಮೇಲಿನ ಇಂಟರ್-ಪಾಡ್ ಸಂವಹನದ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಿಯೋಜನೆಯ ಹೊರಗೆ ರಹಸ್ಯವನ್ನು ಹಂಚಿಕೊಳ್ಳುವುದು ಅಪೇಕ್ಷಣೀಯವಲ್ಲ. ಆದ್ದರಿಂದ, ಹೆಲ್ಮ್ಗೆ ರಹಸ್ಯವನ್ನು ನೇರವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಅಗತ್ಯವಿಲ್ಲದೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲು ಕಾರ್ಯವಿಧಾನಗಳು ಇರುವುದು ಹೆಚ್ಚು ಅಪೇಕ್ಷಣೀಯವಾಗಿದೆ.
ಕೊಕ್ಕೆಗಳು
ಅನುಸ್ಥಾಪನಾ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಸ್ಥಳಗಳಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಹುಕ್ಗಳು ನಿಮಗೆ ಅವಕಾಶ ನೀಡುತ್ತವೆ. ಬಹುಶಃ ಮೊದಲ ಅನುಸ್ಥಾಪನೆಯ ನಂತರ ಒಂದು ಸೆಟಪ್ ಕಾರ್ಯವನ್ನು ಚಲಾಯಿಸಬೇಕಾಗಬಹುದು, ಅಥವಾ ಯಾವುದೇ ನವೀಕರಣಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಮೊದಲು ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆಯನ್ನು ಮಾಡಬೇಕಾಗಬಹುದು.
ಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ಉತ್ಪತ್ತಿಯಾಗುವ ಕೀಲಿಯನ್ನು ಸೇರಿಸುವ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಪೂರ್ವ-ಸ್ಥಾಪನಾ ಹುಕ್ಗಳು ಸೂಕ್ತವಾಗಿವೆ. ಆದರೆ ಒಂದು ಕ್ಯಾಚ್ ಇದೆ: ನವೀಕರಣದ ಸಮಯದಲ್ಲಿ ನೀವು ಒಮ್ಮೆ ರಹಸ್ಯವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪ್ರತಿ ನವೀಕರಣದಲ್ಲೂ ಹುಕ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.
ನೀವು ನಿಮ್ಮ ರಹಸ್ಯವನ್ನು ರಚಿಸಿದ್ದರೆ ಮತ್ತು ನಿಮ್ಮ ಮೊದಲ ಸ್ಥಾಪನೆ ಇನ್ನೂ ಸಂಭವಿಸದಿದ್ದರೆ, ಓದುವುದನ್ನು ನಿಲ್ಲಿಸಿ, ಪೂರ್ವ-ಸ್ಥಾಪನೆ ಹುಕ್ ನಿಮಗೆ ಸೂಕ್ತವಾಗಿದೆ.
ಆದರೆ ರಹಸ್ಯವು ನವೀಕರಣದ ಭಾಗವಾಗಿದ್ದರೆ (ಬಹುಶಃ ಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ಇಲ್ಲದ ಹೊಸ ವೈಶಿಷ್ಟ್ಯ), ಆಗ ಒಮ್ಮೆ ಮಾತ್ರ ಗುಂಡು ಹಾರಿಸುವ ಪೂರ್ವ-ಸ್ಥಾಪನಾ ಹುಕ್ ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗದಿರುವುದು ನಾಚಿಕೆಗೇಡಿನ ಸಂಗತಿ.
ಕಾರ್ಯಗಳು
ಹೆಲ್ಮ್ ಕಾರ್ಯಗಳು ನಿಮ್ಮ ನಿಯೋಜನಾ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಗೆ ವಿವಿಧ ಸ್ಕ್ರಿಪ್ಟ್ ಅಂಶಗಳನ್ನು ಸೇರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
apiVersion: v1
kind: Secret
metadata:
name: my-super-awesome-api-key
type: Opaque
stringData:
apiKey: {{ uuidv4 | quote }} #Generate a new UUID and quote it
ಈ ಉದಾಹರಣೆಯು apiKey ಸೀಕ್ರೆಟ್ನ ಮೌಲ್ಯವು ಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ಉತ್ಪತ್ತಿಯಾಗುವ ಹೊಸ UUID ಆಗಿರುತ್ತದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ.
ಹೆಲ್ಮ್ ನಿಜವಾಗಿಯೂ ವಿಸ್ತಾರವಾದ ಫಂಕ್ಷನ್ ಲೈಬ್ರರಿಯನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದು ಅದ್ಭುತವಾದ GO ಟೆಂಪ್ಲೇಟಿಂಗ್ ಫಂಕ್ಷನ್ಗಳನ್ನು ಮತ್ತು ಕಸ್ಟಮ್ ನಿಯೋಜನೆಗಳನ್ನು ರಚಿಸಲು ಸ್ಪ್ರಿಗ್ ಫಂಕ್ಷನ್ ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುತ್ತದೆ.
ಲುಕಪ್ ಕಾರ್ಯ
ಹೆಲ್ಮ್ 3.1 ಸೇರಿಸಲಾಗಿದೆ , ಇದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನಿಯೋಜನೆಯನ್ನು ಪ್ರಶ್ನಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು:
- ಸಂಪನ್ಮೂಲಗಳ ಲಭ್ಯತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ;
- ನಂತರದ ಬಳಕೆಗಾಗಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಂಪನ್ಮೂಲದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.
ಈ ಎರಡೂ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸಿಕೊಂಡು, ನಾವು ಒಂದು ಬಾರಿ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ರಚಿಸಲಾದ ರಹಸ್ಯವನ್ನು ರಚಿಸಬಹುದು!
# 1. Запросить существование секрета и вернуть в переменной $secret
{{- $secret := (lookup "v1" "Secret" .Release.Namespace "some-awesome-secret" -}}
apiVersion: v1
kind: Secret
metadata:
name: some-awesome-secret
type: Opaque
# 2. Если секрет существует, взять его значение как apiKey (секрет использует кодирование Base64, так что используйте ключ "data")
{{ if $secret -}}
data:
apiKey: {{ $secret.data.apiKey }}
# 3. Если секрет не существует — создать его (в этот раз используйте "stringData", так как будет обычное значение)!
{{ else -}}
stringData:
apiKey: {{ uuidv4 | quote }}
{{ end }}
ಸರ್ವರ್ಗೆ ಹೊಸ ನವೀಕರಣವನ್ನು ಅನ್ವಯಿಸಿದಾಗಲೆಲ್ಲಾ, ಹೆಲ್ಮ್ ಹೊಸ ರಹಸ್ಯ ಮೌಲ್ಯವನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ (ರಹಸ್ಯವು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದರೆ) ಅಥವಾ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮೌಲ್ಯವನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ.
ಅದೃಷ್ಟ!
ವಿಷಯದ ಬಗ್ಗೆ ಇನ್ನೇನು ಓದಬೇಕು:
- .
- .
- .
ಮೂಲ: www.habr.com
