Kubeadm: لا توجد طريقة برمجية للحصول على رمز اكتشاف رمز تجزئة

تم إنشاؤها على ١٢ يناير ٢٠١٨  ·  11تعليقات  ·  مصدر: kubernetes/kubeadm

إذا قمت بإنشاء رمز مميز ، عبر إنشاء رمز kubeadm .. أو أي آلية أخرى ، فلا توجد طريقة للحصول على تجزئة شهادة الرمز المميز خارج محاولة تحليل الإخراج القابل للقراءة البشري (وبالتالي غير مستقر) لـ kubeadm init. يجب أن تكون هناك طريقة يمكن قراءتها آليًا لإنشاء الرموز المميزة باستخدام تجزئات ca ، وإلا فسيتم إجبار المرء على استخدام --discovery-token-unsafe-skip-ca-verification حتى لو كانت هناك رغبة في فعل الشيء الصحيح (tm). Atm البدائل هي إما تحليل إخراج القراءة البشري المحتمل تغييره لـ kubeadm init أو إعادة تنفيذ حساب التجزئة لـ kubeadm عبر كاليفورنيا. لاحقًا لن يكون سيئًا للغاية إذا لم يتطلب قراءة المصدر لأنه ليس بسيطًا مثل أي من مخرجات cd / etc / kubernetes / pki && sha256sum * تُظهر نفس sha مثل هذا الإخراج بواسطة kubeadm init.

kinfeature prioritbacklog

التعليق الأكثر فائدة

هل جربت الإصدار الأخير من kubeadm؟

# kubeadm token create --print-join-command
kubeadm join --token 5d2dc8.3e93f8449167639b 10.0.2.66:6443 --discovery-token-ca-cert-hash sha256:44a68d4a2c2a86e05cc0d4ee8c9c6b64352c54e450021331c483561e45b34388

ال 11 كومينتر

هل جربت الإصدار الأخير من kubeadm؟

# kubeadm token create --print-join-command
kubeadm join --token 5d2dc8.3e93f8449167639b 10.0.2.66:6443 --discovery-token-ca-cert-hash sha256:44a68d4a2c2a86e05cc0d4ee8c9c6b64352c54e450021331c483561e45b34388

لا يزال الأمر غير رائع - أي شخص يحاول استخدام هذا برمجيًا سيضطر إلى تحليل الأمر لاستخراج كل من الرمز المميز وتجزئة رمز الاكتشاف. سيكون من الأفضل لو تمكنا من تحديد نموذج إخراج مثل json حتى نتمكن من تحليله بأمان

شكرًا ، لم أدرك أنه كان هناك أمر منفصل / جديد لهذا. أوافق ، سيكون من الأجمل أن يكون هذا في json. كان سير العمل السابق الخاص بي لـ 1.6 و 1.7 ، عبارة عن إنشاء رمز kubeadm ، ثم إعادة استخدام هذه القيمة عند البدء والانضمام ، كان إنشاء الرمز المميز kubeadm عبارة عن سطر ذي قيمة فردية يمكن قراءته آليًا ، ولكنه أصبح الآن أمرًا ميتًا لأنه يفتقر إلى تجزئة الشهادة (وليست في حد ذاتها قابلة للتوسيع بسبب هذا التنسيق). إعادة لماذا يمكن قراءة الجهاز ، لدي معلمات إضافية لتمريرها للانضمام وبعضها أحتاج إلى استبداله مثل نظام أسماء النطاقات لـ IP.

نعم ، لقد اضطررت إلى تفريغ أمر الانضمام إلى ملف ، ثم استخدام sed لإضافة علامة ignore-Preflight-errors ، ليست فظيعة ولكنها ليست ودية أيضًا.

لذلك هناك جهد مستمر لتقليص المراحل لجعلها أكثر برمجية وإلغاء خداع الأعلام ، هذه قصة مستخدم واحدة فقط. fabriziopandini هل لديك مشكلة والد لهذا في مكان ما؟

تضمين التغريدة
مشكلة مراحل التخرج هي # 454 ، لكنها عفا عليها الزمن نوعًا ما وقد يكون من المنطقي البدء بمرحلة جديدة بمجرد الموافقة على KEP القادم.

ومع ذلك ، فيما يتعلق بهذه المشكلة ، يجب أن نفتح IMO مشكلة مظلة مخصصة لمعالجة الطلب على المخرجات المقروءة آليًا بطريقة متسقة عبر جميع الأوامر ، لأن الطلب يمتد من kubeadm init/phases إلى kubeadm token وكذلك kubeadm upgrade (انظر # 494).

WDYT؟ إذا كان الأمر مناسبًا لك ، سأفتح إصدار المظلة الجديد ...

أنا فقط واجهت هذه المشكلة بنفسي. تمكنت من حساب sha256sum للمفتاح العام لـ ca cert باستخدام ما يلي:

$ openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2>/dev/null | sha256sum | cut -d' ' -f1

ليست جميلة...

أنا أستخدم التعابير النمطية. اختبرت مع Ansible.

- hosts: localhost
  tasks:
    - shell: kubeadm token create --print-join-command
      register: results
    - debug:
        var: results.stdout
    - set_fact:
        token: "{{ results.stdout | regex_search(regexp, '\\2') | first }}"
      vars:
        regexp: '([^\s]+\s){4}([^\s]+)'
    - debug:
        var: token
    - set_fact:
        hash: "{{ results.stdout | regex_search(regexp, '\\2') | first }}"
      vars:
        regexp: '([^\s]+\s){6}([^\s]+)'
    - debug:
        var: hash

نتيجة:

TASK [debug] *******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "results.stdout": "kubeadm join 192.168.1.2:6443 --token 3a0fje.octau87o6x30dz8i --discovery-token-ca-cert-hash sha256:1fd18093fb89b364879d5667b7ec84fd24171c30de0070deb6a3801b54a0f85c"
}

TASK [set_fact] ****************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [debug] *******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "token": "3a0fje.octau87o6x30dz8i"
}

TASK [set_fact] ****************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [debug] *******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "hash": "sha256:1fd18093fb89b364879d5667b7ec84fd24171c30de0070deb6a3801b54a0f85c"
}

إغلاق نظرًا لوجود العديد من الحلول.

هذا غير موصى به ، ولكن في https://github.com/cablespaghetti/kubeadm-aws/blob/master/worker.sh#L45 --discovery-token-unsafe-skip-ca-verification يعمل أيضًا

على Azure ، باستخدام العلامات لموارد العامل والرئيسية:
rg متغير باسم RG

masterPrivateIp = $ (az network nic list -g $ rg --query "[؟ tags.module == 'k8smasters']. ipConfigurations [0] .privateIpAddress" -o tsv)
tokenId = $ (ssh $ masterIp "kubeadm token list | grep -v TOKEN | cut -d '' -f1")
tokenSHA = $ (ssh $ masterIp "openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2> / dev / null | sha256sum | قص -d '-f1 ")

JoinCommand = "انضم kubeadm إلى $ master PrivateIp: 6443 - tokenId $ --Discovery-token-ca-cert-hash sha256: $ tokenSHA"

لـ ip في $ (az network public-ip list -g $ rg --query [؟ tags.module == 'k8sworkers']. ipAddress -o tsv)
فعل
ssh $ ip $ JoinCommand
انتهى

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات