مهاجرت پیکربندی keycloak مبتنی بر docker به kubernetes



من در حال توسعه یک اپلیکیشن مبتنی بر میکروسرویس هستم. در حال حاضر Docker تمام خدمات را اجرا می کند. یکی از این خدمات Keycloak است. من به راهنمایی نیاز دارم که چگونه پیکربندی خود را (به خصوص keycloak) به kubernetes منتقل کنم.

کاربرد

برنامه شامل یک کد فرانت اند (جاوا اسکریپت) در حال اجرا در مرورگر و اجزای پشتیبان زیر است:

  1. فرانت اند مسئول ارائه کد فرانت اند به مرورگر کاربر و اجرا بر روی پورت 8080 (https)

  2. پشتیبان مسئول ارائه داده های تجاری و اجرا در پورت 8085 (https)

  3. keycloak مسئول احراز هویت/مجوز و اجرا در پورت 8143 (https)

  4. nginx به عنوان پروکسی معکوس برای شبکه داخلی داکر (یعنی برای همه سرویس های بالا) کار می کند. قوانین مبتنی بر میزبان زیر استفاده می شود:

    • keycloak.external -> keycloak
    • frontend.external -> frontend
    • backend.external -> backend

گردش کار برنامه:

کاربر خود را در frontend احراز هویت می کند. برای این منظور از محاوره ورود مجدد از keycloak استفاده مجدد (keycloak در باطن به عنوان یکی از مؤلفه ها اجرا می شود). پس از آن، فرانت اند از Json Web Token ارائه شده توسط keycloak برای مجوز در مقابل مؤلفه های باطن استفاده می کند تا اطلاعات مورد نیاز را استخراج کرده و در مرورگر ارائه کند.

پیکربندی توسعه داکر

در حال حاضر من تمام اجزای لپ تاپ خود را با استفاده از کانتینرها برای تمام اجزای Backend توسعه می دهم. من ورودی های زیر را به /etc/hosts اضافه کرده ام

127.0.0.1 keycloak.خارجی
127.0.0.1 جلویی.خارجی
127.0.0.1 باطن.خارجی

فایل docker-compose من به شکل زیر است:

نسخه: ‘3.5’
خدمات:
قفل کلید:
تصویر: روپوش های کلیدی
container_name: روپوش های کلیدی
اسرار:
keycloak-server-crt
keycloak-server-key
منبع: keycloak-realm-conf
هدف: /opt/keycloak/data/import/app-realm.json
شبکه های:
پیش فرض:
نام مستعار:
keycloak.خارجی
در معرض گذاشتن:
8143
دستور:
“start-dev”
“–واردات- قلمرو”
“–http-enabled=false”
“–https-port=8143”
“–https-client-auth=none”
“–hostname-url=
“–hostname-strict-backchannel=true”
“–hostname-admin-url=
“–https-certificate-file=/run/secrets/keycloak-server-crt”
“–https-certificate-key-file=/run/secrets/keycloak-server-key”
“–پراکسی رمزگذاری مجدد”
“–hostname-port=8143”
محیط:
KEYCLOAK_ADMIN: مدیر
KEYCLOAK_ADMIN_PASSWORD: مدیر

باطن:
تصویر: باطن
container_name: باطن
اسرار:
هدف: /usr/local/backend/certs/server.crt
منبع: باطن-سرور-کلید
هدف: /usr/local/backend/certs/server.key
در معرض گذاشتن:
8085
محیط:

# تنظیمات keycloak
KEYCLOAK_AUTH_URL:
KEYCLOAK_REALM: “برنامه”
KEYCLOAK_CLIENT_ID: “باطن”
KEYCLOAK_SECRET: XXXXXX

پیشانی:
تصویر: پیشانی
container_name: پیشانی
اسرار:
منبع: frontend-server-crt
هدف: /etc/nginx/certs/server.crt
منبع: frontend-server-key
هدف: /etc/nginx/certs/server.key
در معرض گذاشتن:
8080
محیط:
KEYCLOAK_AUTH_URL:
KEYCLOAK_REALM: “برنامه”
KEYCLOAK_CLIENT_ID: “فرانت اند”

nginxproxy:
تصویر: nginx: آخرین
container_name: nginxproxy
پورت ها:
“8143:8143”
“8085:8085”
“8080:8080”
اسرار:
منبع: nginxproxy-conf
هدف: /etc/nginx/conf.d/default.conf
منبع: keycloak-server-crt
هدف: /etc/nginx/certs/keycloak.external.crt
منبع: keycloak-server-key
هدف: /etc/nginx/certs/keycloak.external.key
منبع: backend-server-crt
هدف: /etc/nginx/certs/backend.crt
منبع: باطن-سرور-کلید
هدف: /etc/nginx/certs/backend.key
منبع: frontend-server-crt
هدف: /etc/nginx/certs/frontend.crt
منبع: کلید frontend-server
هدف: /etc/nginx/certs/frontend.key
شبکه های:
پیش فرض:
نام: شبکه من
راننده: پل
ipam:
پیکربندی:
زیر شبکه: 172.177.0.0/16

اسرار:
……

 

شبکه های:
پیش فرض:
نام مستعار:
keycloak.خارجی

بهترین راه برای انتقال پیکربندی توسعه من به kubernetes چیست؟

من می توانم تصور کنم که مشکل url keycloak را می توان با استفاده از ServiceIP XX.XX.XX.XX ثابت در Keycloak Service و استفاده از hostAliases در باطن حل کرد. لطفا تایید کنید

نام مستعار host:

آی پی: “XX.XX.XX.XX”
نام میزبان:
“keycloak.external”

 




منبع: https://community.hpe.com/t5/software-general/migration-of-docker-based-keycloak-configuration-into-kubernetes/m-p/7182855#M678