Edge Microgateway için Docker'ı Kullanma

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Bu konu, bir Docker container'ında Edge Microgateway'in nasıl çalıştırılacağını açıklamaktadır. Adımlar Docker, Docker komutları ve Edge Microgateway ile ilgili temel bilgilere sahip olduğunuz varsayılır kurulum ve yapılandırma. Örneğin, Daha fazla bilgi için Docker dokümanlarına bakın ve Edge Microgateway'den daha fazlası için kullanılabilir.

Ön koşullar

Bir Docker container'ında Edge Microgateway'i çalıştırmadan önce aşağıdakileri yapmanız gerekir görevler:

  • 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 edinmek 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ı gerçekleştirdikten sonra yapılandırmayı bulun. dosyası olarak kaydedebilirsiniz. Varsayılan konum şu şekildedir:

    $HOME/.edgemicro/your_org-your_env-config.yaml

    burada your_org ve your_env kuruluştur ve edgemicro config komutunu çalıştırdığınızda kullandığınız ortam hakkında daha fazla bilgi edinin. Şunlar gerekir: bu dosyayı

  • edgemicro config komutudur. Örneğin:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    
  • Bir Docker container'ında Edge Microgateway'i başlatmadan önce için gerekli Apigee Edge varlıklarını (veya bunları oluşturmuş) kimliği doğrulanmış API proxy çağrıları yapmak için kullanılır. Bu varlıklar, Edge Mikro Ağ Geçidi Uyumlu proxy, API Ürünü, Geliştirici ve Geliştirici Uygulaması olur. Talimatların tamamı için bkz. Apigee Edge'de varlıklar oluşturun.

Edge Micro'yı Docker container'ı olarak çalıştırın

  1. Edge Microgateway için Docker görüntüsünü indirin:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. Sonraki adımlara geçmeden önce Ön koşullar bölümüne gidin.

  3. Edge Microgateway yapılandırma dosyasını base64 olarak kodlamak için aşağıdaki komutu çalıştırın $HOME/.edgemicro konumunda bulunuyor:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    Burada your_org ve your_env, edgemicro config komutunu çalıştırdı.

    Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  4. Edge Microgateway'i container olarak çalıştırın. Bu komut, çeşitli ortam değişkenlerini ayarlar Edge Microgateway'i başlatmak için container çalışma zamanı tarafından kullanılan anahtar kelimeleri kullanabilirsiniz:

    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ı aralığı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 bağlantısını belirtir. Edge Mikro Ağ Geçidi'ni yapılandırırsanız Docker container'ında TLS'yi kullanmak istiyorsanız aşağıdaki bağlantı noktası 8443'ü açığa çıkarmanız gerekir: günlük dosyası dizinini ekleyin. Ayrıca VOLUME [paylaşılan dosya sistemleri] bölümüne de göz atın. Ayrıca bkz. Docker kapsayıcıda TLS kullanma.
    EDGEMICRO_ORG Edge Microgateway'i yapılandırmak için kullandığınız Apigee kuruluşunun adı.
    EDGEMICRO_ENV Edge Microgateway'i 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 Microgateway'i yapılandırdığınızda döndürülen anahtar.
    EDGEMICRO_SECRET Edge Microgateway'i yapılandırdığınızda döndürülen gizli anahtar.
    EDGEMICRO_CONFIG Base64 kodlu 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 halde bu ayarı istediğiniz gibi yapabilirsiniz. Hiçbir şey belirtmezseniz hizmet, ad default olarak ayarlandı.
    DEBUG Hata ayıklamayı etkinleştirmek için * olarak ayarlayın.
    HTTP_PROXY HTTPS_PROXY Edge Mikro ağ geçidi şu durumda kullan: ve ağ geçidi Apigee ile iletişim kuramaz. Kenar. Daha fazla Edge Microgateway'i şirket güvenlik duvarının arkasında kurma başlıklı makaleyi inceleyin.

    Ö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 Bir şirket güvenlik duvarının ardından Edge Microgateway'i kurma başlıklı makaleye bakın.

    Örneğin: localhost,127.0.0.1,localaddress,.localdomain.com

    NODE_EXTRA_CA_CERTS (İsteğe bağlı) Güvenilir olmayan bir CA kullanıyorsanız bu parametreyi kullanın varsayılan olarak Node.js tarafından kullanılır. Bu parametrenin değerini PEM biçiminde bir veya daha fazla güvenilen sertifika içeren dosya. Örneğin, TLS sertifikaları başlıklı makaleye göz atın.
    --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 özelliklerini sınırlar. Docker belgelerinde Çalışma zamanı ayrıcalığı ve Linux özellikleri bölümüne bakın.

    Ö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
  5. Container'ı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ı test etme

