1. Giriş
Gol sayısı
Altyapının ve Firebase ürünlerinin programatik yapılandırması dahil olmak üzere, bir Firebase projesi oluşturmak ve yönetmek için Terraform'u kullanabilirsiniz.
Bu codelab'de önce yeni bir Firebase projesi oluşturmak için Terraform yapılandırma dosyasının nasıl oluşturulacağı, ardından bu projede kullanmak istediğiniz uygulamaların ve Firebase ürünlerinin nasıl yapılandırılacağı açıklanmaktadır. Ayrıca, yapılacak değişiklikleri önizleme ve uygulama gibi Terraform komut satırıyla ilgili temel bilgileri de ele alacağız.
Firebase projelerini ve ürünlerini Terraform ile oluşturup yönetmeyi öğrenmek istiyorsanız bu codelab'de tam size göre!
Neler öğreneceksiniz?
- Terraform yapılandırma dosyası oluşturma (
*.tf
) - Altyapınızı yönetmek için Terraform CLI komutlarını kullanma
- Kaynaklarınızı ve hizmetlerinizi güncellemek için yapılandırmanızı değiştirme
- Yapılandırmanızı gerçek bir web uygulamasında nasıl uygulayabilirsiniz? (Dostça Sohbet olarak adlandırılır)
- Farklı ortamlarda (üretim, hazırlık vb.) paralel (ve senkronize olan) yapılandırmaları tanımlama
Gerekenler
- Terminal/konsol
- Tercih ettiğiniz WebStorm, Atom, Sublime veya VS Code gibi IDE/metin düzenleyici
- Tercih ettiğiniz tarayıcı (ör. Chrome)
- Google Cloud KSA (gcloud CLI) - Bu KSA'yı yükleyin ve bir kullanıcı hesabı veya hizmet hesabı kullanarak giriş yapın
Bu codelab'de başarılı olmak için aşağıdaki ön koşullar da dahil olmak üzere Terraform'da ve terminolojisinde temel düzeyde yeterliliğe sahip olmanız gerekir:
- Terraform'u yükleyin ve resmi eğiticilerinden yararlanarak Terraform hakkında bilgi edinin
Bu codelab'de, Terraform aracılığıyla sağladığınız öğeleri test edip bunlarla etkileşimde bulunabilmeniz için gerçek bir örnek uygulama sunulmaktadır. Bunun için aşağıdakilere ihtiyacınız olacaktır:
- Web uygulaması için örnek kod: codelab'in sonraki adımında bu kodu indirin
- Paket yöneticisi npm (genellikle Node.js ile birlikte gelir) - bu araçları yükleyin
- Firebase CLI: Bu KSA'yı yükleyin ve giriş yapın.
2. Başlangıç kodunu al
Bu codelab'de, Terraform üzerinden sağladığınız öğeleri gerçek bir web uygulamasıyla test edebilirsiniz. Terraform tarafından temel hazırlığı yapılan kaynakları kullanırken gereken tüm adımları anlamanız için bu işlemi yapmanızı öneririz.
Komut satırından codelab'in GitHub deposunu klonlayın:
git clone https://github.com/firebase/codelab-friendlychat-web
Alternatif olarak, git yüklü değilse depoyu bir ZIP dosyası olarak indirebilirsiniz.
3. Terraform yapılandırması oluşturma
Terraform kurulumu
- İndirilen örnek uygulamanın kod tabanında
web
dizininin köküne gidin. - Bu dizinin kök dizininde, aşağıdaki ilk kurulumu kullanarak
main.tf
adında bir Terraform yapılandırma dosyası oluşturun:
main.tf# Terraform configuration to set up providers by version. terraform { required_providers { google-beta = { source = "hashicorp/google-beta" version = "~> 4.0" } } } # Configure the provider not to use the specified project for quota check. # This provider should only be used during project creation and initializing services. provider "google-beta" { alias = "no_user_project_override" user_project_override = false } # Configure the provider that uses the new project's quota. provider "google-beta" { user_project_override = true }
Her google-beta
sağlayıcısının, Terraform'daki işlemlerin kotasının nasıl kontrol edileceğini user_project_override
adında bir özelliğe sahiptir. Çoğu kaynağın temel hazırlığını yapmak için user_project_override = true
kullanmanız gerekir. Bu, kotayı kendi Firebase projenizle karşılaştırarak kontrol etmek anlamına gelir. Ancak yeni projenizi kota kontrollerini kabul edecek şekilde ayarlamak için önce user_project_override=false
kullanmanız gerekir. Terraform alias
söz dizimi, bu codelab'in sonraki adımlarında iki sağlayıcı kurulumunu ayırt etmenizi sağlar.
Dizinde Terraform'u başlatın
İlk kez yeni bir yapılandırma oluşturmak için, yapılandırmada belirtilen sağlayıcının indirilmesi gerekir.
Bu başlatmayı yapmak için main.tf
yapılandırma dosyanızla aynı dizinin kök dizininden aşağıdaki komutu çalıştırın:
terraform init
4. Terraform aracılığıyla Firebase projesi oluşturma
"Firebase projesi oluşturmak" için her Firebase projesinin aslında bir Google Cloud projesi olduğunu ve Firebase hizmetlerinin etkinleştirildiğini unutmayın.
Temel Google Cloud projesi ve API'ler için bloklar ekleyin
- Önce temel Google Cloud projesini sağlayın.
main.tf
yapılandırma dosyanıza aşağıdaki kaynak bloğunu ekleyin.
Kendi projenizin adını (ör."Terraform FriendlyChat Codelab"
) ve kendi proje kimliğinizi (ör."terraform-codelab-your-initials"
) belirtmeniz gerekir.name
değerinin yalnızca Firebase arayüzlerinde kullanıldığını ve son kullanıcıların bu değeri görmediğini unutmayın. Ancakproject_id
değeri, projenizi Google'a benzersiz bir şekilde tanımlar, bu nedenle benzersiz bir değer belirttiğinizden emin olun. ziyaret edin. ana.tf... # Create a new Google Cloud project. resource "google_project" "default" { provider = google-beta.no_user_project_override name = "<PROJECT_NAME_OF_YOUR_PROJECT>" project_id = "<PROJECT_ID_OF_YOUR_PROJECT>" # Required for the project to display in any list of Firebase projects. labels = { "firebase" = "enabled" } }
- Ardından, gerekli temel API'leri etkinleştirmeniz gerekir: Service Usage API ve Firebase Management API.
Bu API etkinleştirme işlemi, Firebase projesi oluşturmak için Firebase konsolunu kullandığınızda genellikle arka planda gerçekleştirilir ancak Terraform'a bu etkinleştirme işlemini yapması açıkça söylenmesi gerekir.main.tf
yapılandırma dosyanıza (yeni Cloud projesini oluşturan bloğun hemen altında) şu kaynak bloğunu ekleyin:
main.tf Service Usage API'yi etkinleştirdiğinizde yeni projeniz kota kontrollerini kabul edebilir. Bu nedenle, sonraki tüm kaynak sağlama ve hizmet etkinleştirme işlemleri için sağlayıcıyı... # Enable the required underlying Service Usage API. resource "google_project_service" "serviceusage" { provider = google-beta.no_user_project_override project = google_project.default.project_id service = "serviceusage.googleapis.com" # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Enable the required underlying Firebase Management API. resource "google_project_service" "firebase" { provider = google-beta.no_user_project_override project = google_project.default.project_id service = "firebase.googleapis.com" # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false }
user_project_override
ile kullanmanız gerekir (takma ad gerekmez).
Firebase hizmetlerini etkinleştirmek için blok ekleyin
"Firebase projesi oluşturmak" için gereken son şey projede Firebase hizmetlerini etkinleştirmektir.
main.tf
yapılandırma dosyanıza aşağıdaki kaynak bloğunu ekleyin.
Yukarıda belirtildiği gibi, bu kaynak bloğunun sağlayıcıyı user_project_override
ile kullandığını unutmayın (takma ad gerekmez).
ana.tf
...
# Enable Firebase services for the new project created above.
resource "google_firebase_project" "default" {
provider = google-beta
project = google_project.default.project_id
# Wait until the required APIs are enabled.
depends_on = [
google_project_service.firebase,
google_project_service.serviceusage,
]
}
Yukarıdaki kaynak bloğunda, Terraform'a temel API'lerin etkinleştirilmesini beklemesini bildiren depends_on
ifadesini görebilirsiniz. Bu ifade olmadan, Terraform bağımlılıktan haberdar olmaz ve kaynakların paralel olarak sağlanması sırasında hatalarla karşılaşabilir.
Yapılandırmayı uygulama
- Yeni kaynakların temel hazırlığını yapmak ve yapılandırma dosyanızda belirtilen API'leri etkinleştirmek için
main.tf
dosyanızla aynı dizinin (web
olmalıdır) kök dizininden aşağıdaki komutu çalıştırın:terraform apply
- Terraform, terminalde gerçekleştireceği işlemlerin planını yazdırır.
Her şey beklendiği gibi görünüyorsa işlemleriyes
yazarak onaylayın.
main.tfTerraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_firebase_project.default will be created + resource "google_firebase_project" "default" { + display_name = (known after apply) + id = (known after apply) + project = "terraform-friendlychat-codelab" + project_number = (known after apply) } # google_project.default will be created + resource "google_project" "default" { + auto_create_network = true + id = (known after apply) + labels = { + "firebase" = "enabled" } + name = "Terraform FriendlyChat Codelab" + number = (known after apply) + project_id = "terraform-friendlychat-codelab" + skip_delete = (known after apply) } # google_project_service.firebase will be created + resource "google_project_service" "firebase" { + disable_on_destroy = false + id = (known after apply) + project = "terraform-friendlychat-codelab" + service = "firebase.googleapis.com" } # google_project_service.serviceusage will be created + resource "google_project_service" "serviceusage" { + disable_on_destroy = false + id = (known after apply) + project = "terraform-friendlychat-codelab" + service = "serviceusage.googleapis.com" } Plan: 4 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes # <----
Değişiklikleri uygulamadan yalnızca önizlemeniz gerekiyorsa bunun yerine terraform plan
komutunu kullanabilirsiniz.
Değişiklikleri doğrulama
Terraform çalışmayı bitirdikten sonra, aşağıdaki komutu çalıştırarak Terraform'un sağladığı tüm kaynak ve hizmetlerin durumunu inceleyebilirsiniz:
terraform show
Aşağıda, yazdırılmış olarak göreceğiniz bir örnek verilmiştir. Eyaletiniz, projenize özgü değerleri içerecektir.
# google_firebase_project.default:
resource "google_firebase_project" "default" {
display_name = "Terraform FriendlyChat Codelab"
id = "projects/terraform-friendlychat-codelab"
project = "terraform-friendlychat-codelab"
project_number = "000000000"
}
# google_project.default:
resource "google_project" "default" {
auto_create_network = true
id = "projects/terraform-friendlychat-codelab"
labels = {
"firebase" = "enabled"
}
name = "Terraform FriendlyChat Codelab"
number = "000000000"
project_id = "terraform-friendlychat-codelab"
}
# google_project_service.firebase:
resource "google_project_service" "firebase" {
disable_on_destroy = false
id = "terraform-friendlychat-codelab/firebase.googleapis.com"
project = "terraform-friendlychat-codelab"
service = "firebase.googleapis.com"
}
# google_project_service.serviceusage:
resource "google_project_service" "serviceusage" {
disable_on_destroy = false
id = "terraform-friendlychat-codelab/serviceusage.googleapis.com"
project = "terraform-friendlychat-codelab"
service = "serviceusage.googleapis.com"
}
Alternatif olarak, Firebase konsolunda görüntüleyerek projenin oluşturulduğunu doğrulayabilirsiniz.
5. Firebase uygulamanızı Terraform üzerinden kaydedin
Firebase'i kullanmak için uygulamanızın her platform varyantını Firebase projenize kaydetmeniz gerekir. Bu codelab'de, Terraform üzerinden sağladığınız içeriği test etmek ve bunlarla etkileşim kurmak için gerçek bir uygulama kullanacaksınız. Bu uygulama bir web uygulaması olduğundan Terraform'a yeni oluşturduğunuz Firebase projenize bir Firebase Web Uygulaması kaydetmesini bildirmeniz gerekir.
Web uygulamasını kaydetmek için blok ekleyin
Web uygulamanızı Firebase projenize kaydetmek için main.tf
dosyanıza aşağıdaki kaynak bloğunu ekleyin.
Web uygulamanız için kendi display_name
öğenizi belirtmeniz gerekir. Bu adın yalnızca Firebase arayüzlerinde kullanıldığını ve son kullanıcılara görünmediğini unutmayın.
ana.tf
...
# Create a Firebase Web App in the new project created above.
resource "google_firebase_web_app" "default" {
provider = google-beta
project = google_firebase_project.default.project
display_name = "<DISPLAY_NAME_OF_YOUR_WEB_APP>"
deletion_policy = "DELETE"
}
Yapılandırmayı uygulama
- Yeni kaynağın temel hazırlığını yapmak için,
main.tf
dosyanızla aynı dizinin kök dizininden (web
olmalıdır) aşağıdaki komutu çalıştırın. Bu komutun yeni bir Google Cloud projesini yeniden oluşturmayacağını unutmayın. Terraform, belirtilen proje kimliğine sahip bir projenin zaten var olduğunu tespit edip projenin geçerli durumunuterraform apply
.tf
dosyasındakilerle karşılaştırır ve bulduğu değişiklikleri yapar. - Yazdırılan eylem planını inceleyin. Her şey beklendiği gibi görünüyorsa işlemleri onaylamak için
yes
yazın ve Enter tuşuna basın.
Değişiklikleri doğrulama
Aşağıdaki komutu çalıştırarak yeni sağlanan kaynağın durumunu inceleyebilirsiniz:
terraform show
Alternatif olarak, uygulamayı Firebase konsolunda görüntüleyerek uygulamanın projenize başarıyla kaydedildiğini doğrulayabilirsiniz. Proje ayarları'na, ardından Uygulamalarınız bölümüne ilerleyin.
6. Firebase Authentication'ı kurma
Kimlik doğrulama her uygulamanın önemli bir parçasıdır. Son kullanıcıların web uygulamanızda Google hesaplarıyla oturum açmasına izin vermek için Firebase Authentication'ı etkinleştirebilir ve Google ile oturum açma yöntemini ayarlayabilirsiniz.
Bu codelab'de Firebase Authentication'ı ayarlamak için iki farklı seçenek sağladığımızı unutmayın:
- 1. Seçenek (Önerilen): Konsolda Firebase Authentication'ı kurun. Bu, GCIP gerektirmez.
- Bu seçeneği kullandığınızda yeni projenizi bir Cloud Faturalandırma Hesabı ile ilişkilendirmeniz gerekmez.
- 2. Seçenek: Google Cloud Identity Platform (GCIP) API'lerini kullanarak Terraform üzerinden Firebase Authentication'ı kurun.
- GCIP, projenin Blaze fiyatlandırma planı kapsamında olmasını gerektirdiğinden bu seçeneği kullanırsanız yeni projenizi bir Cloud Faturalandırma Hesabı ile ilişkilendirmeniz gerekir.
1. seçenek: Firebase konsolunu kullanarak Authentication'ı ayarlama
Firebase konsolunu kullanarak Firebase Authentication'ı ayarlamak için projenizin Blaze fiyatlandırma planında olması gerekmez.
Firebase Authentication'ı ayarlamak ve Google ile oturum açmak için aşağıdaki adımları uygulayın:
- Firebase konsolunda, sol panelden Derleme bölümünü bulun.
- Kimlik doğrulama'yı, Başlayın'ı, ardından Oturum açma yöntemi sekmesini tıklayın (veya doğrudan bu sayfaya gitmek için burayı tıklayın).
- Yeni sağlayıcı ekle'yi tıklayın ve Ek sağlayıcılar bölümünde Google'ı seçin.
- Etkinleştir düğmesini açık konuma getirin.
- Uygulamanızın herkese açık adını
FriendlyChat
gibi bir ada ayarlayın (bunun global olarak benzersiz olması gerekmez). - Açılır menüden bir Proje desteği e-posta adresi seçin ve ardından Kaydet'i tıklayın.
- Google'ı etkin bir oturum açma sağlayıcısı olarak görmeniz gerekir.
2. Seçenek: Google Cloud Identity Platform (GCIP) API'lerini kullanarak Terraform üzerinden kimlik doğrulamayı ayarlama
Firebase Authentication'ı Terraform üzerinden ayarlamak için GCIP API'lerini kullanmanız gerekir. Bu, projenin Blaze fiyatlandırma planına dahil olması gerektiği anlamına gelir. Projeyle bir Cloud Faturalandırma hesabı ilişkilendirerek Firebase projenizi Blaze planını kullanacak şekilde yükseltirsiniz.
Terraform üzerinden faturalandırmayı etkinleştirme
- Cloud Faturalandırma hesabınız yoksa ilk olarak Google Cloud Console'da yeni bir hesap oluşturun. Bunu yaparken Faturalandırma hesabı kimliğini not edin. Faturalandırma hesabı kimliği, projenizle ilişkili Faturalandırma hesabı kimliğindeki Faturalandırma sayfasında bulunabilir.
- Projenizde Terraform aracılığıyla faturalandırmayı etkinleştirmek için
main.tf
dosyanızdaki mevcutgoogle_project
kaynağına birbilling_account
özelliği ekleyin:
main.tf... # Create a new Google Cloud project. resource "google_project" "default" { provider = google-beta.no_user_project_override name = "<PROJECT_NAME_OF_YOUR_PROJECT>" project_id = "<PROJECT_ID_OF_YOUR_PROJECT>" billing_account = "<YOUR_BILLING_ACCOUNT_ID>" # Add this line with your Cloud Billing account ID # Required for the project to display in any list of Firebase projects. labels = { "firebase" = "enabled" } } ...
Firebase Authentication'ı etkinleştirin ve Terraform üzerinden Google ile oturum açın
- Firebase Authentication'ı GCIP ile sağlamak için
main.tf
dosyanıza şu kaynak bloklarını ekleyin:
main.tf... # Enable the Identity Toolkit API. resource "google_project_service" "auth" { provider = google-beta project = google_firebase_project.default.project service = "identitytoolkit.googleapis.com" # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Create an Identity Platform config. # Also, enable Firebase Authentication using Identity Platform (if Authentication isn't yet enabled). resource "google_identity_platform_config" "auth" { provider = google-beta project = google_firebase_project.default.project # For example, you can configure to auto-delete anonymous users. autodelete_anonymous_users = true # Wait for identitytoolkit.googleapis.com to be enabled before initializing Authentication. depends_on = [ google_project_service.auth, ] }
- Google ile oturum açma özelliğini etkinleştirmek için bir OAuth istemciniz olması gerekir. API'ler ve Hizmetler bölümünü ziyaret edin.
- Bu proje için ilk kez bir istemci kimliği oluşturduğunuzdan OAuth izin ekranınızı yapılandırmanız gerekir.
- OAuth izin ekranı sayfasını açın ve az önce oluşturduğunuz projeyi seçin.
- Kullanıcı Türü'nü Harici olarak ayarlayın ve Oluştur'u tıklayın.
- Bir sonraki ekranda aşağıdaki adımları tamamlayın ve ardından Kaydet ve devam et'i tıklayın.
- Uygulamanızın herkese açık Uygulama adını
FriendlyChat
gibi bir ada ayarlayın (bunun global olarak benzersiz olması gerekmez). - Açılır menüden bir Kullanıcı desteği e-postası seçin.
- Geliştirici iletişim bilgileri için bir e-posta girin.
- Uygulamanızın herkese açık Uygulama adını
- Sonraki ekranlarda aşağıdaki işlemleri tamamlayın:
- Kapsamlar sayfasında varsayılanları kabul edin ve ardından Kaydet ve Devam Et'i tıklayın.
- Test kullanıcıları sayfasındaki varsayılanları kabul edin ve ardından Kaydet ve Devam Et'i tıklayın.
- Özeti inceleyin ve ardından Kontrol paneline dön'ü tıklayın.
- Aşağıdaki adımları uygulayarak Kimlik bilgileri sayfasında bir OAuth istemcisi oluşturun:
- Create credentials'ı (Kimlik bilgileri oluştur) tıklayın ve OAuth istemci kimliği'ni seçin.
- Uygulama türü açılır menüsünden Web uygulaması'nı seçin.
- Ad alanına uygulamanızın adını girin (ör.
FriendlyChat
). (Bunun genel olarak benzersiz olması gerekmez). - Aşağıdakileri ayarlayarak uygulamanızın URL'sinin bu OAuth istemcisini kullanmasına izin verin:
- Yetkili JavaScript kaynakları altında, URI ekle'yi tıklayın ve
https://<PROJECT_ID>.firebaseapp.com
değerini girin. Burada<PROJECT_ID>
,main.tf
içinde ayarladığınız proje kimliğidir. - Yetkili yönlendirme URI'leri altında, URI ekle'yi tıklayın ve
https://<PROJECT_ID>.firebaseapp.com/__/auth/handler
değerini girin. Burada<PROJECT_ID>
,main.tf
içinde ayarladığınız proje kimliğidir.
- Yetkili JavaScript kaynakları altında, URI ekle'yi tıklayın ve
- Kaydet'i tıklayın.
- OAuth istemci kimliğinizi ve istemci gizli anahtarınızı kullanarak Google ile oturum açmayı etkinleştirmek için
main.tf
dosyanıza şu bloku ekleyin:
main.tf... variable "oauth_client_secret" { type = string description = "OAuth client secret. For this codelab, you can pass in this secret through the environment variable TF_VAR_oauth_client_secret. In a real app, you should use a secret manager service." sensitive = true } resource "google_identity_platform_default_supported_idp_config" "google_sign_in" { provider = google-beta project = google_firebase_project.default.project enabled = true idp_id = "google.com" client_id = "<YOUR_OAUTH_CLIENT_ID>" client_secret = var.oauth_client_secret depends_on = [ google_identity_platform_config.auth ] }
Yapılandırmayı uygulama
- Authentication'ı yapılandırmanıza göre ayarlamak için
main.tf
dosyanızla aynı dizinin kök dizininden (web
olmalıdır) aşağıdaki komutları çalıştırın:export TF_VAR_oauth_client_secret="<YOUR_OAUTH_CLIENT_SECRET>"
terraform apply
terraform apply
çalıştırdığınızda yeni bir Google Cloud projesinin yeniden oluşturulmayacağını unutmayın. Terraform, belirtilen proje kimliğine sahip bir projenin zaten var olduğunu tespit edip projenin mevcut durumunu.tf
dosyasındaki durumla karşılaştırır. Ardından, bulduğu değişiklikleri yapar. - Yazdırılan eylem planını inceleyin. Her şey beklendiği gibi görünüyorsa işlemleri onaylamak için
yes
yazın ve Enter tuşuna basın.
Değişiklikleri doğrulama
- Firebase konsolunda, sol panelden Derleme bölümünü bulun.
- Kimlik doğrulama'yı ve ardından Oturum açma yöntemi sekmesini tıklayın (veya doğrudan bu sayfaya gitmek için burayı tıklayın).
- Google'ı etkin bir oturum açma sağlayıcısı olarak görmeniz gerekir.
7. Firestore veritabanı ve Güvenlik Kuralları oluşturma
Bu codelab'in web uygulamasında, son kullanıcılar arasındaki mesajları bir Firestore veritabanında depolarsınız.
- Gerekli API'leri etkinleştirmek ve veritabanı örneğinin temel hazırlığını yapmak için
main.tf
dosyanıza aşağıdaki kaynak bloklarını ekleyin:
main.tf... # Enable required APIs for Cloud Firestore. resource "google_project_service" "firestore" { provider = google-beta project = google_firebase_project.default.project for_each = toset([ "firestore.googleapis.com", "firebaserules.googleapis.com", ]) service = each.key # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Provision the Firestore database instance. resource "google_firestore_database" "default" { provider = google-beta project = google_firebase_project.default.project name = "(default)" # See available locations: # https://firebase.google.com/docs/firestore/locations location_id = "<NAME_OF_DESIRED_REGION>" # "FIRESTORE_NATIVE" is required to use Firestore with Firebase SDKs, # authentication, and Firebase Security Rules. type = "FIRESTORE_NATIVE" concurrency_mode = "OPTIMISTIC" depends_on = [ google_project_service.firestore ] }
<NAME_OF_DESIRED_REGION>
kısmını, veritabanının yerleştirilmesini istediğiniz bölgeyle değiştirin.
Üretim uygulaması geliştirirken, bu uygulamanın kullanıcıların çoğunluğuna yakın bir bölgede olmasını ve Cloud Functions gibi diğer Firebase hizmetlerinde yaygın olarak kullanılmasını tercih edebilirsiniz. Bu codelab içinus-east1
(Güney Carolina) ya da size en yakın bölgeyi kullanabilirsiniz (Cloud Firestore konumlarına bakın).- Firebase'in erişebildiği her Firestore veritabanı örneği, Firebase Güvenlik Kuralları tarafından korunmalıdır.
Bu codelab'in örnek kodu,web
dizininin kök dizininde bulabileceğinizfirestore.rules
dosyasında bir dizi güvenli Firestore kuralları sağlar. - Aşağıdakileri yapmak için, aşağıdaki kaynak bloklarıyla
main.tf
dosyanızı ekleyin:- Yerel
firestore.rules
dosyasından Firebase Güvenlik Kuralları kural kümesini oluşturun. - Firestore örneği için kural kümesini bırakın.
firebase deploy --only firestore:rules
çalıştırma ile eşdeğer olduğunu unutmayın.
main.tf... # Create a ruleset of Firestore Security Rules from a local file. resource "google_firebaserules_ruleset" "firestore" { provider = google-beta project = google_firebase_project.default.project source { files { name = "firestore.rules" # Write security rules in a local file named "firestore.rules". # Learn more: https://firebase.google.com/docs/firestore/security/get-started content = file("firestore.rules") } } # Wait for Firestore to be provisioned before creating this ruleset. depends_on = [ google_firestore_database.default, ] } # Release the ruleset for the Firestore instance. resource "google_firebaserules_release" "firestore" { provider = google-beta name = "cloud.firestore" # must be cloud.firestore ruleset_name = google_firebaserules_ruleset.firestore.name project = google_firebase_project.default.project # Wait for Firestore to be provisioned before releasing the ruleset. depends_on = [ google_firestore_database.default, ] lifecycle { replace_triggered_by = [ google_firebaserules_ruleset.firestore ] } }
- Yerel
- Firestore veritabanını sağlamak ve güvenlik kurallarını dağıtmak için
terraform apply
komutunu çalıştırın. - Veritabanının sağlandığını ve güvenlik kurallarının dağıtıldığını doğrulayın:
- Firebase konsolunda, sol panelden Derleme bölümünü bulun.
- Firestore Veritabanı bölümüne gidin ve ardından Kurallar sekmesini tıklayın.
8. Cloud Storage paketi ve Güvenlik Kuralları oluşturma
Bu codelab'in web uygulamasında, son kullanıcılar arasında paylaşılan görüntüleri bir Cloud Storage paketinde depolayacaksınız.
- Gerekli API'leri etkinleştirmek ve Cloud Storage varsayılan paketinizi sağlamak için
main.tf
dosyanıza aşağıdaki kaynak bloklarını ekleyin.
Projenizin varsayılan Cloud Storage paketinin Google App Engine üzerinden sağlandığını ve Firestore veritabanınızla aynı konumda olması gerektiğini unutmayın. Daha fazla bilgi için App Engine konumları başlıklı makaleyi inceleyin.
Projenizde birden fazla paket olmasını istiyorsanızgoogle_storage_bucket
kaynağını kullanarak bu paketlerin temel hazırlığını yapın (bu codelab'de gösterilmemiştir).
main.tf... # Enable required APIs for Cloud Storage for Firebase. resource "google_project_service" "storage" { provider = google-beta project = google_firebase_project.default.project for_each = toset([ "firebasestorage.googleapis.com", "storage.googleapis.com", ]) service = each.key # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Provision the default Cloud Storage bucket for the project via Google App Engine. resource "google_app_engine_application" "default" { provider = google-beta project = google_firebase_project.default.project # See available locations: https://firebase.google.com/docs/projects/locations#default-cloud-location # This will set the location for the default Storage bucket and the App Engine App. location_id = "<NAME_OF_DESIRED_REGION_FOR_DEFAULT_BUCKET>" # Must be in the same location as Firestore (above) # Wait until Firestore is provisioned first. depends_on = [ google_firestore_database.default ] } # Make the default Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules. resource "google_firebase_storage_bucket" "default-bucket" { provider = google-beta project = google_firebase_project.default.project bucket_id = google_app_engine_application.default.default_bucket }
- Firebase'in erişebildiği her Cloud Storage paketi Firebase Güvenlik Kuralları ile korunmalıdır.
Bu codelab'in örnek kodu,web
dizininin kök dizininde bulabileceğinizstorage.rules
dosyasında bir dizi güvenli Firestore kuralları sağlar. - Aşağıdakileri yapmak için, aşağıdaki kaynak bloklarıyla
main.tf
dosyanızı ekleyin:- Yerel dosyadan Firebase Güvenlik Kuralları kural kümesini oluşturun.
- Storage paketinin kural kümesini bırakın.
firebase deploy --only storage
çalıştırma ile eşdeğer olduğunu unutmayın.
main.tf... # Create a ruleset of Cloud Storage Security Rules from a local file. resource "google_firebaserules_ruleset" "storage" { provider = google-beta project = google_firebase_project.default.project source { files { # Write security rules in a local file named "storage.rules". # Learn more: https://firebase.google.com/docs/storage/security/get-started name = "storage.rules" content = file("storage.rules") } } # Wait for the default Storage bucket to be provisioned before creating this ruleset. depends_on = [ google_firebase_storage_bucket.default-bucket, ] } # Release the ruleset to the default Storage bucket. resource "google_firebaserules_release" "default-bucket" { provider = google-beta name = "firebase.storage/${google_app_engine_application.default.default_bucket}" ruleset_name = "projects/${google_firebase_project.default.project}/rulesets/${google_firebaserules_ruleset.storage.name}" project = google_firebase_project.default.project lifecycle { replace_triggered_by = [ google_firebaserules_ruleset.storage ] } }
- Varsayılan Cloud Storage paketini sağlamak ve güvenlik kurallarını dağıtmak için
terraform apply
çalıştırın. - Paketin temel hazırlığının yapıldığını ve güvenlik kurallarının dağıtıldığını doğrulayın:
- Firebase konsolunda, sol panelden Derleme bölümünü bulun.
- Depolama alanı bölümüne gidin ve Kurallar sekmesini tıklayın.
9. Uygulamanızı yerel olarak çalıştırma
Artık web uygulamanızı ilk kez çalıştırmaya hazırsınız. Uygulamanızı yerel olarak sunmak için Firebase Hosting emülatörünü kullanırsınız.
- Yeni bir terminal penceresi açın ve
web
dizininde aşağıdaki Firebase CLI komutunu çalıştırarak emülatörü başlatın:firebase emulators:start --project=<PROJECT_ID>
- Tarayıcınızda web uygulamanızı KSA tarafından döndürülen yerel URL'de açın (genellikle
http://localhost:5000
).
FriendlyChat uygulamanızın (henüz) çalışmayan kullanıcı arayüzünü görürsünüz. Uygulama henüz Firebase'e bağlanmadı ancak bu codelab'in sonraki adımları tamamlandıktan sonra Firebase'e bağlanabileceksiniz.
Web uygulamanızda her değişiklik yaptığınızda (bu codelab'in aşağıdaki adımlarında yapacağınız gibi), yerel URL'yi bu değişikliklerle güncellemek için tarayıcınızı yenileyin.
10. Firebase'i yükleme, yapılandırma ve başlatma
Bir uygulamanın Firebase ile çalışmasını sağlamak için uygulamanızda Firebase SDK'sı ve Firebase projenizde Firebase yapılandırması bulunmalıdır.
Bu codelab'in örnek kodu, uygulamada çeşitli Firebase ürünlerini kullanmak için gerekli tüm bağımlılıkları ve gerekli işlevleri içeren, çalışan bir uygulamadır. Yapılan işlemleri görmek için web/package.json
ve web/src/index.js
sürümlerine bakabilirsiniz.
Örnek kod çoğunlukla tamamlanmış olsa da uygulamanızın çalışması için Firebase SDK'sını yüklemek, derlemenizi başlatmak, Firebase yapılandırmasını uygulamanıza eklemek ve son olarak da Firebase'i başlatmak gibi bazı işlemler yapmanız gerekir.
Firebase SDK'sını yükleyin ve web paketi derlemenizi başlatın
Uygulamanızın derlemesini başlatmak için birkaç komut çalıştırmanız gerekiyor.
- Yeni bir terminal penceresi açın.
web
dizininin kök dizininde olduğunuzdan emin olun.- Firebase SDK'sını indirmek için
npm install
komutunu çalıştırın. - Bağımlılıkları güncellemek için
npm update
komutunu çalıştırın. - Web paketini başlatmak için
npm run start
komutunu çalıştırın.
Codelab'in geri kalanında webpack artık kaynak kodunuzu sürekli olarak yeniden oluşturacak.
Firebase yapılandırmanızı uygulamanıza ekleyin
Ayrıca, Firebase SDK'larının hangi Firebase projesini kullanmak istediğinizi bilmesi için Firebase yapılandırmanızı uygulamanıza eklemeniz gerekir.
Bu codelab'de Firebase yapılandırmanızı almak için iki farklı seçeneğiniz vardır:
- 1. Seçenek: Firebase yapılandırmanızı Firebase konsolundan alın.
- 2. Seçenek: Firebase yapılandırmanızı Terraform üzerinden alın.
1. Seçenek: Firebase konsolundan yapılandırmayı alıp kod tabanınıza ekleyin
- Firebase konsolunda Proje ayarlarınıza gidin.
- Uygulamalarınız kartına ilerleyin ve web uygulamanızı seçin.
- Firebase SDK snippet'i bölmesinde Yapılandırma'yı seçin ve yapılandırma snippet'ini kopyalayın.
- Yapılandırmanızı uygulamanızın
web/src/firebase-config.js
dosyasına aşağıdaki şekilde yapıştırın:
firebase-config.js... const config = { apiKey: "<API_KEY>", authDomain: "<PROJECT_ID>.firebaseapp.com", projectId: "<PROJECT_ID>", storageBucket: "<PROJECT_ID>.appspot.com", messagingSenderId: "<SENDER_ID>", appId: "<APP_ID>", measurementId: "<G-MEASUREMENT_ID>", }; ...
2. Seçenek: Yapılandırmayı Terraform aracılığıyla alın ve kod tabanınıza ekleyin
Alternatif olarak, Firebase yapılandırmanızı Terraform üzerinden KSA'da bir çıkış değeri olarak alabilirsiniz.
main.tf
dosyanızda,google_firebase_web_app
kaynak blokunuzu (projenize bir web uygulaması kaydeden blok) bulun.- Bu engellemenin hemen ardından aşağıdaki blokları ekleyin:
main.tf... data "google_firebase_web_app_config" "default" { provider = google-beta project = google_firebase_project.default.project web_app_id = google_firebase_web_app.default.app_id } output "friendlychat_web_app_config" { value = { projectId = google_firebase_project.default.project appId = google_firebase_web_app.default.app_id apiKey = data.google_firebase_web_app_config.default.api_key authDomain = data.google_firebase_web_app_config.default.auth_domain storageBucket = lookup(data.google_firebase_web_app_config.default, "storage_bucket", "") messagingSenderId = lookup(data.google_firebase_web_app_config.default, "messaging_sender_id", "") measurementId = lookup(data.google_firebase_web_app_config.default, "measurement_id", "") } } ...
data
bloğu veoutput
bloğu, altyapıyı herhangi bir şekilde değiştirmek için tasarlanmadığından yalnızca aşağıdaki komutları çalıştırmanız gerekir.- Web uygulamanızın Firebase yapılandırmasını dizininizin Terraform durumuna yüklemek için şu komutu çalıştırın:
terraform refresh
- Firebase yapılandırma değerlerini yazdırmak için şu komutu çalıştırın:
Aşağıda, örnek bir yapılandırma çıkışı verilmiştir. Yazdırılan çıkışınız, projenizin ve uygulamanızın değerlerini içerir.terraform output –json
{ "friendlychat_web_app_config": { "sensitive": false, "type": [ "object", { "apiKey": "string", "appId": "string", "authDomain": "string", "measurementId": "string", "messagingSenderId": "string", "projectId": "string", "storageBucket": "string" } ], "value": { "apiKey": "<API_KEY>", "appId": "<APP_ID>", "authDomain": "<PROJECT_ID>.firebaseapp.com", "measurementId": "<G-MEASUREMENT_ID>", "messagingSenderId": "<SENDER_ID>", "projectId": "<PROJECT_ID>", "storageBucket": "<PROJECT_ID>.appspot.com" } } }
- Web uygulamanızın Firebase yapılandırmasını dizininizin Terraform durumuna yüklemek için şu komutu çalıştırın:
value
haritasındaki değerleri kopyalayın.- Bu değerleri (yapılandırmanız) uygulamanızın
web/src/firebase-config.js
dosyasına aşağıdaki şekilde yapıştırın:
firebase-config.js... const config = { apiKey: "<API_KEY>", appId: "<APP_ID>", authDomain: "<PROJECT_ID>.firebaseapp.com", measurementId: "<G-MEASUREMENT_ID>", messagingSenderId: "<SENDER_ID>", projectId: "<PROJECT_ID>", storageBucket: "<PROJECT_ID>.appspot.com", }; ...
Uygulamanızda Firebase'i başlatın
Son olarak, Firebase'i başlatmak için uygulamanızın web/src/index.js
dosyasına aşağıdakini ekleyin:
...
const firebaseAppConfig = getFirebaseConfig();
initializeApp(firebaseAppConfig);
Uygulamanızı deneyin
Artık her şey Firebase için yapılandırıldığına göre işlevsel web uygulamanızı deneyebilirsiniz.
- Uygulamanızı sunmak için tarayıcıyı yenileyin.
- Artık Google ile oturum açabilir ve sohbette mesaj yayınlamaya başlayabilirsiniz. Resim dosyalarınız varsa bunları bile yükleyebilirsiniz!
11. Yapılandırmanızı ortamlar arasında çoğaltın
Terraform, benzer şekilde yapılandırılmış birden fazla altyapıyı (ör. üretim projesine benzer bir Firebase projesi oluşturma) yönetme konusunda uzmandır.
Bu codelab'de, hazırlık ortamı olacak ikinci bir Firebase projesi oluşturacaksınız.
Bu hazırlık projesini oluşturmak üzere mevcut bir yapılandırmayı çoğaltmak için iki seçeneğiniz vardır:
- 1. Seçenek: Terraform yapılandırmasının bir kopyasını oluşturun.
Bu seçenek, çoğaltılan projenin kaynak projeden ne kadar farklı olabileceği konusunda en yüksek esnekliği sunar. - 2. Seçenek: Yapılandırmaları
for_each
ile yeniden kullanma.
Her projenin önemli ölçüde farklılık göstermemesi gerekiyorsa ve değişiklikleri aynı anda tüm projelere yaymak istiyorsanız bu seçenek, kodların daha fazla yeniden kullanılmasını sağlar.
1. Seçenek: Terraform yapılandırmasının bir kopyasını oluşturma
Bu seçenek, kopyalanan projenin kaynak projeden ne kadar farklı olabileceği (ör. farklı görünen adlara ve aşamalı sunumlara sahip uygulamalar) bulunması açısından en fazla esnekliği sunar.
web
dizininizin kök dizininde,main_staging.tf
adlı yeni bir Terraform yapılandırma dosyası oluşturun.main.tf
dosyanızdaki tüm kaynak bloklarını (terraform
veprovider
blokları hariç) kopyalayın vemain_staging.tf
dosyanıza yapıştırın.- Ardından hazırlık projenizde çalışmaları için
main_staging.tf
ürününde çoğaltılan kaynak bloklarınızın her birini değiştirmeniz gerekir:- Kaynak etiketleri: Çakışmayı önlemek için yeni bir ad kullanın. Örneğin,
resource "google_project" "default"
adınıresource "google_project" "staging"
olarak değiştirin. - Kaynak referansları: Her birini güncelleyin. Örneğin,
google_firebase_project.default.project
değerinigoogle_firebase_project.staging.project
olarak güncelleyin.
main_staging.tf
dosyasının tüm yapılandırmasını bu codelab'in GitHub deposunda bulabilirsiniz:web/terraform-checkpoints/replicate-config/main_staging-copypaste.tf
Bu yapılandırmayı kullanmak istiyorsanız aşağıdakileri yaptığınızdan emin olun:main_staging-copypaste.tf
hizmetinden yapılandırmayı kopyalayıpmain_staging.tf
dosyanıza yapıştırın.main_staging.tf
dosyanızda aşağıdakileri yapın:google_project
kaynak bloğundaname
özelliğini,project-id
özelliğini ve (Kimlik Doğrulama'yı Terraform üzerinden ayarladıysanız)billing_account
özelliğini kendi değerlerinizle güncelleyin.google_firebase_web_app
kaynak bloğundadisplay_name
özelliğini kendi değerinizle güncelleyin.google_firestore_database
vegoogle_app_engine_application
kaynak bloklarında,location_id
özelliklerini kendi değerinizle güncelleyin.
# Create a new Google Cloud project. resource "google_project" "staging" { provider = google-beta.no_user_project_override name = "<PROJECT_NAME_OF_STAGING_PROJECT>" project_id = "<PROJECT_ID_OF_STAGING_PROJECT" # Required if you want to set up Authentication via Terraform billing_account = "<YOUR_BILLING_ACCOUNT_ID>" # Required for the project to display in any list of Firebase projects. labels = { "firebase" = "enabled" } } # Enable the required underlying Service Usage API. resource "google_project_service" "staging_serviceusage" { provider = google-beta.no_user_project_override project = google_project.staging.project_id service = "serviceusage.googleapis.com" # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Enable the required underlying Firebase Management API. resource "google_project_service" "staging_firebase" { provider = google-beta.no_user_project_override project = google_project.staging.project_id service = "firebase.googleapis.com" # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Enable Firebase services for the new project created above. resource "google_firebase_project" "staging" { provider = google-beta project = google_project.staging.project_id # Wait until the required APIs are enabled. depends_on = [ google_project_service.staging_serviceusage, google_project_service.staging_firebase, ] } # Create a Firebase Web App in the new project created above. resource "google_firebase_web_app" "staging" { provider = google-beta project = google_firebase_project.staging.project display_name = "<DISPLAY_NAME_OF_YOUR_WEB_APP>" deletion_policy = "DELETE" }
- Kaynak etiketleri: Çakışmayı önlemek için yeni bir ad kullanın. Örneğin,
- Yeni "hazırlık" ayarınızın temel hazırlığını yapmak için
terraform apply
komutunu çalıştırın Firebase projesi ve tüm kaynakları ile hizmetlerini etkinleştirebilir. - Daha önce olduğu gibi Firebase konsolunda kontrol ederek her şeyin beklendiği gibi yapıldığını ve etkinleştirildiğini doğrulayın.
2. Seçenek: Yapılandırmaları for_each
ile yeniden kullanma
Bu seçenek, projelerin önemli ölçüde farklılık göstermemesi gerekiyorsa ve değişiklikleri aynı anda tüm projelere yaymak istiyorsanız kodların daha fazla yeniden kullanılmasını sağlar. Terraform dilindeki for_each
meta bağımsız değişkenini kullanır.
main.tf
dosyanızı açın.- Çoğaltmak istediğiniz her kaynak bloğuna bir
for_each
meta bağımsız değişkeni ekleyin. Örneğin:
main.tf# Create new Google Cloud projects. resource "google_project" "default" { provider = google-beta.no_user_project_override name = each.value # Create a unique project ID for each project, with each ID starting with <PROJECT_ID>. project_id = "<PROJECT_ID>-${each.key}" # Required if you want to set up Authentication via Terraform billing_account = "<YOUR_BILLING_ACCOUNT_ID>" # Required for the projects to display in any list of Firebase projects. labels = { "firebase" = "enabled" } for_each = { prod = "<PROJECT_NAME_OF_PROD_PROJECT>" staging = "<PROJECT_NAME_OF_STAGING_PROJECT>" } } # Enable the required underlying Service Usage API. resource "google_project_service" "serviceusage" { provider = google-beta.no_user_project_override for_each = google_project.default project = each.value.project_id service = "serviceusage.googleapis.com" # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Enable the required underlying Firebase Management API. resource "google_project_service" "firebase" { provider = google-beta.no_user_project_override for_each = google_project.default project = each.value.project_id service = "firebase.googleapis.com" # Don't disable the service if the resource block is removed by accident. disable_on_destroy = false } # Enable Firebase services for each of the new projects created above. resource "google_firebase_project" "default" { provider = google-beta for_each = google_project.default project = each.value.project_id depends_on = [ google_project_service.serviceusage, google_project_service.firebase, ] } # Create a Firebase Web App in each of the new projects created above. resource "google_firebase_web_app" "default" { provider = google-beta for_each = google_firebase_project.default project = each.value.project # The Firebase Web App created in each project will have the same display name. display_name = "<DISPLAY_NAME_OF_YOUR_WEB_APP>" deletion_policy = "DELETE" } # NOTE: For this codelab, we recommend setting up Firebase Authentication # using the Firebase console. However, if you set up Firebase Authentication # using Terraform, copy-paste from your main.tf the applicable blocks. # Make sure to add the `for_each` meta-argument into each block. # Copy-paste from your main.tf file the applicable resource blocks # for setting up Cloud Firestore (including rules) and # for setting up Cloud Storage for Firebase (including rules). # Make sure to add the `for_each` meta-argument into each block.
for_each
meta bağımsız değişkenini kullananmain.tf
dosyasının tam yapılandırmasını bu codelab'in GitHub deposunda bulabilirsiniz:web/terraform-checkpoints/replicate-config/main-foreach.tf
Bu yapılandırmayı kullanmak istiyorsanız aşağıdakileri yaptığınızdan emin olun:main-foreach.tf
hizmetinden yapılandırmayı kopyalayıpmain.tf
dosyanıza yapıştırın.main.tf
dosyanızda aşağıdakileri yapın:google_project
kaynak bloğundaname
özelliğini,project-id
özelliğini ve (Kimlik Doğrulama'yı Terraform üzerinden ayarladıysanız)billing_account
özelliğini kendi değerlerinizle güncelleyin.google_firebase_web_app
kaynak bloğundadisplay_name
özelliğini kendi değerinizle güncelleyin.google_firestore_database
vegoogle_app_engine_application
kaynak bloklarında,location_id
özelliklerini kendi değerinizle güncelleyin.
- Bu yapılandırmayı hemen uygulamak yerine, Terraform'un mevcut altyapıya kıyasla bu yapılandırmayı nasıl yorumladığıyla ilgili birkaç noktanın anlaşılması ve düzeltilmesi önemlidir.
- Şu anda,
for_each
kullanan bu yapılandırmayı uyguladıysanız kaynak adresleri aşağıdaki gibi görünür: Ancak bu codelab'in ilk bölümünde oluşturduğunuz proje Terraform olarak bilinir:google_project.default["prod"] google_project.default["staging"] google_firebase_project.default["prod"] google_firebase_project.default["staging"] google_firebase_web_app.default["prod"] google_firebase_web_app.default["staging"]
google_project.default google_firebase_project.default google_firebase_android_app.default
- Mevcut durumda Terraform'un hangi işlemleri gerçekleştireceğini görmek için
terraform plan
komutunu çalıştırın.
Çıktıda, Terraform'un bu codelab'in ilk bölümünde oluşturduğunuz projeyi sileceği ve iki yeni proje oluşturacağı gösterilecektir. Bunun nedeni Terraform'ungoogle_project.default
adresindeki projeningoogle_project.default["prod"]
adresine taşındığını bilmemesidir. - Bu sorunu düzeltmek için
terraform state mv
komutunu çalıştırın:terraform state mv "google_project.default" "google_project.default[\"prod\"]"
- Benzer şekilde, diğer tüm kaynak bloklarını düzeltmek amacıyla
google_firebase_project
,google_firebase_web_app
vemain.tf
dosyanızdaki diğer tüm kaynak blokları içinterraform state mv
komutunu çalıştırın. - Artık
terraform plan
uygulamasını tekrar çalıştırırsanız Terraform'un bu codelab'in ilk bölümünde oluşturduğunuz projeyi sileceği görünmeyecektir.
- Şu anda,
- Yeni "hazırlık" ayarınızın temel hazırlığını yapmak için
terraform apply
komutunu çalıştırın Firebase projesi ve tüm kaynakları ile hizmetlerini etkinleştirebilir. - Daha önce olduğu gibi Firebase konsolunda kontrol ederek her şeyin beklendiği gibi yapıldığını ve etkinleştirildiğini doğrulayın.
12. Ek adım: Hazırlık ve üretim uygulamalarınızı dağıtma
- Uygulamanızın kod tabanında, bunun yerine hazırlık projenizdeki Firebase yapılandırmasını kullanmak üzere
firebase-config.js
değerini değiştirin.
Firebase yapılandırmanızı nasıl alacağınızı ve uygulamanıza nasıl ekleyeceğinizi hatırlamak için bu codelab'in önceki adımı olan Firebase yapılandırmanızı uygulamanıza ekleme bölümüne göz atın. - Uygulamanızı, hazırlıktaki Firebase projenize dağıtmak için
web
dizininizin kök dizininde aşağıdaki komutu çalıştırın.firebase deploy --only hosting --project=<STAGING_PROJECT_ID>
- Hazırlık uygulamanızı tarayıcıda
firebase deploy
çıkışında yazdırılan URL ile açın. Oturum açmayı, mesaj göndermeyi ve resim yüklemeyi deneyin.
Bir uygulamayı Firebase projesine dağıttığınızda, emüle edilmiş kaynaklar değil, gerçek Firebase kaynakları kullanılır. Hazırlık uygulamanızla etkileşim kurarken Firebase konsolundaki hazırlık projenizde veriler ve resimler görürsünüz. - Uygulamanızı hazırlık aşamasında test ettikten sonra
firebase-config.js
öğesini tekrar üretim projesinin Firebase yapılandırmasını (bu codelab'de oluşturduğunuz ilk proje) kullanacak şekilde değiştirin. - Uygulamanızı, üretim Firebase projenize dağıtmak için
web
dizininizin kök dizininde aşağıdaki komutu çalıştırın.firebase deploy --only hosting --project=<PRODUCTION_PROJECT_ID>
- Üretim uygulamanızı,
firebase deploy
çıktısında yazdırılan URL aracılığıyla tarayıcıda açın. Oturum açmayı, mesaj göndermeyi ve resim yüklemeyi deneyin.
Firebase konsolundaki üretim projenizde veriler ve resimler göreceksiniz. - Bu codelab'deki iki uygulamayla etkileşimi tamamladığınızda Firebase'in bunları sunmasını durdurabilirsiniz. Projelerinizin her biri için aşağıdaki komutu çalıştırın:
firebase hosting:disable --project=<STAGING_PROJECT_ID>
firebase hosting:disable --project=<PRODUCTION_PROJECT_ID>
13. Tebrikler!
Gerçek zamanlı bir sohbet web uygulaması yapılandırmak için Terraform'u kullandınız. Ayrıca hazırlık ve üretim için ayrı Firebase projeleri oluşturarak geliştirme ortamlarına yönelik en iyi uygulamalardan yararlandınız.
İşlediğimiz konular
- Bulut kaynaklarını yönetmek için Terraform CLI'ı kullanma
- Firebase ürünlerini (Kimlik Doğrulama, Firestore, Cloud Storage ve Güvenlik Kuralları) yapılandırmak için Terraform'u kullanma
- Firebase Local Emulator Suite'i kullanarak bir web uygulamasını yerel olarak çalıştırma ve test etme
- Firebase'i bir web uygulamasına aktarma
- Bir yapılandırmayı birden fazla ortamda kopyalamak için Terraform'u kullanma
Firebase ve Terraform hakkında daha fazla bilgi için belgelerimizi inceleyin. Terraform desteği sunan tüm Firebase ürünlerinin listesini, yaygın kullanım alanları için örnek Terraform yapılandırmalarını, faydalı sorun giderme ve SSS bölümünü burada bulabilirsiniz.