Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:Giriş ağ geçidinde TLS aktarımını etkinleştirme

Son Güncelleme:Oct 07, 2026

Giriş ağ geçidi ile sidecar proxy arasındaki tüm veriler Mutual Transport Layer Security (mTLS) tüneli üzerinden iletilir. Uygulamaya sidecar proxy'ler enjekte edilmişse uçtan uca şifrelemeyi sağlamak için giriş ağ geçidinde TLS sonlandırmasını yapılandırmanızı öneririz. Uygulamaya sidecar proxy'ler enjekte edilmemişse veya başka özel durumlar söz konusuysa giriş ağ geçidi TLS aktarımını destekler. Bu konuda, bir kümedeki HTTPS hizmetlerine güvenli erişimi sağlamak amacıyla giriş ağ geçidinde TLS aktarımının nasıl etkinleştirileceği açıklanmaktadır.

Ön koşullar

1. Adım: Sunucu sertifikası ve özel anahtar hazırlama

sample.aliyun.com alan adı için kullanılabilir bir sunucu sertifikanız ve özel anahtarınız varsa özel anahtarı sample.aliyun.com.key ve sunucu sertifikasını sample.aliyun.com.crt olarak yeniden adlandırın. Alternatif olarak sample.aliyun.com için sunucu sertifikası ve özel anahtar oluşturmak üzere aşağıdaki openssl komutlarını çalıştırın.

  1. Kök sertifika ve özel anahtar oluşturmak için aşağıdaki komutu çalıştırın:

    openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=mynginx Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt 
  2. sample.aliyun.com sunucusu için sunucu sertifikası ve özel anahtar oluşturmak üzere aşağıdaki komutları çalıştırın:

    openssl req -out sample.aliyun.com.csr -newkey rsa:2048 -nodes -keyout sample.aliyun.com.key -subj "/CN=sample.aliyun.com/O=mynginx sample organization"
    openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in sample.aliyun.com.csr -out sample.aliyun.com.crt

2. Adım: Dahili hizmeti tanımlama

Bu örnekteki dahili hizmet bir NGINX sunucusudur. Önce NGINX sunucusu için bir yapılandırma dosyası oluşturun. aliyun.com alan adı için kök yolun Welcome to aliyun.com without TLS Termination! mesajını ve 200 durum kodunu döndürmesini yapılandırın. Aşağıda mynginx.conf dosyasının içeriği gösterilmektedir.

events {
}
http {
  log_format main '$remote_addr - $remote_user [$time_local]  $status '
  '"$request" $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log /var/log/nginx/access.log main;
  error_log  /var/log/nginx/error.log;
  server {
    listen 443 ssl;
    location / {
        return 200 'Welcome to aliyun.com without TLS Termination!';
        add_header Content-Type text/plain;
    }
    server_name www.aliyun.com;
    ssl_certificate /etc/nginx-server-certs/tls.crt;
    ssl_certificate_key /etc/nginx-server-certs/tls.key;
  }
}
  1. kubeconfig dosyasındaki bilgilere göre kubectl kullanarak giriş ağ geçidi pod'unun ait olduğu kümeye bağlanın. Ardından NGINX sunucusunun yapılandırmasını depolamak üzere bir ConfigMap oluşturmak için aşağıdaki komutu çalıştırın:

    kubectl create configmap mynginx-configmap --from-file=nginx.conf=./mynginx.conf​
  2. kubeconfig dosyasındaki bilgilere göre kubectl kullanarak giriş ağ geçidi pod'unun ait olduğu kümeye bağlanın. Ardından varsayılan ad alanında sunucu sertifikasını ve özel anahtarı içeren bir secret oluşturmak için aşağıdaki komutu çalıştırın:

    kubectl create secret tls nginx-server-certs --key sample.aliyun.com.key --cert sample.aliyun.com.crt​
  3. Varsayılan ad alanı için otomatik sidecar proxy enjeksiyonunu etkinleştirin. Prosedür hakkında daha fazla bilgi için bkz. Otomatik sidecar proxy enjeksiyonunu etkinleştirme.

  4. Aşağıdaki içeriği içeren bir mynginxapp.yaml dosyası oluşturun. Ardından aliyun.com alan adı için dahili bir hizmet oluşturmak üzere kubectl apply -f mynginxapp.yaml komutunu çalıştırın.

    Expand to view the mynginxapp.yaml file

    apiVersion: v1
    kind: Service
    metadata:
      name: mynginxapp
      labels:
        app: mynginxapp
    spec:
      ports:
      - port: 443
        protocol: TCP
      selector:
        app: mynginxapp
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mynginxapp
    spec:
      selector:
        matchLabels:
          app: mynginxapp
      replicas: 1
      template:
        metadata:
          labels:
            app: mynginxapp
        spec:
          containers:
          - name: nginx
            image: nginx:1.15
            ports:
            - containerPort: 443
            volumeMounts:
            - name: nginx-config
              mountPath: /etc/nginx
              readOnly: true
            - name: nginx-server-certs
              mountPath: /etc/nginx-server-certs
              readOnly: true  
          volumes:
          - name: nginx-config
            configMap:
              name: mynginx-configmap
          - name: nginx-server-certs
            secret:
              secretName: nginx-server-certs    
  5. NGINX sunucusunun dağıtılıp dağıtılmadığını kontrol etmek için sidecar proxy'den NGINX sunucusuna istek göndermek üzere aşağıdaki komutu çalıştırın:

    kubectl exec -it $(kubectl get pod  -l app=mynginxapp -o jsonpath={.items..metadata.name}) -c istio-proxy -- curl -v -k --resolve sample.aliyun.com:443:127.0.0.1 https://sample.aliyun.com