Container'da Edge Microgateway'i başlattıktan sonra, container'a 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örüyorsanız Edge Mikro Ağ Geçidi başarıyla işlenmiştir. API çağrısı. Bununla birlikte, Edge Microgateway, kimlik doğrulama için varsayılan olarak bir API anahtarı gerektirir. 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 Uygulama sayfasında Tüketici Anahtarı'nı gösterip kopyalayın. Bu değer API anahtarıdır. Şunu kullanacağınız: kimlik doğrulaması yapılmış API çağrıları yapmak için bu anahtarı kullanır.

x-api-key başlığıyla aşağıdaki gibi API'yi çağırın. Tüketici Anahtarı değeri API anahtarıdır. Varsayılan olarak Edge Mikro Ağ Geçidi anahtarı 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"

Edge Microgateway üzerinden kimliği doğrulanmış API çağrıları yapma hakkında daha fazla bilgi edinmek istiyorsanız 4. Bölüm: Güvenli Uç Mikro Ağ Geçidi'ne göz atın.

Edge Mikro Ağ Geçidi Durduruluyor

Edge Microgateway'i durdurmak için aşağıdaki Docker komutunu kullanın:

docker stop edgemicro

Edge Mikro Ağ Geçidi Yeniden Başlatılıyor

Edge Microgateway'i durdurduktan sonra şu Docker komutuyla yeniden başlatabilirsiniz:

docker start edgemicro

Docker container'ında TLS kullanma

Bu bölümde, çalışan Edge Mikro Ağ Geçidi için TLS'nin nasıl yapılandırılacağı açıklanmaktadır inceleyebilirsiniz. Edge Mikro Ağ Geçidi sunucusunu TLS kullanacak şekilde yapılandırabilirsiniz tıklayın (kuzey yönlü yön) tıklayın ve Edge'i yapılandırabilirsiniz. Uç noktalara giden istekler için TLS istemcisi olacak mikro ağ geçidi (güneye doğru).

Sertifika dosyaları nereye yerleştirilir?

Edge Microgateway'i çalıştıran Docker container'ının /opt/apigee/.edgemicro üzerinde ekleme noktası var. TLS sertifikalarını kullanacak şekilde Edge Microgateway'i yapılandırdığınızda bağlantı noktasında mevcut sertifika dosyalarını da kullanabilir ve Edge Microgateway yapılandırma dosyasıdır. Bu yapılandırma dosyası genellikle $HOME/.edgemicro konumunda bulunur olup 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

Proje yöneticisi tarafından varsayılan olarak güvenilmeyen bir Sertifika Yetkilisi (CA) Node.js (kendinden imzalı bir sertifikada olduğu gibi) Kapsayıcıyı çalıştırdığınızda NODE_EXTRA_CA_CERTS parametresini kullanın.

Bu parametreyi, bir veya daha fazla öğe içeren bir dosyanın yolu olarak belirleyin Güvenilir sertifikaları PEM biçiminde sunar. Bu parametrenin nasıl kullanıldığını görmek için örnekler Kuzeye giden TLS'yi yapılandırma ve Güneye giden TLS'yi yapılandırma.

Ö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 bkz. Edge Micro'yı Docker container'ı olarak çalıştırma.

TLS doğrulamasını devre dışı bırakma

Önerilmese de, bazı durumlarda TLS doğrulamasını devre dışı bırakmak isteyebilirsiniz bir container'da çalışan Edge Microgateway'dir. TLS'yi devre dışı bırakma özelliği varsayılan olarak Edge Microgateway Docker container'ına dahil edilmemiştir. Şu hedeflere ulaşmak için: Edge Microgateway için özelleştirilmiş bir Docker görüntüsü oluşturmanız gerekir. Şunun altında: özel görüntü oluşturmaya ve TLS doğrulamasını devre dışı bırakmaya ilişkin genel talimatlardır.

  1. Edge Microgateway kaynak deposunu klonlayın veya şuradan indirin: https://github.com/apigee-internal/microgateway

  2. Kaynak kodu dizinindeki microgateway/kubernetes/docker/edgemicro dizinine cd.

    Örneğin:

    cd $HOME/git/microgateway/kubernetes/docker/edgemicro
    
  3. entrypoint.sh dosyasını açın ve kodu, NODE_TLS_REJECT_UNAUTHORIZED koşullarını kabul edecek şekilde değiştirin. ortam değişkeni Daha sonra, kapsayıcıyı çalıştırdığınızda bu kapsayıcı için bir değer değişkenine eklenmelidir.

  4. Docker container'ını oluşturun:

    docker build -t edgemicro .
    
  5. Kapsayıcıyı çalıştırırken -e NODE_TLS_REJECT_UNAUTHORIZED = 1 seç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 giden TLS nasıl yapılandırılır?

