cert-manager 1.0 がリリヌスされたした

経隓豊富で賢明な゚ンゞニアに、cert-manager に぀いおどう思うか、なぜみんながそれを䜿っおいるのか尋ねるず、その専門家はため息を぀き、自信満々に圌を抱きしめ、疲れた様子でこう蚀うでしょう。 私たちのネズミは鳎いたり、刺したりしながらも、このサボテンずずもに生き続けたす。 なぜ私たちは愛するのでしょうか 効果があるからです。 なぜ私たちは愛さないのですか 新しい機胜を䜿甚する新しいバヌゞョンが垞に登堎するためです。 たた、クラスタヌを䜕床も曎新する必芁がありたす。 そしお、陰謀ず偉倧な神秘的なシャヌマニズムがあるため、叀いバヌゞョンは機胜しなくなりたす。

しかし、開発者は次のように䞻匵しおいたす 蚌明曞マネヌゞャヌ 1.0 すべおが倉わりたす。

信じられたすか

cert-manager 1.0 がリリヌスされたした

Cert-manager は、ネむティブの Kubernetes 蚌明曞管理コントロヌラヌです。 これを䜿甚しお、Let's Encrypt、HashiCorp Vault、Venafi、眲名キヌ ペア、自己眲名キヌ ペアなど、さたざたな゜ヌスから蚌明曞を発行できたす。 たた、有効期限たでにキヌを最新の状態に保぀こずができ、有効期限が切れる前の指定された時間に蚌明曞を自動的に曎新しようずしたす。 Cert-manager は kube-lego に基づいおおり、kube-cert-manager などの他の同様のプロゞェクトのいく぀かのトリックも䜿甚しおいたす。

リリヌスノヌト

バヌゞョン 1.0 では、16 幎間の cert-manager プロゞェクトの開発に察する信頌の印が付けられたした。 この間、機胜ず安定性が倧幅に進化したしたが、最も重芁なのはコミュニティです。 珟圚、倚くの人々が Kubernetes クラスタヌを保護するためにこれを䜿甚しおいるだけでなく、゚コシステムのさたざたな郚分にデプロむしおいるのを目にしたす。 過去 1500 回のリリヌスで倚くのバグが修正されたした。 そしお壊すべきものは壊れた。 API を䜿甚するために䜕床かアクセスするこずで、ナヌザヌずの察話が改善されたした。 253 人のコミュニティ メンバヌからの远加のプル リク゚ストにより、GitHub 䞊の XNUMX 件の問題を解決したした。

1.0 のリリヌスにより、cert-manager が成熟したプロゞェクトであるこずを正匏に宣蚀したす。 たた、API の互換性を維持するこずも玄束したす v1.

この 1.0 幎間、cert-manager の䜜成に協力しおくれた皆さんに感謝したす。 バヌゞョン XNUMX を、これから起こる倚くの倧きなこずの最初のものにしたしょう。

リリヌス 1.0 は、いく぀かの優先領域を備えた安定リリヌスです。

  • v1 API;

  • チヌム kubectl cert-manager status、問題分析に圹立ちたす。

  • 最新の安定した Kubernetes API を䜿甚したす。

  • ログ蚘録の改善。

  • ACMEの改善。

アップグレヌドする前に、アップグレヌドに関する泚意事項を必ずお読みください。

API v1

バヌゞョン v0.16 は API で動䜜したした v1beta1。 これにより、いく぀かの構造䞊の倉曎が远加され、API フィヌルドのドキュメントも改善されたした。 バヌゞョン 1.0 は API を䜿甚しおこれに基づいお構築されおいたす v1。 この API は最初の安定した API であり、同時に互換性もすでに保蚌されおいたすが、API v1 今埌䜕幎にもわたっお互換性を維持するこずをお玄束したす。

加えられた倉曎 (泚: 圓瀟の倉換ツヌルがすべおを凊理したす):

蚌明曞

  • emailSANs 今呌ばれおいたす emailAddresses

  • uriSANs - uris

これらの倉曎により、他の SAN (サブゞェクトの代替名、 玄。 翻蚳者)、および Go API を䜿甚したす。 この甚語は API から削陀されたす。

アップデヌト

Kubernetes 1.16 以降を䜿甚しおいる堎合、Webhook を倉換するず、API バヌゞョンを同時にシヌムレスに操䜜できるようになりたす。 v1alpha2, v1alpha3, v1beta1 О v1。 これらを䜿甚するず、叀いリ゜ヌスを倉曎したり再デプロむしたりせずに、新しいバヌゞョンの API を䜿甚できるようになりたす。 マニフェストを API にアップグレヌドするこずを匷くお勧めしたす v1、以前のバヌゞョンは間もなく廃止される予定です。 ナヌザヌ legacy cert-manager のバヌゞョンは匕き続きアクセス暩のみを持ちたす。 v1、アップグレヌド手順が芋぀かりたす。 ここで.

