Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Bu konuda, Edge Microgateway'in Docker kapsayıcısında nasıl çalıştırılacağı açıklanmaktadır. Bu konuda ele alınan adımlarda Docker, Docker komutları ve Edge Microgateway kurulumu ile yapılandırması hakkında temel düzeyde bilgi sahibi olduğunuz varsayılır. Daha fazla bilgi için Docker ve Edge Microgateway dokümanlarına bakın.
Ön koşullar
Edge Microgateway'i bir Docker kapsayıcısında çalıştırmadan önce aşağıdaki görevleri yapmanız gerekir:
Apigee kuruluşunuz/ortamınız için Edge Microgateway'i yapılandırın:
edgemicro configure -o your_org -e your_env -u your_username
Yapılandırma hakkında daha fazla bilgi için 1. Bölüm: Edge Microgateway'i yapılandırma başlıklı makaleyi inceleyin.
Yapılandırma adımlarını uyguladıktan sonra yapılandırma dosyasını bulun. Varsayılan konum şöyledir:
$HOME/.edgemicro/your_org-your_env-config.yaml
Burada
your_orgveyour_env,edgemicro configkomutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır. Edge Microgateway'i Docker container'da başlatırken bu dosyaya ihtiyacınız olacaktır.edgemicro configkomutunu çalıştırdığınızda döndürülen anahtar ve gizli kimlik bilgilerine sahip olduğunuzdan emin olun. Örneğin:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430Edge Microgateway'i bir Docker kapsayıcısında başlatmadan önce, kimliği doğrulanmış API proxy'si çağrıları yapmak için gereken Apigee Edge öğelerini oluşturmanız (veya oluşturmuş olmanız) gerekir. Bu öğeler arasında Edge Microgateway'in farkında olan bir proxy, bir API ürünü, bir geliştirici ve bir geliştirici uygulaması bulunur. Talimatların tamamı için Apigee Edge'de öğe oluşturma başlıklı makaleyi inceleyin.
Edge Micro'yu Docker container'ı olarak çalıştırma
Edge Microgateway için Docker görüntüsünü indirin:
docker pull gcr.io/apigee-microgateway/edgemicro:latest
Sonraki adımlara geçmeden önce Ön koşullar bölümündeki tüm adımları uyguladığınızdan emin olun.
$HOME/.edgemicrokonumundaki Edge Microgateway yapılandırma dosyasını base64 ile kodlamak için aşağıdaki komutu çalıştırın:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_orgveyour_env,edgemicro configkomutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına ters tırnak (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway'i kapsayıcı olarak çalıştırma Komut, Edge Microgateway'i başlatmak için kapsayıcı çalışma zamanı tarafından kullanılan çeşitli ortam değişkenlerini ayarlar:
docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro:latest
Parametreler
Parametre Açıklama -PTüm kullanıma sunulan bağlantı noktalarını ana makinede yayınlayın. Ayrıca Docker run referansı başlıklı makaleyi de inceleyin. -pTek bir bağlantı noktasını veya bir bağlantı noktası aralığını açıkça eşleyin. Ayrıca Docker run referansı başlıklı makaleyi de inceleyin. -dAyrılmış modda çalıştırın. Ayrıca Docker run referansı başlıklı makaleyi de inceleyin. -v, --volumeBir birim bağlama noktası belirtir. Edge Microgateway'i Docker container'ında TLS kullanacak şekilde yapılandırırsanız günlük dosyası dizinini bağladığınızda 8443 numaralı bağlantı noktasını kullanıma açmanız gerektiğini unutmayın. Ayrıca VOLUME [shared filesystems] başlıklı makaleyi de inceleyin. Docker container'da TLS kullanma başlıklı makaleyi de inceleyin. EDGEMICRO_ORGEdge Microgateway'i yapılandırmak için kullandığınız Apigee kuruluşunun adı. EDGEMICRO_ENVEdge Microgateway'i yapılandırmak için kullandığınız Apigee ortamının adı. EDGEMICRO_PROCESSESBaşlatılacak işlem sayısı. EDGEMICRO_KEYEdge Microgateway'i yapılandırdığınızda döndürülen anahtar. EDGEMICRO_SECRETEdge Microgateway'i yapılandırdığınızda döndürülen gizli anahtar. EDGEMICRO_CONFIGBase64 kodlu Edge Microgateway yapılandırma dosyasını içeren bir değişken. SERVICE_NAMEKubernetes kullanıyorsanız bu parametre otomatik olarak doldurulur. Aksi takdirde, istediğiniz herhangi bir değere ayarlayabilirsiniz. Hiçbir şey belirtmezseniz hizmet adı defaultolarak ayarlanır.DEBUGHata ayıklamayı etkinleştirmek için *olarak ayarlayın.HTTP_PROXYHTTPS_PROXYEdge Microgateway bir güvenlik duvarının arkasında çalışırken ve ağ geçidi Apigee Edge ile iletişim kuramazken kullanın. Daha fazla bilgi için Edge Microgateway'i şirket güvenlik duvarının arkasında ayarlama başlıklı makaleyi inceleyin. Örneğin:
HTTP_PROXY=http://10.203.0.1:5187/NO_PROXYEdge Microgateway'in proxy'sini kullanmaması gereken alanların virgülle ayrılmış listesi. Daha fazla bilgi için Edge Microgateway'i şirket güvenlik duvarının arkasında ayarlama başlıklı makaleyi inceleyin. Örneğin:
localhost,127.0.0.1,localaddress,.localdomain.comNODE_EXTRA_CA_CERTS(İsteğe bağlı) Node.js tarafından varsayılan olarak güvenilmeyen bir CA kullanıyorsanız bu parametreyi kullanın. Bu parametrenin değerini, PEM biçiminde bir veya daha fazla güvenilen sertifika içeren bir dosyanın yolu olarak ayarlayın. Ayrıntılı bilgi için TLS sertifikaları başlıklı makaleyi inceleyin. --security-opt(İsteğe bağlı) İstenen Docker güvenlik seçeneklerini ayarlar. Docker belgelerindeki Güvenlik yapılandırması bölümüne bakın. --cap-drop(İsteğe bağlı) Kapsayıcıda izin verilen Linux özelliklerine sınırlar koyar. Docker belgelerindeki Runtime privilege and Linux capabilities (Çalışma zamanı ayrıcalığı ve Linux özellikleri) başlıklı makaleyi inceleyin. Örneğin:
docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESS=1 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro
Container'ın çalıştığını kontrol etmek için:
docker ps
Şuna benzer bir çıkış alırsınız:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b92e082ea9c edgemicro "/tmp/entrypoint.sh" 12 minutes ago Up 12 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:32775->8443/tcp edgemicro
API çağrısını test etme
Edge Microgateway'i kapsayıcıda başlattıktan sonra API çağrıları yapabilirsiniz.
Örneğin, API'nizin temel yolu /hello ise:
http://localhost:8000/hello
Örnek çıkış:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Bu yanıtı görürseniz Edge Microgateway, API çağrısını başarıyla işlemiş demektir. Ancak Edge Microgateway, varsayılan olarak kimlik doğrulama için API anahtarı gerektirir. Bir sonraki bölümde, API'yi geçerli bir API anahtarıyla test edeceksiniz.
Geçerli bir API anahtarıyla API'yi test etme
Edge kullanıcı arayüzünde, daha önce oluşturduğunuz geliştirici uygulamasına gidin. Geliştirici Uygulaması sayfasında Tüketici Anahtarı'nı gösterin ve kopyalayın. Bu değer, API anahtarıdır. Kimliği doğrulanmış API çağrıları yapmak için bu anahtarı kullanırsınız.
API'yi aşağıdaki gibi x-api-key üstbilgisiyle çağırın. Geliştirici uygulamasından kopyaladığınız Tüketici Anahtarı değeri, API anahtarıdır. Edge Microgateway, varsayılan olarak anahtarı x-api-key adlı bir üstbilgide iletmenizi bekler. Örneğin:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
Örneğin:
curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
API anahtarları ve OAuth jetonlarıyla Edge Microgateway üzerinden kimliği doğrulanmış API çağrıları yapma hakkında daha fazla bilgi edinmek istiyorsanız Bölüm 4: Edge Microgateway'i güvenli hale getirme başlıklı makaleyi inceleyin.
Edge Microgateway'i durdurma
Edge Microgateway'i durdurmak için aşağıdaki Docker komutunu kullanın:
docker stop edgemicro
Edge Microgateway'i yeniden başlatma
Edge Microgateway'i durdurduktan sonra şu Docker komutuyla yeniden başlatabilirsiniz:
docker start edgemicro
Docker container'da TLS kullanma
Bu bölümde, bir Docker kapsayıcısında çalışan Edge Microgateway için TLS'nin nasıl yapılandırılacağı açıklanmaktadır. Edge Microgateway sunucusunu gelen istekler (kuzeye doğru) için TLS kullanacak şekilde yapılandırabilir ve Edge Microgateway'i hedef uç noktalara giden istekler (güneye doğru) için TLS istemcisi olacak şekilde yapılandırabilirsiniz.
Sertifika dosyalarını nereye koymalısınız?
Edge Microgateway'i çalıştıran Docker container'da /opt/apigee/.edgemicro üzerinde bir ekleme noktası vardır.
Edge Microgateway'i TLS sertifikalarını kullanacak şekilde yapılandırdığınızda, sertifika dosyalarını bu ekleme noktasında kullanılabilir hale getirebilir ve Edge Microgateway yapılandırma dosyasında bunlara başvurabilirsiniz. Bu yapılandırma dosyası genellikle $HOME/.edgemicro
dizininde bulunur ve your_org-your_env-config.yaml olarak adlandırılır.
Örneğin:
...
edgemicro:
ssl:
key: /opt/apigee/.edgemicro/southbound/tls.key
cert: /opt/apigee/.edgemicro/southbound/tls.crt
...
Node.js tarafından güvenilmeyen bir CA kullanma
Node.js tarafından varsayılan olarak güvenilmeyen bir sertifika yetkilisi (CA) kullanıyorsanız (ör. kendinden imzalı sertifika) kapsayıcıyı çalıştırırken NODE_EXTRA_CA_CERTS parametresini kullanabilirsiniz.
Bu parametreyi, PEM biçiminde bir veya daha fazla güvenilen sertifika içeren bir dosyanın yolu olarak ayarlayın. Bu parametrenin nasıl kullanıldığını görmek için Kuzeye giden TLS'yi yapılandırma ve Güneye giden TLS'yi yapılandırma örneklerine bakın.
Örneğin:
docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
Ayrıca Edge Micro'yu Docker kapsayıcısı olarak çalıştırma başlıklı makaleyi de inceleyin.
TLS doğrulamasını devre dışı bırakma
Önerilmese de bazı durumlarda kapsayıcıda çalışan Edge Microgateway için TLS doğrulamasını devre dışı bırakmak isteyebilirsiniz. TLS'yi devre dışı bırakma özelliği, Edge Microgateway Docker kapsayıcısına varsayılan olarak dahil edilmez. Bu görevi tamamlamak için Edge Microgateway'e yönelik özelleştirilmiş bir Docker görüntüsü oluşturmanız gerekir. Özel görüntüyü oluşturma ve TLS doğrulamasını devre dışı bırakmaya ilişkin genel talimatları aşağıda bulabilirsiniz.
Edge Microgateway kaynak deposunu
https://github.com/apigee-internal/microgatewayadresinden klonlayın veya indirin.cdmicrogateway/kubernetes/docker/edgemicrodizinine gidin.Örneğin:
cd $HOME/git/microgateway/kubernetes/docker/edgemicroentrypoint.shdosyasını açın ve koduNODE_TLS_REJECT_UNAUTHORIZEDortam değişkenini kabul edecek şekilde değiştirin. Daha sonra kapsayıcıyı çalıştırdığınızda bu değişken için bir değer belirteceksiniz.Docker container'ı oluşturun:
docker build -t edgemicro .Container'ı çalıştırdığınızda
-e NODE_TLS_REJECT_UNAUTHORIZED = 1seçeneğini belirtin. Örneğin:
docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_TLS_REJECT_UNAUTHORIZED = 1 \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
Örnek: Kuzeye bakan TLS nasıl yapılandırılır?
Bu bölümde, Edge Microgateway sunucusunda kuzeye giden (gelen) bir TLS bağlantısının nasıl ayarlanacağı açıklanmaktadır. Kuzeye giden TLS, istemcilerin Edge Microgateway'e API çağrıları yaparken HTTPS kullanmasına olanak tanır. Aşağıdaki örnekte kendinden imzalı sertifikalar kullanılmaktadır.
1. İlk kurulum adımları
- Sisteminizde
openssl.cnfdosyasını bulun. Örneğin,/etc/ssl/openssl.cnf. - Düzenlemek için
opensssl.cnfdosyasını açın. Yapılandırma dosyanızda
req_extensionskarakterlerinin bulunduğundan emin olun. Örneğin, dosyanızda aşağıdaki gibi bilgiler olmalıdır:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentDoğru SNI özelliklerini oluşturmak için
openssl.cnfbölümüne aşağıdaki kıtayı ekleyin:[ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1Örnek
opensssl.cnfdosyası:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1Henüz yapmadıysanız Edge Microgateway'i başlatmak ve yapılandırmak için Ön koşullar bölümünde verilen adımları uygulayın. Tamamlandığında, Edge Microgateway'in farkında olan bir proxy, bir API ürünü, bir geliştirici ve bir geliştirici uygulaması oluşturmuş olmanız gerekir. Ayrıca,
edgemicro configurekomutunu çalıştırmış ve bir anahtar ile gizli bilgi almış olmanız gerekir.
2. Kendinden imzalı sertifikalar oluşturma
Ardından, TLS oluşturmak için ihtiyacınız olan sertifikaları ve anahtarları oluşturun:
cd$HOME/.edgemicrodizinine gidin.Aşağıdaki bash komut dosyasını oluşturun. İstediğiniz adı verebilirsiniz. Örneğin:
keygen.sh.#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
Bash dosyasında,
openssl.cnfdosyasının yolunun doğru olduğundan emin olun.Bash dosyasını yürütün. Sertifika bilgileri istenir. Ortak ad için
localhostkullandığınızdan emin olun.Aşağıdaki dosyaların oluşturulduğunu kontrol edin:
rootca.keyrootca.pemtls.keytls.csrrootca.srltls.crt
3. Edge Microgateway yapılandırma dosyasını düzenleme
Edge Micro yapılandırma dosyasını bir düzenleyicide açın. Örneğin:
vi $HOME/.edgemicro/myorg-test-config.yamledgemicrobölümünü aşağıdaki gibi düzenleyin.portvesslözelliklerinde değişiklik yaptığınızı unutmayın:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...$HOME/.edgemicrokonumunda bulunan Edge Microgateway yapılandırma dosyasını base64 ile kodlamak için aşağıdaki komutu çalıştırın:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_orgveyour_env,edgemicro configkomutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına ters tırnak (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Ayrıca Edge Micro'yu Docker kapsayıcısı olarak çalıştırma başlıklı makaleyi de inceleyin.
4. Kapsayıcıyı çalıştırın
Docker container'ı Edge Microgateway ile çalıştırmak için aşağıdaki komutu yürütün:
docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ gcr.io/apigee-microgateway/edgemicro:latest
Komutta kullanılan aşağıdaki parametrelerin, Edge Micro'yu Docker kapsayıcısı olarak çalıştırma bölümünde açıklanan temel komuttan farklı olduğunu unutmayın.
port,8443olarak ayarlanmıştır.- Anahtar ve sertifika dosyalarını bağlamak için bir birim bağlama işlemi kullanılır.
NODE_EXTRA_CA_CERTSdeğişkeni, gerektiğinde özel bir CA (kendinden imzalı sertifikalar söz konusu olduğunda) eklemek için kullanılır.
5. TLS yapılandırmasını test etme
Kurulumu test etmek için aşağıdaki cURL komutunu yürütün. Temel yolunuzu ve API anahtarınızı komuta girin. Aşağıdaki örnekte,
rootca.pemöğesinin bulunduğu dizinde olduğunuz ve oluşturduğunuz proxy'nin/hellotemel yoluna sahip olduğu varsayılmaktadır:curl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"Ayrıntılı cURL çıktısı, TLS el sıkışmasının her adımını gösterir. HTTP 200 yanıtı görürseniz yapılandırma başarılı olmuştur:
* Trying ::1...ey:Az82fdnfONVCOOE4NKhajxAboDgA3FAo" * TCP_NODELAY set * Connected to localhost (::1) port 8443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: rootca.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * start date: Dec 14 22:35:28 2018 GMT * expire date: Oct 3 22:35:28 2021 GMT * common name: localhost (matched) * issuer: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * SSL certificate verify ok. > GET /hello HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key:Az82fdnfaONVCOE4NKhajxAboDA3FAo > < HTTP/1.1 200 OK < x-powered-by: Apigee < access-control-allow-origin: * < x-frame-options: ALLOW-FROM RESOURCE-URL < x-xss-protection: 1 < x-content-type-options: nosniff < content-type: text/plain; charset=utf-8 < etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw" < date: Fri, 14 Dec 2018 22:43:13 GMT < via: 1.1 google < alt-svc: clear < x-response-time: 1325 < Connection: keep-alive < Transfer-Encoding: chunked < * Connection #0 to host localhost left intact Hello, Guest!
Örnek: Güney yönlü TLS nasıl yapılandırılır?
Bu bölümde, Edge Microgateway sunucusu ile bir arka uç hedef uygulaması arasında güneye giden (giden) bir TLS bağlantısının nasıl ayarlanacağı açıklanmaktadır. Aşağıdaki örnekte kendinden imzalı sertifikalar kullanılmaktadır.
1. İlk kurulum adımları
- Sisteminizde
openssl.cnfdosyasını bulun. Örneğin,/etc/ssl/openssl.cnf. - Düzenlemek için
opensssl.cnfdosyasını açın. Yapılandırma dosyanızda
req_extensionskarakterlerinin bulunduğundan emin olun. Örneğin, dosyanızda aşağıdaki gibi bilgiler olmalıdır:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentDoğru SNI özelliklerini oluşturmak için
openssl.cnfbölümüne aşağıdaki kıtayı ekleyin:[ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1Örnek
opensssl.cnfdosyası:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1edgemicro configurekomutunu çalıştırın:edgemicro configure -o your_org -e your_env -u your_username
Yapılandırma hakkında daha fazla bilgi için 1. Bölüm: Edge Microgateway'i yapılandırma başlıklı makaleyi inceleyin.
edgemicro configuretarafından döndürülen anahtar ve gizli kimlik bilgilerini kopyalayın. Kapsayıcıyı çalıştırmak için bu değerlere ihtiyacınız olacak. Örneğin:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
2. Node.js hedef uygulaması oluşturma
cd.edgemicrodizinine gidin.Aşağıdaki bash komut dosyasını oluşturun. İstediğiniz adı verebilirsiniz. Örneğin:
keygen.sh.#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
Bash dosyasında,
openssl.cnfdosyasının yolunun doğru olduğundan emin olun.Bash dosyasını yürütün. Sertifika bilgileri istenir. Ortak ad için
hellworldkullandığınızdan emin olun.Aşağıdaki dosyaların oluşturulduğunu kontrol edin:
rootca.keyrootca.pemtls.keytls.csrrootca.srltls.crt
server.jsadlı yeni bir dosya oluşturun.'use strict'; const express = require('express'); const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync("tls.key"), cert: fs.readFileSync("tls.crt") }; // Constants const PORT = 9443; const HOST = '0.0.0.0'; // App const app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); https.createServer(options, app).listen(PORT);server.jsile aynı dizinde birpackage.jsondosyası oluşturun. Örneğin:{ "name": "helloworld", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.16.4", "fs": "0.0.1-security", "https": "^1.0.0" } }Bağımlı öğeleri almak için
npm installkomutunu çalıştırın.server.jsile aynı dizinde yeni bir Dockerfile oluşturun. BuradaWORKDIRNode.js uygulamanızın kökünün yoludur:FROM node:8-alpine WORKDIR path-to-your-node-app COPY package*.json ./ RUN npm install COPY . . EXPOSE 9443 CMD [ "npm", "start" ]
Docker görüntüsünü oluşturun:
docker build -t helloworld .Örnek uygulamayı başlatın:
docker run -P -p 9443:9443 --name helloworld helloworld
3. Apigee Edge'de varlık oluşturma
Bu ayarlarla Edge Microgateway'e duyarlı bir proxy oluşturun. Daha fazla bilgi için Edge'de Edge Microgateway'e duyarlı bir API proxy'si oluşturma başlıklı makaleyi inceleyin.
- Proxy adı:
edgemicro_local - Düzeltme:
1 - Basepath:
/local - Hedef:
https://helloworld:9443
- Proxy adı:
API ürünü oluşturun. Ayrıntılar için Ürün oluşturma başlıklı makaleyi inceleyin.
Geliştirici oluşturma Ayrıntılar için Geliştirici oluşturma başlıklı makaleyi inceleyin.
Geliştirici uygulaması oluşturun. Ayrıntılar için Geliştirici uygulaması oluşturma başlıklı makaleyi inceleyin.
4. Kapsayıcıyı çalıştırın
Edge Micro yapılandırma dosyasını bir düzenleyicide açın. Örneğin:
vi $HOME/.edgemicro/myorg-test-config.yamledgemicrobölümünü aşağıdaki gibi düzenleyin.portvesslözelliklerinde değişiklik yaptığınızı unutmayın:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...$HOME/.edgemicrokonumundaki Edge Microgateway yapılandırma dosyasını base64 ile kodlamak için aşağıdaki komutu çalıştırın:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_orgveyour_env,edgemicro configkomutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına ters tırnak (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Docker container'da Edge Microgateway'i başlatmak için aşağıdaki komutu çalıştırın.
docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
5. TLS yapılandırmasını test etme
Kurulumu test etmek için aşağıdaki cURL komutunu yürütün. Mikro ağ geçidi uyumlu proxy'de kullandığınız temel yolu ve Apigee Edge'de oluşturduğunuz geliştirici uygulamasından alınan API anahtarını yerine koyun. Örneğin:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -vŞu hatayı görürsünüz:
... * subject: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * start date: Dec 10 02:12:22 2018 GMT * expire date: Sep 29 02:12:22 2021 GMT * issuer: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 502 Bad Gateway < Date: Wed, 12 Dec 2018 05:25:01 GMT < Connection: keep-alive < Content-Length: 93 < * Connection #0 to host localhost left intact {"message":"unable to verify the first certificate","code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE"}Edge Microgateway'i yeniden çalıştırın ancak bu kez
NODE_EXTRA_CA_CERTSdeğişkenini ekleyin.docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
Aşağıdaki cURL komutunu çalıştırın. Temel yolunuzu ve API anahtarınızı daha önce olduğu gibi değiştirin. Örneğin:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -vÇıkışı kontrol edin. Başarılı olduğunda HTTP 200 durum yanıtı alırsınız:
... > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 200 OK < x-powered-by: Express < content-type: text/html; charset=utf-8 < etag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0" < date: Wed, 12 Dec 2018 05:49:28 GMT < x-response-time: 421 < Connection: keep-alive < Transfer-Encoding: chunked < Hello world
Özel eklenti ekleme
Özel eklentiler yazarak mikro ağ geçidine yeni özellikler ve işlevler ekleyebilirsiniz. Özel eklentiler, mikro ağ geçidinden geçen istekler ve yanıtlarla programatik olarak etkileşim kurmanıza olanak tanır.
Eklentileri bir Docker kapsayıcısında çalışan Edge Microgateway örneğine dağıtmak için iki seçeneğiniz vardır:
Bu bölümün geri kalanında, standart bir Edge Microgateway kurulumu için eklentiler yazma ve yapılandırma konusunda bilgi sahibi olduğunuz varsayılır. Değilse Özel eklentiler geliştirme başlıklı makaleyi inceleyin.
A seçeneği: Eklentiler dizinini bir birime bağlama
(v.2.5.27'de eklendi) Birim bağlama yoluyla eklenti ekleme adımları, Edge Microgateway'e özel bir eklenti eklemek için gereken adımlara benzer. Docker kapsayıcısını çalıştırdığınızda, eklentiler dizinini yerel sisteminizdeki (birim) kapsayıcı ekleme noktasına (/opt/apigee/plugins) ekleyebilirsiniz.
Ardından, Edge Microgateway yapılandırma dosyasında yerel birim dizinini belirtirsiniz.
Aşağıdaki adımlarda, özel eklentileri dahil etmek için Docker ekleme noktasının nasıl kullanılacağı gösterilmektedir.
Edge Microgateway'i durdurma:
edgemicro stopÖzel eklentileriniz için bir dizin oluşturun. Örneğin,
$HOME/edgemicro/custom/pluginsÖzel eklenti dizinini Edge Microgateway yapılandırma dosyasına ekleyin. Örneğin:
plugins: dir: $HOME/edgemicro/custom/plugins sequence: - oauth - response-uppercase ````Basit bir eklenti yazma bölümündeki talimatlara göre eklentinizi yazın ve test edin. Eklenti kodunuzu doğru dizin yapısına yerleştirdiğinizden emin olun. Örneğin:
custom | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsonAşağıdakine benzer bir komutla Docker container'ını çalıştırın. Bu komutta, eklentiler dizinini Docker birimine bağlamak için
-vseçeneğini kullanırsınız. Aşağıdaki örnek komutta, eklentiler dizini$HOME/edgemicro/custom/plugins(özel eklentinin bulunduğu yer), kapsayıcının ekleme noktası/opt/apigee/pluginsile eşlenir:docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -v $HOME/edgemicro/custom/plugins:/opt/apigee/plugins \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=jdoe \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=39c4b561100cd7f258768d1072f3e1d7c17b5f36a18fe89972bb5c9ce7e58fb \ -e EDGEMICRO_SECRET=f5f9e239a38b4e6cc99c2aa067716a84aebdcff9580a7925fc500e402b1a5fa \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL gcr.io/apigee-microgateway/edgemicro:latestEklentiyi test etmek için API'nizi çağırın.
Daha fazla bilgi için VOLUME [shared filesystems] başlıklı makaleyi inceleyin.
B seçeneği: Eklentileri kapsayıcıya yerleştirme
Bu seçenekte, eklentileri kapsayıcınıza yerleştirirsiniz.
1. Eklentilerinizi paketleme
Basit bir eklenti yazma bölümündeki talimatlara göre eklentinizi yazın ve test edin.
Eklenti kodunuzu uygun dizin yapısına yerleştirin. Eklenti dizinleri belirli bir yapıya uymalıdır. Aşağıdaki örnekte, izlemeniz gereken yapı gösterilmektedir. Burada
response-uppercaseverequest-headers, özel eklenti kodu içeren klasörlerin adlarıdır (bu adlar yalnızca örnektir, klasör adlarınız farklı olabilir):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsoncd,pluginklasörüne taşındı.pluginklasöründe,pluginsklasörünün tamamını zipleyin:zip -r plugins.zip plugins/
2. Docker görüntüsü oluşturma
Ardından, eklenti kodunuzu bir Edge Microgateway görüntüsüne eklemek için bir Dockerfile oluşturun.
- Zip dosyasının bulunduğu dizinde
Dockerfileadlı yeni bir dosya oluşturun. Dockerfiledosyasına aşağıdaki kodu ekleyin ve dosyayı kaydedin:USER root RUN apk update && \ apk upgrade && \ apk add zipapk add zip && \ mkdir /opt/apigee/customplugins && \ chown apigee:apigee /opt/apigee/customplugins COPY plugins.zip /opt/apigee/customplugins RUN su - apigee -c "unzip /opt/apigee/customplugins/plugins.zip -d /opt/apigee/customplugins" EXPOSE 8000 EXPOSE 8443 USER apigee ENTRYPOINT ["entrypoint"]Eklentilerinizle yeni bir Edge Microgateway Docker görüntüsü oluşturun:
docker build -t image-name .Örneğin:
docker build -t edgemicroplugins .
3. Edge Microgateway yapılandırmasını güncelleme
Eklentiler paketlendiğine göre bunları Edge Microgateway yapılandırma dosyasına eklemeniz gerekir.
Edge Microgateway yapılandırma dosyasını bir düzenleyicide açın:
$HOME/.edgemicro/org-env-config.yaml
Örneğin:
vi $HOME/.edgemicro/myorg-test-config.yaml
Eklenti dizinini yapılandırma dosyasına ekleyin. Aşağıdaki örnekte
dirözelliği, eklenti kodunun konumunu (Dockerfile'da belirttiğiniz) belirtir. Ayrıca, eklenti dizininin adını da belirtmeniz gerekir. Aşağıdaki örnekte bu adresponse-uppercase'dır.edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
4. Mikro ağ geçidini başlatma
Son olarak, kapsayıcıda mikro ağ geçidini başlatmanız gerekir.
$HOME/.edgemicrokonumundaki Edge Microgateway yapılandırma dosyasını base64 ile kodlamak için aşağıdaki komutu çalıştırın:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_orgveyour_env,edgemicro configkomutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına ters tırnak (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway'i kapsayıcı olarak çalıştırma Komut, Edge Microgateway'i başlatmak için kapsayıcı çalışma zamanı tarafından kullanılan çeşitli ortam değişkenlerini ayarlar:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins image_name
Örneğin:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins edgemicroplugins
Eklentiyi test etmek için API'nizi çağırın:
API'nizi çağırıp çıkışın beklendiği gibi olduğunu doğrulayarak eklenti kodunun çalıştığını test edin:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
Örneğin,
response-uppercaseeklentisi şu şekilde bir yanıt döndürebilir:curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!