Bu bölümde, Edge Mikro Ağ Geçidi üzerinde kuzeye giden (gelen) bir TLS bağlantısının nasıl kurulacağı açıklanmaktadır sunucu. Northbound 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. Başlangıçta kurulum adımları

  1. Sisteminizde openssl.cnf dosyasını bulun. Örneğin, /etc/ssl/openssl.cnf.
  2. Düzenlemek için opensssl.cnf dosyasını açın.
  3. Yapılandırma dosyanızda req_extensions bulunduğundan emin olun. Örneğin, dosyanızda aşağıdakine benzer bilgiler bulunmalıdır:

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. Doğru SNI özelliklerini oluşturmak için openssl.cnf öğesine şu 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
    
  5. İlk kullanıma hazırlamanızı ve kullanmaya başlamak için Ön koşullar bölümünde verilen adımları Henüz yapmadıysanız Edge Microgateway'i yapılandırın. İşlem tamamlandığında bir API ürünü, geliştirici veya bir API ürünü oluşturmuş olması gerekir. ve Geliştirici Uygulaması. Ayrıca, edgemicro configure komutunu çalıştırmanız gerekir. bir anahtar ile gizli bilgi aldı.

2. Kendinden imzalı sertifikalar oluşturma

Ardından, TLS'yi oluşturmak için ihtiyaç duyacağınız sertifikaları ve anahtarları oluşturun:

  1. $HOME/.edgemicro dizinine cd.
  2. Aşağıdaki bash komut dosyasını oluşturun. Onu istediğiniz gibi adlandırabilirsiniz. Örnek: 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
    
  3. Bash dosyasında, openssl.cnf dosyasının yolunun doğru olduğundan emin olun.

  4. Bash dosyasını yürütün. Sertifika bilgileri girmeniz istenecektir. Şunu kullandığınıza emin olun: Ortak Ad için localhost.

  5. Aşağıdaki dosyaların oluşturulup oluşturulmadığını kontrol edin:

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt

3. Edge Microgateway yapılandırma dosyasını düzenleyin

  1. Edge Micro yapılandırma dosyasını bir düzenleyicide açın. Örneğin:

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. edgemicro dizeyi aşağıdaki gibi düzenleyin. Değişiklik yapmakta olduğunuzu unutmayın port ve ssl özelliklerine:

    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:
    ...
    
  3. Edge Microgateway yapılandırma dosyasını base64 olarak kodlamak için aşağıdaki komutu yürütün $HOME/.edgemicro konumunda bulunuyor:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    Burada your_org ve your_env, edgemicro config komutunu çalıştırdı.

    Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`

Ayrıca bkz. Edge Micro'yı Docker container'ı olarak çalıştırma.

4. Kapsayıcıyı çalıştırın

  1. Docker container'ını 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
    
  2. Komutta kullanılan aşağıdaki parametreleri not edin: temel ilkelerden farklıdırlar komutuna eklemek için Edge Micro'yı Docker container'ı olarak çalıştırma başlıklı makaleye bakın.

    • port, 8443 olarak ayarlandı.
    • Anahtar ve sertifika dosyalarını eklemek için birim bağlantısı kullanılır.
    • NODE_EXTRA_CA_CERTS değişkeni, özel bir CA eklemek için kullanılır (durumda gerektiği gibi kullanılabilir.

5. TLS yapılandırmasını test etme

  1. Kurulumu test etmek için aşağıdaki cURL komutunu yürütün. Vekil Basepath ve API anahtarınızı komuta ekleyin. Aşağıdaki örnekte, aşağıdaki örnekte gösterildiği dizinde olduğunuz varsayılmaktadır: rootca.pem bulundu ve oluşturduğunuz proxy /hello temel yoluna sahip:

    curl -v https://localhost:8443/hello --cacert rootca.pem \
    -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
    
  2. Ayrıntılı cURL çıkışı, TLS el sıkışma. HTTP 200 yanıtı görüyorsanız 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 nasıl yapılandırılır?

Bu bölümde, Google Analytics 4 ile izlenen Edge Microgateway sunucusu ve arka uç hedef uygulamasıdır. Aşağıdaki örnekte kendinden imzalı sertifikalar.

1. İlk kurulum adımları

  1. Sisteminizde openssl.cnf dosyasını bulun. Örneğin, /etc/ssl/openssl.cnf.
  2. Düzenlemek için opensssl.cnf dosyasını açın.
  3. Yapılandırma dosyanızda req_extensions bulunduğundan emin olun. Örneğin, dosyanızda aşağıdakine benzer bilgiler bulunmalıdır:

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. Doğru SNI özelliklerini oluşturmak için openssl.cnf öğesine şu 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
    
  5. 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 edinmek için 1. Bölüm: Edge Mikro Ağ Geçidini Yapılandırma bölümüne bakın.

  6. Şuradan döndürülen anahtar ve gizli kimlik bilgilerini kopyalayın: edgemicro configure Kapsayıcıyı çalıştırmak için bu değerlere ihtiyacınız olacaktır. Örneğin:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    

2. Node.js hedef uygulaması oluşturma

  1. .edgemicro dizinine cd.

  2. Aşağıdaki bash komut dosyasını oluşturun. Onu istediğiniz gibi adlandırabilirsiniz. Örnek: 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
    
  3. Bash dosyasında, openssl.cnf dosyasının yolunun doğru olduğundan emin olun.

  4. Bash dosyasını yürütün. Sertifika bilgileri girmeniz istenecektir. Şunu kullandığınıza emin olun: Ortak Ad için hellworld.

  5. Aşağıdaki dosyaların oluşturulup oluşturulmadığını kontrol edin:

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt
  6. 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);
    
  7. server.js ile aynı dizinde bir package.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"
      }
    }
    
  8. Bağımlılıkları almak için npm install komutunu çalıştırın.

  9. server.js ile aynı dizinde (WORKDIR) yeni bir Dockerfile oluşturun. Node.js uygulamanızın köküdür:

    FROM node:8-alpine
    WORKDIR path-to-your-node-app
    COPY package*.json ./
    
    RUN npm install
    COPY . .
    EXPOSE 9443
    CMD [ "npm", "start" ]
    
  10. Docker görüntüsünü oluşturun:

    docker build -t helloworld . 
    
  11. Örnek uygulamayı başlatın:

    docker run -P -p 9443:9443 --name helloworld helloworld
    

3. Apigee Edge'de varlık oluşturun

  1. Bu ayarlarla Edge Mikro Ağ Geçidi duyarlı bir proxy oluşturun. Daha fazla bilgi için Edge'de Edge Mikro Ağ Geçidi Uyumlu API proxy'si oluşturma başlıklı makaleyi inceleyin.

    • Proxy adı: edgemicro_local
    • Düzeltme: 1
    • Temel yol: /local
    • Hedef: https://helloworld:9443
  2. Bir API ürünü oluşturun. Ayrıntılar için Ürün oluşturma başlıklı makaleyi inceleyin.

  3. Geliştirici oluşturun. Ayrıntılar için Geliştirici oluşturma konusuna bakın.

  4. 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

  1. Edge Micro yapılandırma dosyasını bir düzenleyicide açın. Örneğin:

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. edgemicro dizeyi aşağıdaki gibi düzenleyin. Değişiklik yapmakta olduğunuzu unutmayın port ve ssl özelliklerine:

    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:
    ...
    
  3. $HOME/.edgemicro konumunda bulunan Edge Microgateway yapılandırma dosyasının base64 kodlamasını yapmak için aşağıdaki komutu yürütün:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    Burada your_org ve your_env, edgemicro config komutunu çalıştırdı.

    Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  4. Docker container'ında 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

  1. Kurulumu test etmek için aşağıdaki cURL komutunu yürütün. Vekil mikro ağ geçidine duyarlı proxy'de kullandığınız temel yolunuz ve Apigee Edge'de oluşturduğunuz geliştirici uygulamasından alınan API anahtarı. Ö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"}
    
  2. Edge Microgateway'i yeniden çalıştırın ancak bu kez NODE_EXTRA_CA_CERTS değ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
    
  3. Aşağıdaki cURL komutunu yürütün. Vekil temel yolunuz ve API anahtarınız eskisi gibi. Örneğin:

    curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
    
  4. Çıkışı kontrol edin. İşlem başarılı olursa 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 etiketler yazarak mikro ağ geçidine yeni özellikler ve yetenekler ekleyebilirsiniz: ekleyebilirsiniz. Özel eklentiler, isteklerle programlı bir şekilde etkileşimde bulunmanıza olanak tanır. ve yanıtlarla mikro ağ geçidinden geçtiğini düşünelim.

Eklentileri Edge Mikro Ağ Geçidi'ne dağıtmak için iki seçeneğiniz vardır Docker container'ında çalışan bir örnektir:

Bu bölümün geri kalanında, bildiğinizi belirtmelisiniz. eklentilerine sahip olması gerekir. Yoksa Özel eklentiler geliştirme başlıklı makaleye bakın.

Seçenek A: Eklenti dizinini bir birime ekleme

(Sürüm 2.5.27'de eklendi) Birim bağlantısı aracılığıyla eklenti ekleme adımları şunlardır: Edge Microgateway'e özel eklenti eklemek için gereken adımlara benzer. Zaman Docker container'ı çalıştırdığınızda, eklenti dizinini yerel tarayıcınıza ekleyebilirsiniz /opt/apigee/plugins olan container ekleme noktasında sistem (hacim) değerini alır. Ardından Edge Microgateway yapılandırma dosyasında yerel birim dizinini belirtirsiniz.

Aşağıdaki adımlar, özel boyut eklemek için Docker ekleme noktasının nasıl kullanılacağını ekleyebilirsiniz.

  1. Edge Mikro Ağ Geçidi'ni durdurun:

    edgemicro stop
    
  2. Özel eklentileriniz için bir dizin oluşturun. Örneğin,

    $HOME/edgemicro/custom/plugins
    
  3. Özel eklenti dizinini Edge Microgateway yapılandırma dosyasına ekleyin. Örneğin:

      plugins:
        dir: $HOME/edgemicro/custom/plugins
        sequence:
          - oauth
          - response-uppercase
      ````
    
  4. Eklentinizi Basit bir eklenti yazma başlıklı makaledeki talimatlara göre yazın ve test edin. Şunları yaptığınızdan emin olun: eklenti kodunuzu doğru dizin yapısına yerleştirin. Örneğin:

    custom
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  5. Docker container'ı aşağıdakine benzer bir komutla çalıştırın. Eklenti dizinini Docker birimine eklemek için -v seçeneğini kullanın. aşağıdaki örnek komut, eklenti dizini: $HOME/edgemicro/custom/plugins (özel eklentinin bulunduğu yer) kapsayıcının ekleme noktası (/opt/apigee/plugins) ile 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:latest
    
  6. 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.

Seçenek B: Eklentileri kapsayıcıda derleme

Bu seçenekte, eklentileri kapsayıcınızda oluşturursunuz.

1. Eklentilerinizi paketleyin

  1. Eklentinizi Basit bir eklenti yazma başlıklı makaledeki talimatlara göre yazın ve test edin.

  2. Eklenti kodunuzu doğru dizin yapısına yerleştirin. Eklenti dizinleri belirli bir yapıya uygun olmalıdır. Aşağıdaki örnekte takip etmeniz gereken yapı gösterilmektedir. Burada response-uppercase ve request-headers, izlemeniz gereken yapıyı ifade etmektedir özel eklenti kodu içeren klasörlerin adları (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
    
  3. plugin klasörüne cd.

  4. plugin klasöründe plugins 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 Edge Microgateway görüntüsüne eklemek için bir Dockerfile oluşturun.

  1. ZIP dosyasının bulunduğu dizinde, Dockerfile adında yeni bir dosya oluşturun.
  2. Şu kodu Dockerfile içine 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"]
    
  3. 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 şimdi Edge Mikro Ağ Geçidi'ne eklemeniz gerekiyor. yapılandırma dosyası.

  1. 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
  2. Eklenti dizinini yapılandırma dosyasına ekleyin. Aşağıdaki örnekte dir özelliği, eklenti kodunun ( inceleyebilirsiniz. Ayrıca, eklenti dizininin adını da belirtmelisiniz. Bu ad, aşağıdaki örnekte response-uppercase geçerlidir.

    edgemicro:
      ...
      plugins:
        dir: /opt/apigee/plugins
        sequence:
          - oauth
          - response-uppercase
    

4. Mikro ağ geçidini başlatma

Son olarak, container'da mikro ağ geçidini başlatmanız gerekir.

  1. Edge Microgateway yapılandırma dosyasını base64 olarak kodlamak için aşağıdaki komutu çalıştırın $HOME/.edgemicro konumunda bulunuyor:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    Burada your_org ve your_env, edgemicro config komutunu çalıştırdı.

    Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  2. Edge Microgateway'i container olarak çalıştırın. Bu komut, çeşitli ortam değişkenlerini ayarlar Edge Microgateway'i başlatmak için container çalışma zamanı tarafından kullanılan anahtar kelimeleri kullanabilirsiniz:

    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
  3. Eklentiyi test etmek için API'nizi çağırın:

    API'nizi çağırarak ve çıktısı aşağıdaki gibidir:

    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!