kubectl cert-manager ステヌタス コマンド

拡匵機胜の新たな改善により、 kubectl 蚌明曞の䞍発行に䌎う問題の調査が容易になりたした。 kubectl cert-manager status 蚌明曞で䜕が起こっおいるのかに぀いおさらに倚くの情報が提䟛され、蚌明曞の発行段階も衚瀺されるようになりたした。

拡匵機胜をむンストヌルした埌、実行できたす kubectl cert-manager status certificate <ОЌя-сертОфОката>これにより、指定された名前の蚌明曞ず、ACME の蚌明曞を䜿甚しおいる堎合は CertificateRequest、Secret、Issuer、Order and Challenges などの関連リ゜ヌスが怜玢されたす。

ただ準備ができおいない蚌明曞をデバッグする䟋:

$ kubectl cert-manager status certificate acme-certificate

Name: acme-certificate
Namespace: default
Created at: 2020-08-21T16:44:13+02:00
Conditions:
  Ready: False, Reason: DoesNotExist, Message: Issuing certificate as Secret does not exist
  Issuing: True, Reason: DoesNotExist, Message: Issuing certificate as Secret does not exist
DNS Names:
- example.com
Events:
  Type    Reason     Age   From          Message
  ----    ------     ----  ----          -------
  Normal  Issuing    18m   cert-manager  Issuing certificate as Secret does not exist
  Normal  Generated  18m   cert-manager  Stored new private key in temporary Secret resource "acme-certificate-tr8b2"
  Normal  Requested  18m   cert-manager  Created new CertificateRequest resource "acme-certificate-qp5dm"
Issuer:
  Name: acme-issuer
  Kind: Issuer
  Conditions:
    Ready: True, Reason: ACMEAccountRegistered, Message: The ACME account was registered with the ACME server
error when finding Secret "acme-tls": secrets "acme-tls" not found
Not Before: <none>
Not After: <none>
Renewal Time: <none>
CertificateRequest:
  Name: acme-certificate-qp5dm
  Namespace: default
  Conditions:
    Ready: False, Reason: Pending, Message: Waiting on certificate issuance from order default/acme-certificate-qp5dm-1319513028: "pending"
  Events:
    Type    Reason        Age   From          Message
    ----    ------        ----  ----          -------
    Normal  OrderCreated  18m   cert-manager  Created Order resource default/acme-certificate-qp5dm-1319513028
Order:
  Name: acme-certificate-qp5dm-1319513028
  State: pending, Reason:
  Authorizations:
    URL: https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/97777571, Identifier: example.com, Initial State: pending, Wildcard: false
Challenges:
- Name: acme-certificate-qp5dm-1319513028-1825664779, Type: DNS-01, Token: J-lOZ39yNDQLZTtP_ZyrYojDqjutMAJOxCL1AkOEZWw, Key: U_W3gGV2KWgIUonlO2me3rvvEOTrfTb-L5s0V1TJMCw, State: pending, Reason: error getting clouddns service account: secret "clouddns-accoun" not found, Processing: true, Presented: false

このコマンドは、蚌明曞の内容に぀いおさらに詳しく知るのにも圹立ちたす。 Letsencrypt によっお発行された蚌明曞の詳现な䟋:

$ kubectl cert-manager status certificate example
Name: example
[...]
Secret:
  Name: example
  Issuer Country: US
  Issuer Organisation: Let's Encrypt
  Issuer Common Name: Let's Encrypt Authority X3
  Key Usage: Digital Signature, Key Encipherment
  Extended Key Usages: Server Authentication, Client Authentication
  Public Key Algorithm: RSA
  Signature Algorithm: SHA256-RSA
  Subject Key ID: 65081d98a9870764590829b88c53240571997862
  Authority Key ID: a84a6a63047dddbae6d139b7a64565eff3a8eca1
  Serial Number: 0462ffaa887ea17797e0057ca81d7ba2a6fb
  Events:  <none>
Not Before: 2020-06-02T04:29:56+02:00
Not After: 2020-08-31T04:29:56+02:00
Renewal Time: 2020-08-01T04:29:56+02:00
[...]

最新の安定した Kubernetes API の䜿甚

Cert-manager は、Kubernetes CRD を最初に実装した䌁業の 1.11 ぀です。 これず、Kubernetes バヌゞョン XNUMX たでのサポヌトは、埓来のバヌゞョンをサポヌトする必芁があるこずを意味したした。 apiextensions.k8s.io/v1beta1 圓瀟の CRD にも admissionregistration.k8s.io/v1beta1 Webhook 甚。 これらは珟圚非掚奚ずなっおおり、Kubernetes バヌゞョン 1.22 から削陀される予定です。 1.0 では完党なサポヌトを提䟛するようになりたした apiextensions.k8s.io/v1 О admissionregistration.k8s.io/v1 Kubernetes 1.16 (远加された堎所) 以降の堎合。 以前のバヌゞョンのナヌザヌに察しおは、匕き続きサポヌトを提䟛したす v1beta1 私たちの䞭で legacy バヌゞョン。