3. Adım: Ağ geçidi oluşturma

  1. ASM konsolunda oturum açın.

  2. Sol gezinme bölmesinde Service Mesh > Mesh Management öğelerini seçin.

  3. Mesh Management sayfasında yapılandırmak istediğiniz ASM örneğini bulun. ASM örneğinin adına tıklayın veya Actions sütunundaki Manage seçeneğine tıklayın.

  4. ASM örneğinin ayrıntılar sayfasında sol gezinme bölmesinden ASM Gateways > Gateway seçeneklerini belirleyin. Açılan sayfada Create from YAML seçeneğine tıklayın.

  5. Ağ Geçidini aşağıdaki gibi yapılandırın ve ardından Create seçeneğine tıklayın.

    1. Bir ad alanı seçin. Bu örnekte default ad alanı kullanılmaktadır.

    2. Kod düzenleyicide aşağıdaki YAML kodunu kullanarak bir Istio ağ geçidi tanımlayın:

      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: istio-mynginx-customingressgateway
      spec:
        selector:
          istio: ingressgateway
        servers:
        - hosts:
          - 'sample.aliyun.com'
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            mode: PASSTHROUGH

    Gateway sayfasında oluşturulan Istio ağ geçidini görüntüleyebilirsiniz.

4. Adım: Sanal hizmet oluşturma

  1. ASM konsolunda oturum açın.

  2. Sol gezinme bölmesinde Service Mesh > Mesh Management öğelerini seçin.

  3. Mesh Management sayfasında yapılandırmak istediğiniz ASM örneğini bulun. ASM örneğinin adına tıklayın veya Actions sütunundaki Manage seçeneğine tıklayın.

  4. ASM örneğinin ayrıntılar sayfasında sol gezinme bölmesinden Traffic Management Center > VirtualService seçeneklerini belirleyin. Açılan sayfada Create from YAML seçeneğine tıklayın.

  5. Sanal Hizmeti aşağıdaki gibi yapılandırın ve ardından Create seçeneğine tıklayın.

    1. Bir ad alanı seçin. Bu örnekte default ad alanı kullanılmaktadır.

    2. Kod düzenleyicide aşağıdaki YAML kodunu kullanarak bir sanal hizmet tanımlayın:

      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: istio-mynginx-customvirtualservice
      spec:
        hosts:
        - "sample.aliyun.com"
        gateways:
        - istio-mynginx-customingressgateway
        tls:
        - match:
          - port: 443
            sniHosts:
            - sample.aliyun.com
          route:
          - destination:
              host: mynginxapp.default.svc.cluster.local
              port:
                number: 443

    VirtualService sayfasında oluşturulan sanal hizmeti görüntüleyebilirsiniz.

Sonuçları görüntüleme

  1. Giriş ağ geçidinin IP adresini almak için aşağıdaki yöntemlerden birini kullanın:

    1. Yöntem 1: ASM konsolunu kullanarak. Daha fazla bilgi için Istio kaynaklarını kullanarak trafiği bir hizmetin farklı sürümlerine yönlendirme konusundaki 3. Adımın 1. Alt Adımı bölümüne bakın.

    2. Yöntem 2: Bir kubectl komutu çalıştırarak.

      kubeconfig dosyasındaki bilgilere göre kubectl kullanarak giriş ağ geçidi pod'unun ait olduğu kümeye bağlanın. Ardından giriş ağ geçidinin IP adresini almak için aşağıdaki komutu çalıştırın:

      kubectl get svc -n istio-system -l istio=ingressgateway
  2. aliyun.com alan adına HTTPS üzerinden erişmek için aşağıdaki komutu çalıştırın:

    curl -v --cacert aliyun.root.crt --resolve sample.aliyun.com:443:xx.xx.xx.xx   https://sample.aliyun.com

    Beklenen çıktı:

    Welcome to aliyun.com without TLS Termination!%