box sandbox کاربر Kubernetes را در شرکت Docker – Squad Security Security Squad ایجاد کنید

وقتی کاربر را در Docker Enterprise Edition (EE) ایجاد می کنید ، آن کاربر می تواند بلافاصله یک سرویس Swarm را در خوشه ایجاد کند.

تمام کاری که او باید انجام دهد تولید ، بارگیری ، از حالت فشرده سازی و "اجرای" بسته مشتری خود است. [19659003] با این حال ، در طرف Kubernetes ، کنترل دسترسی مبتنی بر نقش (RBAC) و مجوزهای پیش فرض کاربر کمی متفاوت است.

من به شما نشان خواهم داد که چگونه یک تجربه مشابه را با Kubernetes که با Swarm آماده است پیکربندی کنید.

Docker EE مشتری ایجاد می کند. بسته ای که شامل گواهینامه ها ، متغیرهای محیط و… باشد. برای پیکربندی سیستم برای تعامل با خوشه با استفاده از دستورات docker و kubectl لازم است.

در ویندوز 10 ، از دستور زیر در پنجره PowerShell استفاده می کنید.

در لینوکس ، شما باید از env.sh در خط فرمان Bash استفاده کنید. [19659008] ken> Import-Module. env.ps1
خوشه "ucp_ken-ucp.lab.capstonec.net:6443_ken.rider" تنظیم شده است.
کاربر "ucp_ken-ucp.lab.capstonec.net:6443_ken.rider "مجموعه.
زمینه" ucp_ken-ucp.lab.capstonec.net:6443_ken.rider "اصلاح شده است.

این محیط محلی را برای برقراری ارتباط با خوشه EE از راه دور Docker EE تنظیم می کند.

هنگامی که کاربران سپس سرویس docker را اجرا می کنند ، دستور ایجاد می کنند. ، سیستم خدمات را در خوشه ایجاد می کند با استفاده از Swarm.

ken> docker service ایجاد - نام nginx nginx: 1.14-alpine
zaslrujj7y0rrp53b1ds9q7as
پیشرفت کلی: 1 از 1 وظیفه
1/1: اجرای [==================================================>]
همگرا

در Docker EE 2.0 و اکنون 2.1 ، از Kubernetes نیز به عنوان یک ارکستر برای خوشه پشتیبانی می شود.

اما ، اگر همان کاربر سعی کند با استفاده از Kubernetes یک سرویس مشابه ایجاد کند ، او ناکام می شود.

ken> kubectl استقرار nginx --image = nginx: 1.14-alpine
خطا از سرور (ممنوع):
deployments.extensions ممنوع است: کاربر
"8f796584-5683-4c24-baf8-554ad21ad86f" نمی تواند
deployments.extensions در فضای نام "پیش فرض": دسترسی رد شد

در مورد Swarm ، هنگامی که Docker EE یک کاربر ایجاد می کند تماس گیرنده ، او مجموعه /Shared/Private/ken.rider و دو کمک هزینه را تنظیم می کند.

اولین کمک هزینه ، ken.rider> کنترل محدود> /Shared/Private/ken.rider ، کنترل محدودی را به مجموعه خصوصی خود می دهد.

کمک هزینه دوم ، ken.rider> Scheduler> / Shared ، به کاربر امکان می دهد تا کار روی گره های کار در خوشه را برنامه ریزی کند.

وقتی کاربر خدمتی را ایجاد می کند ، به این مجموعه اعزام می شود.

در مورد Kubernetes ، Docker EE از Kubernetes RBAC پشتیبانی می کند ، اما مکان های نام ، نقش یا پیوند نقش را برای کاربر پیکربندی نمی کند.

به طور ساده ، مکان های نام به ما اجازه می دهد تا اشیاء را در یک خوشه کوبنتز جدا کنیم. نقش ها تعریف می کنند که یک کاربر یا گروه با اشیاء چه کاری می تواند انجام دهد. و نقشه‌برداری نقش کاربران و گروه‌ها را با نقش در فضای نام مرتبط می کند. (برای بحث کامل تر RBAC در Kubernetes ، به استفاده از مجوز RBAC در مرجع Kubernetes مراجعه کنید.)