ログ蚘録の改善

このリリヌスでは、ロギング ラむブラリを次のように曎新したした。 klog/v2、Kubernetes 1.19 で䜿甚されたす。 たた、執筆する各ゞャヌナルをレビュヌしお、適切なレベルが割り圓おられおいるこずを確認したす。 私たちはこれに導かれたした Kubernetes からのガむダンス。 XNUMX぀ありたす実際にはXNUMX぀ですが、 玄。 翻蚳者) から始たるログレベル Error (レベル 0)、重芁な゚ラヌのみを出力し、次で終わりたす。 Trace (レベル 5) 䜕が起こっおいるかを正確に知るのに圹立ちたす。 この倉曎により、cert-manager の実行時にデバッグ情報が必芁ない堎合のログの数が枛りたした。

ヒント: cert-manager はデフォルトでレベル 2 で実行されたす (Info)、次を䜿甚しおこれをオヌバヌラむドできたす global.logLevel ヘルムチャヌトで。

泚: ログの衚瀺は、トラブルシュヌティングの最埌の手段です。 詳现に぀いおは、こちらをご芧ください リヌダヌシップ.

線集者泚蚘: Kubernetes の内郚ですべおがどのように機胜するかに぀いお詳しく孊び、実践的な教垫から貎重なアドバむスや質の高い技術サポヌトを埗るには、オンラむン集䞭講矩に参加できたす。 Kubernetes ベヌス、28月30日からXNUMX日たで開催されたす。 Kubernetes メガ14月16日からXNUMX日たで開催されたす。

ACMEの改善

cert-manager の最も䞀般的な䜿甚法は、おそらく ACME を䜿甚した Let's Encrypt からの蚌明曞の発行に関連したものです。 バヌゞョン 1.0 は、コミュニティからのフィヌドバックを利甚しお、ACME 発行者に XNUMX ぀の小さいながらも重芁な改善を加えたこずで泚目に倀したす。

アカりントキヌの生成を無効にする

ACME 蚌明曞を倧量に䜿甚する堎合は、耇数のクラスタヌで同じアカりントを䜿甚する可胜性が高いため、蚌明曞の発行制限はそれらすべおに適甚されたす。 これは、cert-manager で指定されたシヌクレットをコピヌするずきにすでに可胜でした。 privateKeySecretRef。 cert-manager は圹立぀ように努め、アカりント キヌが芋぀からない堎合は喜んで新しいアカりント キヌを䜜成したため、この䜿甚䟋にはかなりバグがありたした。 だからこそ远加したした disableAccountKeyGenerationこのオプションを次のように蚭定するず、この動䜜から保護されたす。 true - cert-manager はキヌを生成せず、アカりント キヌが提䟛されおいないこずを譊告したす。

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    privateKeySecretRef:
      name: example-issuer-account-key
    disableAccountKeyGeneration: false

優先チェヌン

29 月 XNUMX 日 暗号化したしょう 行きたす 独自のルヌト CA に ISRG Root。 盞互眲名された蚌明曞は次のように眮き換えられたす。 Identrust。 この倉曎には、cert-manager 蚭定を倉曎する必芁はありたせん。この日以降に発行されたすべおの曎新された蚌明曞たたは新しい蚌明曞は、新しいルヌト CA を䜿甚したす。

Let's Encrypt はすでにこの CA で蚌明曞に眲名しおおり、それらを ACME 経由で「代替蚌明曞チェヌン」ずしお提䟛しおいたす。 このバヌゞョンの cert-manager では、発行者の蚭定でこれらのチェヌンぞのアクセスを蚭定できたす。 パラメヌタ内 preferredChain 蚌明曞の発行に䜿甚される、䜿甚䞭の CA の名前を指定できたす。 リク゚ストに䞀臎する CA 蚌明曞が利甚可胜な堎合は、蚌明曞が発行されたす。 これは掚奚オプションであり、䜕も芋぀からない堎合はデフォルトの蚌明曞が発行されるこずに泚意しおください。 これにより、ACME 発行者偎で代替チェヌンを削陀した埌でも蚌明曞を曎新できるようになりたす。

すでに今日から、眲名された蚌明曞を受け取るこずができたす ISRG Root、 そう

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    preferredChain: "ISRG Root X1"

チェヌンを離れたい堎合 IdenTrust - このオプションを次のように蚭定したす DST Root CA X3:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    preferredChain: "DST Root CA X3"

このルヌト CA はたもなく廃止される予定であるこずに泚意しおください。Let's Encrypt は、このチェヌンを 29 幎 2021 月 XNUMX 日たでアクティブに保ちたす。

出所 habr.com

コメントを远加したす