mtls
Platform OneEntry için mTLS sertifikasını tokenlar ve mTLS kullanarak ayarlama ve yapılandırma, ayrıca uygulamanın Nginx, Docker ve GitLab ile bir sunucuya dağıtımı
Bölüm 1: mTLS Ayarlama
API'yi Koruma
- Token Kullanarak: OneEntry ayarlarında bir token oluşturun ve bunu istek başlıklarına 'x-app-token' parametresi ile ekleyin, burada değer token olacaktır.
- mTLS Kullanarak: OneEntry kontrol panelinizde mTLS seçeneğini etkinleştirin ve OneEntry ayarlarında sertifikayı oluşturun.
Sertifikayı Ayarlama
- Kontrol panelinizde 'Erişim' sekmesine gidin ve token'dan mTLS'ye geçin.
- OneEntry'de yeni bir sertifika oluşturun ('Ayarlar' -> 'Uygulama Sertifikaları' -> 'Yeni Sertifika Oluştur').
- Sertifikayı bilgisayarınıza indirin ve projenizin kökündeki 'cert' klasörüne çıkarın.
Yerel Ortamı Ayarlama (ReactJS örneği kullanarak)
- setupProxy.js dosyasını indirin ve 'src' klasörüne kaydedin.
- 'target' parametresini düzenleyin, projenizin adresini belirtin.
- 'http-proxy-middleware' paketini yükleyin: 'npm install http-proxy-middleware'.
- Uygulamayı başlatın.
Bölüm 2: Sunucu Yapılandırması
Sunucuyu Hazırlama
- Depo bilgilerini güncelleyin:
apt update
. - Docker deposunu ekleyin ve paketleri yükleyin:
apt install nginx certbot docker-ce pwgen
.
UFW Yapılandırması
- Tüm gelen bağlantıları engelleyin:
ufw default deny incoming
. - Tüm giden bağlantılara izin verin:
ufw default allow outgoing
. - 22, 80 ve 443 numaralı portlarda gelen TCP bağlantılarına izin verin:
ufw allow 22,80,443/tcp
.
SSH Yapılandırması
- SSH daemon yapılandırmasını düzenleyin:
nano /etc/ssh/sshd_config
. PasswordAuthentication no
ayarını yapın.- SSH daemon'u yeniden başlatın:
systemctl restart ssh
.
Nginx Yapılandırması
- Varsayılan yapılandırma dosyasını kaldırın:
rm /etc/nginx/sites-available/default
. - Yeni bir yapılandırma dosyası oluşturun:
nano /etc/nginx/sites-available/my_app
. - OneEntry'den Nginx yapılandırmasını indirin ve "your_domain.com" kısmını kendi alan adınızla değiştirin.
- Ardından şu komutu çalıştırın: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled', "my_app" kısmını yapılandırma dosyanızın adıyla değiştirin.
- Certbot kullanarak SSL sertifikaları verin:
certbot certonly --webroot -w /var/www/html -d your_domain
. - Otomatik sertifika yenilemesini kontrol edin:
certbot renew --dry-run
. - Sertifikalar verildikten sonra Nginx yapılandırmasını otomatik olarak yeniden yüklemek için Certbot cron görevini düzenleyin: ‘nano /etc/cron.d/certbot', son satırı şu şekilde değiştirin:
echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot
. - 'nano /etc/nginx/sites-available/my_app' yapılandırma dosyasındaki satırları yorumdan çıkarın (burada 'my_app' yapılandırma dosyanızın adıdır).
- Nginx yapılandırmasını kontrol edin:
nginx -t
. - Her değişiklikten sonra Nginx'i yeniden yükleyin:
nginx -s reload
.
Bölüm 3: Uygulamayı GitLab ve GitHub ile Dağıtma
GitHub
GitHub Runner için yeni bir kullanıcı oluşturma
- Bir şifre oluşturun: 'pwgen -s 15 1'.
- Yeni bir kullanıcı oluşturun: 'useradd -m github-runner'.
- Bu kullanıcı için bir şifre belirleyin: 'passwd github-runner'.
- Yeni kullanıcıyı gruplara ekleyin: 'usermod -aG docker github-runner' ve 'usermod -aG sudo github-runner'.
- GitHub Runner kullanıcısının shell'ini değiştirin: 'chsh -s /bin/bash github-runner'.
- Yeni kullanıcıya geçin: 'sudo su - gitlab-runner'.
GitHub Runner'ı Yapılandırma
- Bir GitHub Runner oluşturun: depo ayarlarınıza gidin, 'Actions' sekmesine tıklayın ve 'Runners' seçeneğini seçin, ardından 'Yeni kendi barındırdığınız runner' seçeneğine tıklayın.
- 'İndir' bloğundaki talimatları ve 'Yapılandır' bloğundaki ilk komutu izleyin.
- Runner'ı sistem başlangıcına ekleyin: 'sudo ./svc.sh install'. Daha önce oluşturduğunuz şifreyi girmeniz gerekecek.
- Runner'ı başlatın: 'sudo ./svc.sh start'.
- 'Actions' bölümüne gidin, 'Runners' seçeneğine tıklayın ve 'Runner'ın çalıştığından emin olun.
- 'root' kullanıcısına geri dönün.
- Çalışma dizini oluşturun: 'mkdir -p /var/apps/frontend'.
- 'github-runner' kullanıcısı için izinleri ayarlayın: 'chown -R github-runner:docker /var/apps/frontend'.
GitHub'da ortam değişkenlerini yapılandırma
- GitHub deponuzda
DOMAIN
,MTLS_USER_CERT
veMTLS_USER_KEY
değişkenlerini oluşturun ('Ayarlar' -> 'Gizli ve Değişkenler'). - OneEntry'de bir sertifika oluşturun, sertifika ve anahtarı değişkenlere ekleyin.
DOMAIN
değişkeninde, projenizin adresini https olmadan belirtin. - docker-compose.yml dosyasını ve iki arşivi .github ve .docker indirin.
- docker-compose.yml, .github.zip ve .docker.zip dosyalarını projenizin kök klasörüne koyun ve arşivleri çıkarın (çıkarma işleminden sonra arşivleri silebilirsiniz).
- Projenizde push komutunu çalıştırın.
- 'Actions' sekmesinde süreci kontrol edin.
- Uygulamanın tarayıcıda erişilebilirliğini kontrol edin.
GitLab
GitLab Runner'ı kaydetme
- 'docker, frontend' etiketlerini belirtin.
- 'Ayarlar -> CI/CD -> Runners' bölümüne gidin ve 'Yeni proje runner' butonuna tıklayın.
- Oluşturulan dizine gidin:
cd /var/apps/gitlab-runner
. - Kayıt sürecini başlatmak için komutu çalıştırın:
docker compose run runner register
. - GitLab URL'sini girin, örneğin, https://gitlab.com/.
- GitLab'dan kayıt tokenini alın (projenin 'Runners' bölümünde) ve terminale yapıştırın.
- Yürütücüyü 'docker' olarak belirtin.
- Varsayılan görüntüyü docker:20.10.16 olarak belirtin.
GitLab'da ortam değişkenlerini ayarlama
- GitLab deponuzda
DOMAIN
,MTLS_USER_CERT
veMTLS_USER_KEY
değişkenlerini oluşturun ('Ayarlar' -> 'CI/CD' -> 'Değişkenler'). - OneEntry'de bir sertifika oluşturun, sertifika ve anahtarı değişkenlere ekleyin ve
DOMAIN
değişkeninde projenizin adresini https olmadan belirtin. - docker-compose.yml, .gitlab-ci.yml dosyalarını ve .docker arşivini indirin, dosyaları projenizin köküne yerleştirin ve arşivleri çıkarın (çıkarma işleminden sonra arşivleri silebilirsiniz).
GitLab Runner (Docker yürütücüsü) yapılandırmasını hazırlama
- Gerekli dizinleri oluşturun:
mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner
. - Komutu çalıştırın:
cat /var/apps/gitlab-runner/docker-compose.yaml version: '3' services: runner: image: 'gitlab/gitlab-runner:v16.2.0' restart: always container_name: 'gitlab-runner' privileged: true volumes: - './volumes/etc/gitlab-runner:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock' EOT
.
GitLab Runner Yapılandırması
- Yapılandırma dosyasını düzenleyin:
nano volumes/etc/gitlab-runner/config.toml
. - Docker-in-Docker'ı etkinleştirmek için
privileged
parametresinitrue
olarak ayarlayın. - Docker'ın doğru çalışması için
volumes
değerini['/var/run/docker.sock:/var/run/docker.sock', '/cache']
olarak değiştirin. - Runner'ı o kullanıcı olarak çalıştırmak için dosyanın başına
user = 'gitlab-runner'
ekleyin. - Değişiklikleri kaydedin ve editörden çıkın.
- Runner'ı yeniden başlatın: 'systemctl restart gitlab-runner'.
GitLab Runner'ı etkinleştirme ve doğrulama
- Runner'ı başlatmak için
docker compose up -d
komutunu çalıştırın. - GitLab'a gidin ve Runner'ın aktif ve çalışır durumda olduğunu kontrol edin (projenin 'Runners' bölümünde durumunu görmelisiniz).
Ana makinede ek bir Runner ayarlama (shell yürütücüsü)
- Talimatları izleyerek doğrudan ana makinede (Docker'da değil) çalışan ek bir Runner kurun.
- Runner için etiketleri ayarlayın: 'shell, frontend'.
Runner İzinleri
- Yeni bir kullanıcıyı gruba ekleyin: 'usermod -aG docker gitlab-runner'.
- Bir dosya veya dizinin sahibi ve gruplarını değiştirmek gerekiyorsa: 'chown -R gitlab-runner:docker /var/apps/frontend'.
Son Yapılandırma ve Test
- Tüm Runner'ların düzgün yapılandırıldığından ve kullanıma hazır olduğundan emin olun.
- Projenizde push komutunu çalıştırın.
- 'Build' -> 'Pipelines' bölümünde ilerlemeyi kontrol edin.
- Uygulamanın tarayıcıda erişilebilirliğini kontrol edin.
Sonuç
OneEntry ile uygulamanızın başarılı bir şekilde kurulumu ve dağıtımı için bu adımları izleyin. Geliştirmede başarılar dileriz!