برای اینکه (تا حدودی) اقدامات Docker EE برای کاربران Swarm برای کاربران Kubernetes باز تولید شود ، باید فضای نام ، نقش و نقش مناسب را برای آنها تعریف کنیم.

مظهر Kubernetes زیر این تنظیمات را برای ken.rider اعمال خواهد کرد.

 نوع: نام فضای مجازی
apiVersion: v1
ابرداده:
  نام: user-kenrider
---
نوع: نقش
apiVersion: rbac.authorization.k8s.io/v1
ابرداده:
  نام: کاربر-kenrider-دسترسی کامل
  فضای نام: کاربر-کاربر
قوانین:
- apiGroups: ["", "extensions", "apps"]
  منابع: ["*"]
  افعال: ["*"]
- apiGroups: ["batch"]
  منابع:
  - مشاغل
  - cronjobs
  افعال: ["*"]
---
نوع: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
ابرداده:
  برچسب ها:
    موضوع نام: ken.rider
  نام: ken.rider: کاربر-kenrider-دسترسی کامل
  فضای نام: کاربر-کاربر
roleRef:
  apiGroup: rbac.authorization.k8s.io
  نوع: نقش
  نام: کاربر-kenrider-دسترسی کامل
موضوعات:
- apiGroup: rbac.authorization.k8s.io
  نوع: کاربر
  نام: ken.rider 

اگر شما پرونده ای با مطالب فوق ، به عنوان مثال user-ken.rider.yml ایجاد کرده و با استفاده از بسته مدیریت سمت مشتری ، آن را اعمال می کنید ، موارد زیر را مشاهده خواهید کرد:

admin> kubectl اعمال -f. user -ken.rider.yml
نام فضای نام "کاربر-kenrider"
role.rbac.authorization.k8s.io ایجاد شد "" کاربر-کانراید-دسترسی کامل "
rolebinding.rbac.authorization.k8s.io "ken.rider: user-kenrider-full-access" ایجاد شده

توجه: شما توجه خواهید کرد که نام کاربری ken.rider است و فضای نام ها کاربر-کاربر (بدون نقطه) است.

Kubernetes با توجه به شخصیت های مجاز در نام های نام فضای محدود بسیار محدود است.

عبارت معمولی برای تأیید استفاده می شود: "[a-z0-9] ([- a-z0-9] * [a-z0-9])؟".

خواهید دید که چندین شخصیت در این عبارت وجود دارد که ممکن است در فیلم نامه شما مشکل ساز باشد.

به طور خاص ، بسیاری از سازمان ها از نقطه "‘ "یا" نمره زیرین "در نام های کاربران استفاده می کنند.

آنها همچنین می توانند از حروف بزرگ در نامهای کاربری خود استفاده کنند.

سرانجام ، اگر از تأیید هویت یکپارچه LDAP ، Active Directory یا OAuth استفاده می کنید ، بسیار محتمل است که از نام اصلی کاربر (UPN) به عنوان نام کاربری Docker EE استفاده شود و در بیشتر موارد آدرس ایمیل کاربر خواهد بود. که حاوی علامت @ است.

اکنون وقتی کاربر نام نام های را که ما ] ایجاد کردیم تعریف می کند ، می تواند خدمات خود.

ken> kubectl --namespace user-kenrider ایجاد استقرار nginx --image = nginx: 1.14-alpine
deployment.extensions "nginx" ایجاد شده

در این راهنما ، ما ما sandbox Kubernetes را برای کاربر ایجاد کردیم.

شما می توانید از مثال بالا برای ایجاد قالب و اسکریپت خود استفاده کنید. ماسهبازی برای هر کاربری که در خوشه Docker EE ایجاد می کنید.