Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Bu konuda, Docker container'ında Edge Microgateway'in nasıl çalıştırılacağı açıklanmaktadır. Bu konuda ele alınan adımlar; Docker, Docker komutları ve Edge Microgateway kurulumu ve yapılandırması hakkında temel bilgilere sahip olduğunuzu varsayar. Daha fazla bilgi için Docker ve Edge Microgateway belgelerine bakın.
Ön koşullar
Edge Microgateway'i bir Docker container'ında çalıştırmadan önce aşağıdaki görevleri yapmanız gerekir:
Apigee kuruluşunuz/ortamınız için Edge Mikro Ağ Geçidi'ni 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 Mikro Ağ Geçidini Yapılandırma bölümüne bakın.
Yapılandırma adımlarını uyguladıktan sonra yapılandırma dosyasını bulun. Varsayılan konum şudur:
$HOME/.edgemicro/your_org-your_env-config.yaml
your_org
veyour_env
,edgemicro config
komutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır. Bir Docker container'ında Edge Microgateway'i başlattığınızda bu dosyaya ihtiyacınız olacaktır.edgemicro config
komutunu çalıştırdığınızda döndürülen anahtara ve gizli bilgi bilgilerine sahip olduğunuzdan emin olun. Örneğin:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
Bir Docker container'ında Edge Microgateway başlatmadan önce, kimliği doğrulanmış API proxy çağrıları yapmak için gereken Apigee Edge varlıklarını oluşturmanız (veya oluşturmanız) gerekir. Bu varlıklar arasında Edge Microgateway-aware proxy, bir API Ürünü, Geliştirici ve Geliştirici Uygulaması bulunur. Talimatların tamamı için Apigee Edge'de varlık oluşturma bölümüne bakın.
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, Önkoşullar bölümündeki tüm adımları uyguladığınızdan emin olun.
$HOME/.edgemicro
bölgesinde 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`
Bu örnekte
your_org
veyour_env
,edgemicro config
komutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına vurgu işaretleri (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway'i kapsayıcı olarak çalıştırın. Bu komut, Edge Microgateway'i başlatmak için container çalışma zamanı tarafından kullanılan çeşitli ortam değişkenlerini ayarlar:
chown -R 100:101 ~/.edgemicro/ \ 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 -P
Açığa çıkan tüm bağlantı noktalarını ana makineye yayınlayın. Ayrıca bkz. Docker çalıştırma referansı. -p
Tek bir bağlantı noktasını veya bağlantı noktasını açık bir şekilde eşleyin. Ayrıca bkz. Docker çalıştırma referansı. -d
Ayrı modda çalıştır. Ayrıca bkz. Docker çalıştırma referansı. -v, --volume
Birim eklemeyi belirtir. Edge Microgateway'i Docker container'ında TLS kullanacak şekilde yapılandırırsanız günlük dosyası dizinini eklerseniz 8443 numaralı bağlantı noktasını ortaya çıkarmanız gerektiğini unutmayın. Ayrıca bkz. VOLUME [paylaşılan dosya sistemleri]. Ayrıca bkz. Docker Container'ında TLS'yi kullanma. EDGEMICRO_ORG
Edge Mikro Ağ Geçidi'ni yapılandırmak için kullandığınız Apigee kuruluşunun adı. EDGEMICRO_ENV
Edge Mikro Ağ Geçidi'ni yapılandırmak için kullandığınız Apigee ortamının adı. EDGEMICRO_PROCESSES
Başlatılacak işlem sayısı. EDGEMICRO_KEY
Edge Mikro Ağ Geçidi'ni yapılandırdığınızda döndürülen anahtar. EDGEMICRO_SECRET
Edge Mikro Ağ Geçidi'ni yapılandırdığınızda döndürülen gizli anahtar. EDGEMICRO_CONFIG
Base64 olarak kodlanmış Edge Microgateway yapılandırma dosyasını içeren bir değişken. SERVICE_NAME
Kubernetes kullanıyorsanız bu parametre otomatik olarak doldurulur. Aksi takdirde, bunu istediğiniz şekilde ayarlayabilirsiniz. Hiçbir şey belirtmezseniz hizmet adı default
olarak ayarlanır.DEBUG
Hata ayıklamayı etkinleştirmek için *
olarak ayarlayın.HTTP_PROXY
HTTPS_PROXY
Edge Mikro Geçit, güvenlik duvarı arkasında çalıştığı ve ağ geçidinin Apigee Edge ile iletişim kuramadığı durumlarda kullanın. Daha fazla bilgi için Edge Microgateway'i bir şirket güvenlik duvarının arkasına kurma konusuna bakın. Örneğin:
HTTP_PROXY=http://10.203.0.1:5187/
NO_PROXY
Edge Microgateway'in proxy yapmaması gereken alan adlarının virgülle ayrılmış listesi. Daha fazla bilgi için Edge Microgateway'i bir şirket güvenlik duvarının arkasına kurma konusuna bakın. Örneğin:
localhost,127.0.0.1,localaddress,.localdomain.com
NODE_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üvenilir sertifika içeren bir dosyanın yoluna ayarlayın. Ayrıntılar için TLS sertifikaları bölümünü 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 özellikleriyle ilgili sınırları belirler. Docker dokümanlarında Çalışma zamanı ayrıcalığı ve Linux özellikleri bölümüne bakın. Örneğin:
chown -R 100:101 ~/.edgemicro/ \ 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
Kapsayıcının çalışıp çalışmadığı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 Mikro Ağ Geçidi'ni kapsayıcıda başlattıktan sonra kapsayıcıya API çağrıları yapabilirsiniz.
Örneğin API'nizin temel yolu /hello
ise:
http://localhost:8000/hello
Örnek çıktı:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Bu yanıtı görmeniz, Edge Microgateway'in API çağrısını başarıyla işlediği anlamına gelir. Ancak Edge Microgateway, kimlik doğrulama için varsayılan olarak API anahtarı gerektirir. Sonraki bölümde API'yi geçerli bir API anahtarıyla test edeceksiniz.
Bir API'yi geçerli bir API anahtarıyla 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ı kullanacaksınız.
x-api-key
başlığıyla API'yi aşağıdaki gibi çağırın. Geliştirici Uygulaması'ndan kopyaladığınız Tüketici Anahtarı değeri API anahtarıdır. Varsayılan olarak Edge Microgateway, anahtarı aşağıdaki gibi x-api-key
adlı bir üstbilgide iletmenizi bekler:
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ı ile Edge Mikro Ağ Geçidi üzerinden kimliği doğrulanmış API çağrıları yapma hakkında daha fazla bilgi edinmek için 4. Bölüm: Güvenli Edge Mikro Ağ Geçidi bölümüne bakın.
Uç Mikro Ağ Geçidini Durdurma
Edge Mikro Ağ Geçidi'ni durdurmak için aşağıdaki Docker komutunu kullanın:
docker stop edgemicro
Edge Mikro Ağ Geçidini Yeniden Başlatma
Edge Mikro Ağ Geçidi'ni durdurduktan sonra şu Docker komutuyla yeniden başlatabilirsiniz:
docker start edgemicro
Docker container'ında TLS'yi kullanma
Bu bölümde, Docker container'ında çalışan Edge Microgateway için TLS'nin nasıl yapılandırılacağı açıklanmaktadır. Edge Mikro Ağ Geçidi sunucusunu gelen istekler (kuzey yönü) için TLS kullanacak şekilde ve Edge Microgateway'i, hedef uç noktalara giden istekler (güneye giden yön) için bir TLS istemcisi olacak şekilde yapılandırabilirsiniz.
Sertifika dosyalarının yerleştirileceği yer
Edge Microgateway çalıştıran Docker kapsayıcısının /opt/apigee/.edgemicro
üzerinde bir ekleme noktası var.
Edge Mikro Ağ Geçidi'ni TLS sertifikalarını kullanacak şekilde yapılandırdığınızda sertifika dosyalarını bu ekleme noktasında kullanıma sunabilir 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 (kendinden imzalı sertifika gibi) bir Sertifika Yetkilisi (CA) kullanıyorsanız kapsayıcıyı çalıştırırken NODE_EXTRA_CA_CERTS
parametresini kullanmayı düşünün.
Bu parametreyi, PEM biçiminde bir veya daha fazla güvenilir sertifika içeren bir dosyanın yoluna 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:
chown -R 100:101 ~/.edgemicro/ \
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 bkz. Edge Micro'yu Docker container'ı olarak çalıştırma.
TLS doğrulamasını devre dışı bırakma
Önerilmese de, bazı durumlarda bir container'da çalışan Edge Microgateway için TLS doğrulamasını devre dışı bırakmak isteyebilirsiniz. TLS'yi devre dışı bırakma özelliği varsayılan olarak Edge Microgateway Docker kapsayıcısında yerleşik değildir. Bu görevi tamamlamak üzere Edge Microgateway için özelleştirilmiş bir Docker görüntüsü oluşturmanız gerekir. Aşağıda, özel görüntü oluşturma ve TLS doğrulamasını devre dışı bırakmayla ilgili genel talimatlar bulunmaktadır.
https://github.com/apigee-internal/microgateway
adresinden Edge Microgateway kaynak deposunu klonlayın veya indirin.cd
işlemini, kaynak kodu dizinindekimicrogateway/kubernetes/docker/edgemicro
dizinine yapıştırın.Örneğin:
cd $HOME/git/microgateway/kubernetes/docker/edgemicro
entrypoint.sh
dosyasını açın veNODE_TLS_REJECT_UNAUTHORIZED
ortam değişkenini kabul etmek için kodu değiştirin. Daha sonra, kapsayıcıyı çalıştırdığınızda bu değişken için bir değer belirtirsiniz.Docker container'ını oluşturun:
docker build -t edgemicro .
Kapsayıcıyı çalıştırdığınızda,
-e NODE_TLS_REJECT_UNAUTHORIZED = 1
seçeneğini belirtin. Örneğin:
chown -R 100:101 ~/.edgemicro/ \
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 giden TLS'yi yapılandırma
Bu bölümde, Edge Microgateway sunucusunda kuzeye giden (gelen) bir TLS bağlantısının nasıl oluşturulacağı 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. Intital kurulum adımları
- Sisteminizde
openssl.cnf
dosyasını bulun. Örneğin,/etc/ssl/openssl.cnf
. opensssl.cnf
dosyasını düzenlemek için açın.Yapılandırma dosyanızda
req_extensions
bulunduğundan emin olun. Örneğin, dosyanızda aşağıdakine benzer bilgiler bulunur:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Doğru SNI özelliklerini oluşturmak için
openssl.cnf
öğesine aşağıdaki dizeyi 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.cnf
dosyası:[ 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::1
Henüz yapmadıysanız Edge Mikro Ağ Geçidi'ni başlatmak ve yapılandırmak için Önkoşullar bölümünde verilen adımları uygulayın. Bu işlemi tamamladığınızda Edge Microgateway'e Duyarlı Proxy, API Ürünü, Geliştirici ve Geliştirici Uygulaması oluşturmuş olmanız gerekir. Ayrıca
edgemicro configure
komutunu çalıştırmış ve bir anahtar ve gizli anahtar almış olmanız gerekir.
2. Kendinden imzalı sertifikalar oluşturma
Ardından, TLS'yi kurmak için ihtiyaç duyacağınız sertifikaları ve anahtarları oluşturun:
cd
ile$HOME/.edgemicro
dizinine.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.cnf
dosyası yolunun doğru olduğundan emin olun.Bash dosyasını çalıştırın. Sertifika bilgilerini girmeniz istenecektir. Ortak Ad için
localhost
kullandığınızdan emin olun.Aşağıdaki dosyaların oluşturulduğundan emin olun:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.crt
3. Edge Microgateway yapılandırma dosyasını düzenleyin
Edge Micro yapılandırma dosyasını bir düzenleyicide açın. Örneğin:
vi $HOME/.edgemicro/myorg-test-config.yaml
edgemicro
kıtasını aşağıdaki gibi düzenleyin.port
vessl
özelliklerinde değişiklik yaptığınıza dikkat edin: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/.edgemicro
konumunda bulunan Edge Microgateway yapılandırma dosyasını base64 olarak kodlamak için aşağıdaki komutu yürütün:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Bu örnekte
your_org
veyour_env
,edgemicro config
komutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına vurgu işaretleri (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Ayrıca bkz. Edge Micro'yu Docker container'ı olarak çalıştırma.
4. Kapsayıcıyı çalıştırın
Docker container'ını Edge Microgateway ile çalıştırmak için aşağıdaki komutu yürütün:
chown -R 100:101 ~/.edgemicro/ \ 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 parametrelere dikkat edin. Bunlar, Edge Micro'yu Docker container'ı olarak çalıştırma bölümünde açıklanan temel komuttan farklıdır.
port
,8443
olarak ayarlandı.- Anahtar ve sertifika dosyalarını eklemek için bir birim bağlantısı kullanılır.
NODE_EXTRA_CA_CERTS
değişkeni, özel bir CA eklemek için kullanılır (kendinden imzalı sertifikalarda gerektiği gibi).
5. TLS yapılandırmasını test etme
Kurulumu test etmek için aşağıdaki cURL komutunu yürütün. Komutun yerine Basepath ve API anahtarınızı girin. Aşağıdaki örnekte,
rootca.pem
öğesinin bulunduğu dizinde olduğunuz ve oluşturduğunuz proxy'nin temel yoluna (/hello
) sahip olduğu varsayılmaktadır:curl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
Ayrıntılı cURL çıkışı, TLS el sıkışmanın her adımını gösterir. HTTP 200 yanıtı görürseniz yapılandırma başarılı olmuş demektir:
* 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üneye giden TLS'yi yapılandırma
Bu bölümde, Edge Microgateway sunucusu ile bir arka uç hedef uygulaması arasında güneye giden (giden) TLS bağlantısının nasıl oluşturulacağı açıklanmaktadır. Aşağıdaki örnekte kendinden imzalı sertifikalar kullanılmaktadır.
1. İlk kurulum adımları
- Sisteminizde
openssl.cnf
dosyasını bulun. Örneğin,/etc/ssl/openssl.cnf
. opensssl.cnf
dosyasını düzenlemek için açın.Yapılandırma dosyanızda
req_extensions
bulunduğundan emin olun. Örneğin, dosyanızda aşağıdakine benzer bilgiler bulunur:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Doğru SNI özelliklerini oluşturmak için
openssl.cnf
öğesine aşağıdaki dizeyi 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.cnf
dosyası:[ 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::1
edgemicro configure
komutunu ç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 Mikro Ağ Geçidini Yapılandırma bölümüne bakın.
edgemicro configure
aracından döndürülen anahtar ve gizli bilgi 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
ile.edgemicro
dizinine.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.cnf
dosyası yolunun doğru olduğundan emin olun.Bash dosyasını çalıştırın. Sertifika bilgilerini girmeniz istenecektir. Ortak Ad için
hellworld
kullandığınızdan emin olun.Aşağıdaki dosyaların oluşturulduğundan emin olun:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.crt
server.js
adlı 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.js
ile aynı dizinde birpackage.json
dosyası 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ılıkları almak için
npm install
komutunu çalıştırın.server.js
ile aynı dizinde yeni bir Dockerfile oluşturun. BuradaWORKDIR
, Node.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şturun
Bu ayarlarla Edge Mikro Ağ Geçidi'ne duyarlı bir proxy oluşturun. Daha fazla bilgi için Edge'de Edge Microgateway uyumlu API proxy'si oluşturma bölümüne bakın.
- Proxy adı:
edgemicro_local
- Düzeltme:
1
- Temel yol:
/local
- Hedef:
https://helloworld:9443
- Proxy adı:
Bir API ürünü oluşturun. Ayrıntılı bilgi için Ürün oluşturma başlıklı makaleyi inceleyin.
Geliştirici oluşturun. 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 konusuna bakın
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.yaml
edgemicro
kıtasını aşağıdaki gibi düzenleyin.port
vessl
özelliklerinde değişiklik yaptığınıza dikkat edin: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/.edgemicro
bölgesinde bulunan Edge Microgateway yapılandırma dosyasını base64 ile şifrelemek için aşağıdaki komutu çalıştırın:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Bu örnekte
your_org
veyour_env
,edgemicro config
komutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına vurgu işaretleri (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Docker container'ında Edge Microgateway'i başlatmak için aşağıdaki komutu çalıştırın.
chown -R 100:101 ~/.edgemicro/ \ 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 duyarlı proxy'de kullandığınız temel yolu ve Apigee Edge'de oluşturduğunuz Developer uygulamasından alınan API anahtarını değiştirin. Örneğin:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
Şu hatayı görmeniz gerekir:
... * 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 Mikro Ağ Geçidi'ni yeniden çalıştırın, ancak bu kez
NODE_EXTRA_CA_CERTS
değişkenini ekleyin.chown -R 100:101 ~/.edgemicro/ \ 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 yürütün. Basepath ve API anahtarınızı önceki gibi değiştirin. Örneğin:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
Çıkışı kontrol edin. İşlem 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 imkanlar ekleyebilirsiniz. Özel eklentiler, mikro ağ geçidinden geçen istek ve yanıtlarla programlı bir şekilde etkileşim kurmanıza olanak tanır.
Eklentileri, docker container'ında çalışan bir 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 Mikro Geçit kurulumu için eklenti yazma ve yapılandırma hakkında bilgi sahibi olduğunuz varsayılır. Aksi takdirde, Özel eklentiler geliştirme konusuna bakın.
Seçenek A: Eklenti dizinini bir birime ekleyin
(v.2.5.27'de eklenmiştir) Birim bağlantısı aracılığıyla eklenti ekleme adımları, Edge Mikro Ağ Geçidi'ne özel eklenti eklemek için gereken adımlara benzer. Docker container'ını çalıştırdığınızda, eklenti dizinini yerel sisteminize (birim), container 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 eklentiler eklemek için Docker ekleme noktasının nasıl kullanılacağı gösterilmektedir.
Edge Mikro Ağ Geçidini Durdur:
edgemicro stop
Özel eklentileriniz için bir dizin oluşturun. Örneğin,
$HOME/edgemicro/custom/plugins
Edge Microgateway yapılandırma dosyasına özel eklenti dizinini ekleyin. Örneğin:
plugins: dir: $HOME/edgemicro/custom/plugins sequence: - oauth - response-uppercase ````
Eklentinizi Yazma için basit bir eklenti sayfasındaki talimatlara göre 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.json
Docker container'ını aşağıdakine benzer bir komutla çalıştırın. Eklentiler dizinini Docker birimine eklemek için
-v
seçeneğini kullanın. Aşağıdaki örnek komutta, eklenti dizini$HOME/edgemicro/custom/plugins
(özel eklentinin bulunduğu yer) kapsayıcının ekleme noktasına/opt/apigee/plugins
eşlenmiştir:chown -R 100:101 ~/.edgemicro/ \ 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:latest
Eklentiyi test etmek için API'nizi çağırın.
Daha fazla bilgi için VOLUME [paylaşılan dosya sistemleri] bölümüne bakın.
B Seçeneği: Eklentileri kapsayıcının içine oluşturma
Bu seçenekte eklentileri kapsayıcınızın içine derlersiniz.
1. Eklentilerinizi paketleyin
Eklentinizi Yazma için basit bir eklenti sayfasındaki talimatlara göre yazın ve test edin.
Eklenti kodunuzu doğru dizin yapısına yerleştirin. Eklenti dizinleri belirli bir yapıda olmalıdır. Aşağıdaki örnekte izlemeniz gereken yapı gösterilmektedir. Burada
response-uppercase
verequest-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.json
plugin
klasörünecd
.plugin
klasöründekiplugins
klasörünün tamamını sıkıştırın: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
Dockerfile
adlı yeni bir dosya oluşturun. Dockerfile
içine aşağıdaki kodu ekleyip 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 Mikro Ağ Geçidi yapılandırmasını güncelleme
Eklentiler paketlendiğine göre artık 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, (Dockerfile'da belirttiğiniz) eklenti kodunun konumunu belirtir. Ayrıca, eklenti dizininin adını da belirtmeniz gerekir. Aşağıdaki örnekte bu adresponse-uppercase
şeklindedir.edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
4. Mikro ağ geçidini başlatma
Son olarak, kapsayıcıdaki mikro ağ geçidini başlatmanız gerekir.
$HOME/.edgemicro
bölgesinde 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`
Bu örnekte
your_org
veyour_env
,edgemicro config
komutunu çalıştırdığınızda kullandığınız kuruluş ve ortamdır.Komutun etrafına vurgu işaretleri (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway'i kapsayıcı olarak çalıştırın. Bu komut, Edge Microgateway'i başlatmak için container ç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ğırarak ve çıkışın beklendiği gibi olduğunu doğrulayarak eklenti kodunun çalışıp çalışmadığını test edin:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
Örneğin,
response-uppercase
eklentisi aşağıdaki gibi bir yanıt döndürebilir:curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!