рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдРрдб-рдСрди рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ-рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЗрдирдЧреНрд░реЗрдб рдХреЗ рд▓рд┐рдП рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ (рдФрд░ рди рдХреЗрд╡рд▓) рд╕реЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдЖрджреЗрд╢ рдФрд░ рдирд╡реАрдиреАрдХрд░рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛редрдереЛрдбрд╝рд╛ рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо
рдкрд┐рдЫрд▓реА рд╢рддрд╛рдмреНрджреА рдХреЗ рд╢реБрд░реБрдЖрддреА 90 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдиреЗ рд╣рдорд╛рд░реЗ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдЬреАрд╡рди рдореЗрдВ рдЗрддрдиреА рдордЬрдмреВрддреА рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рджрд┐рди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, рдпрд╣ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдПрдХ рдиреНрдпреВрдирддрдо рд╕реНрддрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рднреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред HTTPS ("S" - рд╕реБрд░рдХреНрд╖рд┐рдд) рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ: рдПрд╕рдПрд╕рдПрд▓ / рдЯреАрдПрд▓рдПрд╕ рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдиреЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрд╡рд░реЛрдзрди рд╕реЗ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдЦреБрдж рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЙрджреНрдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Google рдиреЗ 2014 рдХрд╛ рдкрд╛рд▓рди тАЛтАЛрдХрд┐рдпрд╛ рд╣реИ"HTTPS рд╣рд░ рдЬрдЧрд╣" рд╕реНрдерд┐рддрд┐ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдХрдо рдХрд░рддреА рд╣реИред рдпрд╣ "рдкреНрд░рдЪрд╛рд░" рдЖрдо рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдпрд╛ рддреЛ рдмрд╛рдИрдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдиреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд┐рдЬрд╝рд┐рдЯ рдХреА рдЧрдИ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рд╢реБрджреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИред

рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд▓рд╛рдЧрдд рджрд╕рд┐рдпреЛрдВ рдбреЙрд▓рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдЦрд░реАрджрдирд╛ рдЙрдЪрд┐рдд рдФрд░ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, 2015 рдХреЗ рдЕрдВрдд рд╕реЗ, рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ (LE) рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдореБрдлреНрдд рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдпрд╣ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреЗ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдереА рддрд╛рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗредрдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдбреЛрдореЗрди-рдорд╛рдиреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ(рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рд╕рд░рд▓) 90 рджрд┐рдиреЛрдВ рдХреА рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде, рдФрд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдм рдХрдИ рдЙрдкрдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рддрдерд╛рдХрдерд┐рдд рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдмрдВрдзрди рдкрд░реНрдпрд╛рд╡рд░рдг (ACME) рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдбреЛрдореЗрди рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рдкреБрд╖реНрдЯрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ HTTP рдХреЛрдб (рдЬрд┐рд╕реЗ HTTP-01 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ) рдпрд╛ DNS рд░рд┐рдХреЙрд░реНрдбреНрд╕ (DNS-01) рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдкреНрд░рдорд╛рдгрди рдкреНрд░рдмрдВрдзрдХ
рдкреНрд░рдорд╛рдгрдкрддреНрд░-рдкреНрд░рдмрдВрдзрдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЛ рд╕реАрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рдХреЗ рд▓рд┐рдП CustomResourceDefinitions (рдЗрд╕рд▓рд┐рдП K8s - v1.12 рдХреЗ рдиреНрдпреВрдирддрдо рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реАрдорд╛ ) рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрджреЗрд╢ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ CRD рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИ рдФрд░ рдПрдХ YAML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ :kubectl create ns cert-manager
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v0.13.0/cert-manager.yaml
( рдирд╣реАрдВ рд╣реИ ред рдпрд╣ рднреА рдкрддрд╡рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛)рдЖрджреЗрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ (рд╕реАрдП) рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: Issuer
рдпрд╛ ClusterIssuer
, - рд╕реАрдПрд╕рдЖрд░ (рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз) рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдореЗрдВ рд╣реИ:Issuer
рдПрдХ рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ,ClusterIssuer
рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рд╛рде рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ
рдирдВрдмрд░ 1ред рд╕реНрд╡ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░
рдЖрдЗрдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ - рдПрдХ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдЖрджреЗрд╢ рджреЗрдирд╛ред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдлреА рдЖрдо рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╛ рдмрд╛рд╣рд░реА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬреЛ рдПрд╕рдПрд╕рдПрд▓ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИредрд╕рдВрд╕рд╛рдзрди Issuer
рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
name: selfsigned
spec:
selfSigned: {}
рдФрд░ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕рд╛рдзрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ Certificate
, рдЬрд╣рд╛рдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдП ( issuerRef
рдиреАрдЪреЗ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ) рдФрд░ рдЬрд╣рд╛рдВ рдирд┐рдЬреА рдХреБрдВрдЬреА (рдлрд╝реАрд▓реНрдб secretName
) рд╕реНрдерд┐рдд рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, Ingress рдХреЛ рдЗрд╕ рдХреБрдВрдЬреА рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ (рдЕрдиреБрднрд╛рдЧ tls
c рджреЗрдЦреЗрдВ spec
):---
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: selfsigned-crt
spec:
secretName: tls-secret
issuerRef:
kind: Issuer
name: selfsigned
commonName: "yet-another.website"
dnsNames:
- "yet-another.website"
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app
spec:
tls:
- hosts:
- "yet-another.website"
secretName: tls-secret
rules:
- host: "yet-another.website"
http:
paths:
- path: /
backend:
serviceName: app
servicePort: 8080
рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдХреБрдЫ рд╕реЗрдХрдВрдб рдмрд╛рдж, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:kubectl -n app describe certificate selfsigned-crt
...
Normal GeneratedKey 5s cert-manager Generated a new private key
Normal Requested 5s cert-manager Created new CertificateRequest resource "selfsigned-crt-4198958557"
Normal Issued 5s cert-manager Certificate issued successfully
рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдЧреБрдкреНрдд рд╕рдВрд╕рд╛рдзрди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:- рдирд┐рдЬреА рдХреБрдВрдЬреА
tls.key
, - рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░
ca.crt
, - рд╣рдорд╛рд░реЗ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░
tls.crt
ред
рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ openssl
, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:kubectl -n app get secret tls-secret -ojson | jq -r '.data."tls.crt"' | base64 -d | openssl x509 -dates -noout -issuer
notBefore=Feb 10 21:01:59 2020 GMT
notAfter=May 10 21:01:59 2020 GMT
issuer=O = cert-manager, CN = yet-another.website
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкрд░Issuer
рд╕рдВрдмрдВрдзрд┐рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ: рдЗрд╕рдореЗрдВ CA рдирд╣реАрдВ рд╣реИ ( рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдиреЛрдЯ рджреЗрдЦреЗрдВ ) ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Certificate
рдЧреБрдкреНрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рдирд┐рд╣рд┐рдд рд╣реИ ca.crt
ред рдпрд╣ рдПрдХ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╕реАрдП рд╕рдВрдЧрдарди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛рдУрдВ / рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдирдВрдмрд░ 2ред рдЪрд▓реЛ HTTP рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ
LE рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЛрдореЗрди рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рдкреБрд╖реНрдЯрд┐ рдЙрдкрд▓рдмреНрдз рд╣реИ : HTTP-01 рдФрд░ DNS-01редрдкрд╣рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг (HTTP-01) рд╣реИ рдПрдХ рдЕрд▓рдЧ рддреИрдирд╛рддреА, рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <your_domain > /ред рдкреНрд░рд╕рд┐рджреНрдз / рдПрдХреНрдореЗ-рдЪреБрдиреМрддреА / <рдЯреЛрдХрди> рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╡рд┐рдзрд┐ рдкреЛрд░реНрдЯ 80 рдкрд░ рдмрд╛рд╣рд░ рд╕реЗ рдЖрдИрдПрдирдЬреА рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдФрд░ рдбреЛрдореЗрди рдХреЗ DNS рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдкрддреЗ рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИредрдЬрд╛рд░реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ (DNS-01) рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЖрддрд╛ рд╣реИрдбреЛрдореЗрди рд░рд┐рдХреЙрд░реНрдб рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ DNS рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╣реЛрдиреЗ рд╕реЗред рдЬрд╛рд░реАрдХрд░реНрддрд╛, рд╕рдВрдХреЗрддрд┐рдд рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдбреЛрдореЗрди рдкрд░ TXT рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ ACME рд╕рд░реНрд╡рд░ рддрдм рдкреБрд╖реНрдЯрд┐ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд DNS рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ CloudFlare, AWS Route53, Google CloudDNS рдФрд░ рдЕрдиреНрдп рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдЗрд╕рдХрд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ( acme-dns ) рднреА рд╢рд╛рдорд┐рд▓ рд╣реИредрдиреЛрдЯ : рдорд╛рди рд▓реЗрдВ рдХрд┐ Encrypt рдХреЗ рдкрд╛рд╕ ACME рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдХрд╛рдлреА рд╕рдЦреНрдд рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рд▓рдВрдмреЗ рдкреНрд░рддрд┐рдмрдВрдз рдореЗрдВ рдирд╣реАрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓реЗрдЯреЗрдиреНрд╕рдХреНрд░рд┐рдкреНрдЯ-рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ (рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдПрд╕реАрдПрдордИ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╣реИ)редрдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt
solvers:
- http01:
ingress:
class: nginx
---
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: le-crt
spec:
secretName: tls-secret
issuerRef:
kind: Issuer
name: letsencrypt
commonName: yet-another.website
dnsNames:
- yet-another.website
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ server
y acme
(c Issuer
) рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ ред рдЗрд╕реЗ рдПрдХ рд▓рдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ рдмрд╛рдж рдореЗрдВ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкреВрд░реЗ рдСрд░реНрдбрд░ рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ:- рд╕реГрдЬрди
Certificate
рдиреЗ рдПрдХ рдирдпрд╛ рд╕рдВрд╕рд╛рдзрди рдкреИрджрд╛ рдХрд┐рдпрд╛ CertificateRequest
:
kubectl -n app describe certificate le-crt
...
Created new CertificateRequest resource "le-crt-1127528680"
- рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ - рдирд┐рд░реНрдорд╛рдг рдкрд░ рдПрдХ рдирд┐рд╢рд╛рди
Order
:
kubectl -n app describe certificaterequests le-crt-1127528680
тАж
Created Order resource app/le-crt-1127528680-1805948596
- рдпрд╣
Order
рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рд╕рдВрд╕рд╛рдзрди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ Challenge
:
kubectl -n app describe order le-crt-1127528680-1805948596
тАж
Created Challenge resource "le-crt-1127528680-1805948596-1231544594" for domain "yet-another.website"
- рдЕрдВрдд рдореЗрдВ, рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕реНрдХреИрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ:
kubectl -n app describe challenges le-crt-1127528680-1805948596-1231544594
...
Reason: Successfully authorized domain
...
Normal Started 2m45s cert-manager Challenge scheduled for processing
Normal Presented 2m45s cert-manager Presented challenge using http-01 challenge mechanism
Normal DomainVerified 2m22s cert-manager Domain "yet-another.website" verified with "http-01" validation
рдпрджрд┐ рд╕рднреА рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛рдиреА рдбреЛрдореЗрди рдмрд╛рд╣рд░ рд╕реЗ рд╕реБрд▓рдн рд╣реИ, рддреЛ LE рд╕реЗ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ ...) - рдПрдХ рдорд┐рдирдЯ рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ, рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ describe certificate le-crt
рд░рд┐рдХреЙрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ Certificate issued successfully
редрдЕрдм рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрддреЗ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ ( https://acme-v02.api.letsencrypt.org/directory
) рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЕрд╕рд▓реА рдкреНрд░рдорд╛рдг рдкрддреНрд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдСрд░реНрдбрд░ рдХрд░реЗрдВ Fake LE Intermediate X1
, рд▓реЗрдХрд┐рди рдирд╣реАрдВ Let's Encrypt Authority X3
редрдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ Certificate
: рдЕрдиреНрдпрдерд╛, рдХреЛрдИ рднреА рдЖрджреЗрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдПрдХ рд░рд╣рд╕реНрдп рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рддрддреНрдХрд╛рд▓ рд╡рд╛рдкрд╕реА рд╣реЛрдЧреА describe certificate
: Normal PrivateKeyLost 44s cert-manager Lost private key for CertificateRequest "le-crt-613810377", deleting old resource
рдпрд╣ Issuer
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рд╡рд░реНрдгрд┐рдд Certificate
(рдпрд╣ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП "рдореБрдХрд╛рдмрд▓рд╛" рдШреЛрд╖рдгрд╛рдкрддреНрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ :apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt
solvers:
- http01:
ingress:
class: nginx
рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Certificate issued successfully
, describe
рдЗрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ:kubectl -n app get secret tls-secret -ojson | jq -r '.data."tls.crt"' | base64 -d | openssl x509 -dates -noout -issuer
notBefore=Feb 10 21:11:48 2020 GMT
notAfter=May 10 21:11:48 2020 GMT
issuer=C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
рд╕рдВрдЦреНрдпрд╛ 3ред рдбреАрдПрдирдПрд╕ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд▓реЗ
рд╣рдо рд╕рд╛рдЗрдЯ рдХреЗ рд╕рднреА рдЙрдк-рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд▓рд┐рдЦрдХрд░ рдФрд░ рдЗрд╕ рдмрд╛рд░ DNS рдЪреЗрдХ (CloudFlare рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдВрдЧреЗредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CloudFlare рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдореЗрдВ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:- рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ тЖТ рдПрдкреАрдЖрдИ рдЯреЛрдХрди тЖТ рдЯреЛрдХрди рдмрдирд╛рдПрдБред
- рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
- рдЕрдиреБрдорддрд┐рдпрд╛рдВ:
- рдХреНрд╖реЗрддреНрд░ - DNS - рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
- рдЬреЛрди - рдЬрд╝реЛрди - рдкрдврд╝реЗрдВ
- рдХреНрд╖реЗрддреНрд░ рд╕рдВрд╕рд╛рдзрди:
- рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ - рд╕рднреА рдХреНрд╖реЗрддреНрд░
- рдмрдЪрдд рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП :)
y_JNkgQwkroIsflbbYqYmBooyspN6BskXZpsiH4M
ред
рдПрдХ рд╕реАрдХреНрд░реЗрдЯ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдореЗрдВ рджреЗрдЦреЗрдВ:apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token
type: Opaque
stringData:
api-token: y_JNkgQwkroIsflbbYqYmBooyspN6BskXZpsiH4M
---
apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt
solvers:
- dns01:
cloudflare:
email: my-cloudflare-acc@example.com
apiTokenSecretRef:
name: cloudflare-api-token
key: api-token
---
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: le-crt
spec:
secretName: tls-secret
issuerRef:
kind: Issuer
name: letsencrypt
commonName: yet-another.website
dnsNames:
- "yet-another.website"
- "*.yet-another.website"
(рдпрджрд┐ рдЖрдк рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдордВрдЪрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ!)рдбреЛрдореЗрди рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рджреЗрдВ:kubectl -n app describe challenges.acme.cert-manager.io le-crt-613810377-1285319347-3806582233
...
Status:
Presented: true
Processing: true
Reason: Waiting for dns-01 challenge propagation: DNS record for "yet-another.website" not yet propagated
State: pending
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Started 54s cert-manager Challenge scheduled for processing
Normal Presented 53s cert-manager Presented challenge using dns-01 challenge mechanism
рдкреИрдирд▓ рдореЗрдВ рдПрдХ TXT рд░рд┐рдХреЙрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
... рдФрд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рдПрдЧреА:Domain "yet-another.website" verified with "dns-01" validation
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд┐рд╕реА рднреА рдЙрдкрдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИ:kubectl -n app get secret tls-secret -ojson | jq -r '.data."tls.crt"' | base64 -d | openssl x509 -dates -noout -text |grep DNS:
DNS:*.yet-another.website, DNS:yet-another.website
рдбреАрдПрдирдПрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрди, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрд▓реНрджреА рд╕реЗ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреАрдПрдирдПрд╕ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдЕрд╡рдзрд┐ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдпрд╣ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рдбреАрдПрдирдПрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкрд▓ рднрд░ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рдмреАрдд рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рднреА рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, ACME рдорд╛рдирдХ рджреЛ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╡рд░рдг Issuer
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
name: letsencrypt
spec:
acme:
server: https:
privateKeySecretRef:
name: letsencrypt
solvers:
- selector:
dnsNames:
- "*.yet-another.website"
dns01:
cloudflare:
email: my-cloudflare-acc@example.com
apiTokenSecretRef:
name: cloudflare-api-token
key: api-token
- selector:
dnsNames:
- "yet-another.website"
http01:
ingress:
class: nginx
рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ Challenge
:kubectl -n app describe orders le-crt-613810377-1285319347
тАж
Normal Created 3m29s cert-manager Created Challenge resource "le-crt-613810377-1285319347-3996324737" for domain "yet-another.website"
Normal Created 3m29s cert-manager Created Challenge resource "le-crt-613810377-1285319347-1443470517" for domain "yet-another.website"
рдЪрд╛рд░ рдирдВрдмрд░ред рдЗрдирдЧреНрд░реЗрд╢рди рд╕реНрдкреЗрд╢рд▓ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ-рдореИрдиреЗрдЬрд░ рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд░рд╛рд╕реНрддреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдЧреНрд░реЗрд╕-рд╢рд┐рдо рдирд╛рдордХ рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдирд╛ рдирд╣реАрдВ рд╣реИ Certificate
ред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рдЗрдирдЧреНрд░реЗрдб рдПрдиреЛрдЯреЗрд╢рди рдХреА рдорджрдж рд╕реЗ, рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ Issuer
ред рдкрд░рд┐рдгрд╛рдо рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИ:apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- "yet-another.website"
secretName: tls-secret
rules:
- host: "yet-another.website"
http:
paths:
- path: /
backend:
serviceName: app
servicePort: 8080
рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЕрд░реНрдерд╛рдд рдПрдХ рдХрдо рдЗрдХрд╛рдИ рдХрд╛ рдирд┐рд░реНрдорд╛рдгредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдХреНрдпреВрдм-рд▓реЗрдЧреЛ рд╣реИ - kubernetes.io/tls-acme: "true"
, - рдЬрд┐рд╕реЗ Issuer
рд╣реЗрд▓реНрдо рдорд╛рдкрджрдВрдбреЛрдВ (рдпрд╛ рдкреНрд░рдмрдВрдзрдХ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреМрдХрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ редрд╣рдо рдХрдВрдкрдиреА рдореЗрдВ рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЙрдиреНрд╣реЗрдВ рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЕрдзрд┐рдХ рд╕рдВрдкреВрд░реНрдг рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛редрдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
CRD рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдСрдЯреЛ-рдЕрдХреНрд╖рдп, рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд, рдФрд░ Kubernetes рд╕рдореВрд╣реЛрдВ рдореЗрдВ Ingresss рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХреА рдЧрдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдПрдирдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдлреНрд░реА SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВредрд▓реЗрдЦ рд╣рдорд╛рд░реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ рдлрд╝рдВрдХреНрд╢рди рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЖрдк рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдВрдбрд▓ рдпрд╛ рдмрд╛рд╣рд░реА рдЬрд╛рд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗрдВрджреНрд░ (рдЬрд╛рд░реАрдХрд░реНрддрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧредрдкреБрдирд╢реНрдЪ
рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ: