
рдЯреАрдо рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╣реЗрд▓реНрдо рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдЬрд╛рдирдХрд╛рд░реАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ, рдЗрдирдЯреВрд╡реЗрдпрд░ рдХреЗ рддрдХрдиреАрдХреА рдирд┐рджреЗрд╢рдХ, рдПрдХ SaaS рд╕рдорд╛рдзрд╛рди рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рд╣реИред
рдХрдВрдЯреЗрдирд░ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИрдВред рдореИрдВ рд╢реБрд░реВ рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рд╡рд┐рд░реЛрдзреА рдерд╛ (рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╢рд░реНрдордирд╛рдХ рд╣реИ), рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдкреВрд░реНрдг рд╕рдорд░реНрдердХ рд╣реВрдБред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдиреЗ Docker рдХреЗ рд╕рдореБрджреНрд░ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, Kubernetes рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ Helm рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рд▓рд┐рдпрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред
рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рд╣рд╕реНрдп рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ?
Kubernetes secret рдПрдХ рдРрд╕рд╛ рд╕рдВрд╕рд╛рдзрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬреА/рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдИрдореЗрд▓ рдкрд╛рд╕рд╡рд░реНрдб рдЖрджрд┐ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╕реАрдХреНрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреЛрдб рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрд▓рдЧрд╛рд╡ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рджреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рдХреЛ рднреА рдпрд╣ рдХреБрдВрдЬреА рдирд╣реАрдВ рдЬрд╛рдирдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ "рдПрдХ-рд╕реЗ-рдПрдХ" рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред
рд░рд╣рд╕реНрдп рдмрдирд╛рдирд╛
рдЖрдорддреМрд░ рдкрд░, рд╣реЗрд▓реНрдо рдореЗрдВ рд╕реАрдХреНрд░реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
- рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рд╣рд╕реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ;
- рддреИрдирд╛рддреА рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ;
- рдЗрд╕реЗ рдбрд┐рдкреНрд▓реЙрдп/рдкреЙрдб рдХреЗ рдЕрдВрджрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВ;
- тАж рд▓рд╛рдн!
рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
apiVersion: v1
kind: Secret
metadata:
name: my-super-awesome-api-key
type: Opaque
stringData:
apiKey: {{ .Values.MyApiKeySecret | quote }}
values.yml рд╕реЗ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ Kubernetes рд░рд╣рд╕реНрдп
рд▓реЗрдХрд┐рди рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд░рд╣рд╕реНрдп рдХреЛ рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдРрд╕реЗ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд╣рд╛рдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрдВрдЯрд░-рдкреЙрдб рд╕рдВрдЪрд╛рд░ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд╣рд░ рд░рд╣рд╕реНрдп рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣реЗрд▓реНрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реАрдзреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд░рд╣рд╕реНрдп рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рд╣реЛред
рд╣реБрдХреНрд╕
рд╣реБрдХреНрд╕ рдЖрдкрдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдХреЛрдИ рд╕реЗрдЯрдЕрдк рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рдкрд╣рд▓реА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рд╢рд╛рдпрдж рдХрд┐рд╕реА рднреА рдЕрдкрдбреЗрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрд▓реАрдирдЕрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░реА-рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реБрдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рдХреБрдВрдЬреА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЖрдк рдЕрдкрдбреЗрдЯ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╛рд░ рд╕реАрдХреНрд░реЗрдЯ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдЬрдирд░реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╣реБрдХреНрд╕ рд╣рд░ рдЕрдкрдбреЗрдЯ рдкрд░ рдЪрд▓реЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ рд╕реАрдХреНрд░реЗрдЯ рдЬрдирд░реЗрдЯ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреА рдкрд╣рд▓реА рдЗрдВрд╕реНрдЯреЙрд▓ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рддреЛ рдкрдврд╝рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВ, рдкреНрд░реА-рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реБрдХ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред
рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕реАрдХреНрд░реЗрдЯ рдЕрдкрдбреЗрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (рд╢рд╛рдпрдж рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рдордп рдирд╣реАрдВ рдереА), рддреЛ рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдкреНрд░реА-рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реБрдХ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдлрд╛рдпрд░ рд╣реЛред
рдХрд╛рд░реНрдп
рд╣реЗрд▓реНрдо рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
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 secret рдХрд╛ рдорд╛рди рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рдирдпрд╛ 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
