Kubernetes üzerinde anasistem aracısının kurulması

Desteklenen Sürümler

  • Instana, Kubernetes' in mevcut istikrarlı sürümünü destekler. Kubernetes ' in geçerli kararlı sürümü 1.26ise, Kubernetes algılayıcısı 1.24sürümüne sabitlendi. Kubernetes sürüm uyumluluğu garantisi uyarınca, YönOrtamı'nı; 1.26için Kubernetes sürümleri 1.22 destekler. Ancak, bu aralıktaki en düşük 2 sürüm, yumuşak kullanımdan kaldırma olarak kabul edilir.

Kuruluş yöntemleri

Instana aracısını bir Kubernetes kümesine kurmak için kullanılabilecek birkaç yöntem kullanabilirsiniz. Aracıyı bir anasisteme el ile kurarsanız, yalnızca kapsayıcılar ve süreçler izlenir ve Kubernetes verileri toplanmaz. Aracıyı İşletmen' i kullanarak kurmanız önerilir. Diğer yöntemler, Helm Chart ya da YAML file (DaemonSet) konuşlandırmasıdır.

Doğru kuruluş yönteminin seçilmesi

Instana aracısını bir Kubernetes kümesine konuşlandırmanın önerilen yolu, alternatif olarak İşleç ya da Helm grafiği konuşlandırmasını kullanmaktır. Her iki yöntem de birden çok arka uca raporlama ve daha fazlası gibi tüm kullanılabilir yapılandırma seçeneklerini kullanır. Bu size tam denetim sağlar ve statik YAML dosyasında olmayan bazı seçenekleri bile etkinleştirir. Kullanılabilir tüm seçenekler Helm grafiği için ayrıntılı olarak açıklanmıştır ve bu açıklamalar işletmen CRD 'si için de aynı şekilde geçerlidir.

YAML dosyası kuruluşu hızlı konuşlandırmalar için iyidir; ancak, aracı Kubernetes kümenizde çalıştığında, YönOrtamıaracı 'nın sağladığı tüm yapılandırma seçenekleri yoktur. Instana aracılarınıza daha fazla özelleştirme uygulamanız ve el ile kubectl işlemesine güvenmeniz gerekmezse, YAML kuruluş yöntemini seçin.

Kuruluş yöntemlerinin yürürlükteki sürümleri

İşleç, Helm Grafiği ve YAML dosyasının yeni sürümleri sık sık serbest bırakılır. Düzeltmelere, iyileştirmelere ve yeni özelliklere ilişkin en son güncellemeleri takip etmek için, İşleç, Helm Grafiği ya da YAML dosyasının geçerli sürümünü çalıştırdığınızdan emin olun.

İşleç, Helm Grafik ya da YAML dosyasının geçerli sürümünü bulmak için aşağıdaki konulara bakın:

İşletmen kullanılarak kuruluş

Instana, Instana aracısını kurmak ve yönetmek için bir Kubernetes işleci sağlar.

Instana Agent Özel Kaynak Tanımlaması ve ortam değişkenlerini kullanarak ayarlayabileceğiniz yapılandırma seçenekleri için bkz. İşletmen yapılandırması.

Önkoşullar

Not: YönOrtamıana aracısı CRD ' yi YönOrtamıaracı işlecinin 1.x sürümünden otomatik olarak yükseltmek için aşağıdaki önkoşullar gereklidir:

  • İşletmenin 1.x sürümünden otomatik CRD yükseltmesi, kümede bulunması gereken 3rd taraf cert-manager işlecine bağlıdır. cert-manager işlecini düzgün şekilde kurmak ve yapılandırmak için bkz. cert-manager belgeleri.
  • Öncelikle Instana aracısını sürüm 2.0.9düzeyine yükseltmeniz gerekir; bu sürüm, var olan aracı CR'lerini daha yeni biçime dönüştürmek için bir webhook dönüştürmesi içerir. Bu webhook, 2.0.9sürümünden sonra kaldırılır. Dönüştürme tamamlandıktan sonra YönOrtamıcı aracısını yeniden daha yeni bir sürüme yükseltebilirsiniz.

İşletmeni el ile kurma

  1. İşletmeni aşağıdaki gibi konuşlandırın. En son İşletmen kurulur ve 1.x CRD ' leri büyütülmez:

    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml
    

    Şimdi işleç instana-agentad alanında çalışır durumda olmalı ve instana-agent özel kaynağının oluşturulmasını beklemelidir. instana-agent-operator.yaml ürününün her eski 1.x.x sürümünün instana/instana-agent-operator kapsayıcı görüntüsünün aynı sürümüne başvuruda bulunacağını unutmayın. DockerHub ve Red Hat Registry içindeki Instana Agent İşletmen görüntüsüne ilişkin latest etiketi artık desteklenmez. Instana Agent Operator 'un yeni bir sürümünü almak için, daha önce belirtildiği gibi Operator's GitHub ReYayın sayfasından en son operatör yaml 'ye güncellemeniz gerekir.

  2. Instana kullanıcı arabiriminde oturum açın ve Diğer > Aracılar > Installing Instana Agents > Kubernetesseçeneklerini tıklatın.

  3. Technology (Teknoloji) listesinden Operator(İşletmen) seçeneğini belirleyin. Bu sayfa, aşağıdaki Adım 4 'te özel kaynak yaml dosyasını düzenlemek için gereksinim duyduğunuz temel yapılandırma değerlerini sağlar.

  4. Bu YAML şablonunuizleyerek özel kaynak YAML dosyasını oluşturun.

    1. Şablonu düzenleyin ve en azından aşağıdaki değerleri değiştirin:

      • agent.key , YönOrtamı'nizle birlikte ayarlanmalıdır aracı anahtarı.

      • agent.endpointHost , anasistem aracısı uç noktasıile ayarlanmalıdır.

      • agent.endpointPort , anasistem aracısı uç noktasınınkapısıdır ve genellikle "443" (tırnak içine alınmış) değeridir.

      • cluster.name , instana 'da görüntülenen Kubernetes kümesinin adıyla ayarlanmalı.

      • zone.name , instana 'da görüntülenen Kubernetes kümesinin adıyla ayarlanmalı.

      • agent.env (isteğe bağlı) aracı için yetkili sunucu yapılandırmasını belirleme gibi ortam değişkenlerini belirtmek için kullanılabilir. Daha fazla olası ortam değeri için bkz. aracı yapılandırması. Bir örnek:

        spec:
            agent:
              env:
                INSTANA_AGENT_TAGS: staging
        
      • agent.configuration_yaml , bir configuration.yaml yapılandırma dosyasını belirtmek için kullanılabilir. Aşağıdaki örneğe bakın:

        spec:
            agent:
              configuration_yaml: |
                # Example of configuration yaml template
                # Host
                com.instana.plugin.host:
                  tags:
                    - 'dev'
                    - 'app1'
        

        configuration.yamluyarlama yapmanız gerekirse, belgeleri buradangörüntüleyin.

    2. Statik anasistem aracısını konuşlandırmak istiyorsanız, özel kaynak YAML dosyasını statik aracı görüntüsüyle yapılandırmanız gerekir. Statik anasistem aracısı görüntüsünü listelemek için agent.image.name değerini containers.instana.io/instana/release/agent/staticolarak ayarlayın. Aşağıdaki örneğe bakın:

      spec:
       agent:
         image:
           name: containers.instana.io/instana/release/agent/static
      
    3. Düzenlenen özel kaynağı uygula:

      kubectl apply -f instana-agent.customresource.yaml
      

    İşletmen, özel kaynaktan yapılandırmayı alır ve YönOrtamı aracısını konuşlandırır.

Anasistem aracısının kaldırılması

  1. Özel kaynağı kaldırarak YönOrtamıana anasistem aracısını kaldırın:

    kubectl delete -f instana-agent.customresource.yaml
    
  2. Aşağıdaki komutu çalıştırarak işletmeni kaldırın:

    kubectl delete -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml
    

İşletmen yapılandırması

Özel kaynak değerleri

Instana Agent özel kaynağı, Instana Helm Grafiği ile tam olarak aynı yapılandırmayı destekler. Tüm yapılandırma parametrelerinin ayrıntılı bir listesi için bkz. Helm Grafik yapılandırması.

Aracı uç noktası için TLS şifrelemesini ayarlama

TLS şifrelemesi iki şekilde eklenebilir. Var olan bir güvenlik dizgisi sağlanabilir ya da bir sertifika ve özel anahtar kullanılabilir.

Var olan güvenlik dizgisini kullanma

TLS şifrelemesi için kubernetes.io/tls tipinde var olan bir güvenlik dizgisini kullanabilirsiniz. Ancak agent.tls.secretName özel kaynak yaml dosyasında sağlanmalıdır.

Sertifika ve özel anahtar sağlanması

Diğer tarafta bir sertifika ve özel anahtar kullanılabilir. Sertifika ve özel anahtar base64-encodedolmalıdır.

Bu değişkeni kullanmak için özel kaynak yaml dosyasına aşağıdaki iki parametreyi ekleyin:

  • agent.tls.certificate
  • agent.tls.key

Not: agent.tls.secretName ayarlanırsa, agent.tls.certificate ve agent.tls.key yoksayılır.

Helm Grafiğini Kullanarak Kur

DaemonSetile Helm grafiği, YönOrtamıcı aracısını kümenizdeki tüm zamanlanabilir düğümlere ekler.

  1. Instana 'da oturum açın, More-> Agents-> Installing Instana Agents-> Kubernetesseçeneğini tıklatın.

    Bu sayfada, anasistem aracısı uç noktası ve aracı anahtarınızgerekir.

  2. Technology (Teknoloji) listesinden Helm chart(Helm grafiği) seçeneğini belirleyin.

  3. Küme adını ve (isteğe bağlı olarak) aracı bölgesini girin.

    Küme adı (INSTANA_KUBERNETES_CLUSTER_NAME), bu veri kümesi tarafından izlenen kümenin özelleştirilmiş adıdır.

    Aracı bölgesi (INSTANA_ZONE), altyapı eşleminde görüntülenen bölge gruplamasını uyarlamak için kullanılır.

    Diğer gerekli parametrelerin tümü önceden doldurulmuştur.

  4. Helm 3 ile aşağıdaki komutu çalıştırın. Kuruluşu yapılandırmak için, --set işaretini kullanarak komut satırında değerleri belirtin ya da -f işaretini kullanarak değerlerinizi içeren bir yaml dosyası sağlayın.

    Not: Statik anasistem aracısını konuşlandırmak istiyorsanız, dümen kuruluş komutunda —set agent.image.name=containers.instana.io/instana/release/agent/static işaretini ayarlayın.

    kubectl create namespace instana-agent && \
    helm install instana-agent --namespace instana-agent \
    --repo https://agents.instana.io/helm \
    --set agent.key='<your agent key - as described above>' \
    --set agent.endpointHost='<your host agent endpoint - as described above>' \
    --set cluster.name='<your-cluster-name>' \
    --set zone.name='<your-cluster-name>' \
    instana-agent
    

    Tüm yapılandırma parametrelerinin ayrıntılı bir listesi için YönOrtamı'mıza Helm Chartbakın.

Aracı uç noktası için TLS şifrelemesini ayarlama

TLS şifrelemesi iki şekilde eklenebilir. Var olan bir güvenlik dizgisi sağlanabilir ya da kuruluş sırasında bir sertifika ve özel anahtar kullanılabilir.

Var olan güvenlik dizgisini kullanma

kubernetes.io/tls tipinde var olan bir güvenlik dizgisi kullanılabilir. --set 'agent.tls.secretName=<YOUR_SECRET_NAME>'ile kuruluş sırasında yalnızca secretName sağlanmalıdır. Daha sonra, sağlanan güvenlik dizgisinin dosyaları aracıya dahil edilecek.

Sertifika ve özel anahtar sağlanması

Diğer tarafta, kuruluş sırasında bir sertifika ve özel anahtar eklenebilir. Sertifika ve özel anahtar base64 kodlanmış olmalıdır.

Bu değişkeni kullanmak için aşağıdaki ek değiştirgelerle helm install yürütün:

--set 'agent.tls.certificate=<YOUR_CERTIFICATE_BASE64_ENCODED>'
--set 'agent.tls.key=<YOUR_PRIVATE_KEY_BASE64_ENCODED>'

agent.tls.secretName ayarlanırsa, agent.tls.certificate ve agent.tls.key yoksayılır.

YönOrtamıaracı Hizmeti

Not: Bu bölümde açıklanan işlevler Helm grafiği v1.2.7 ve üstü ile kullanılabilir ve Kubernetes 1.17 ve üstü gerekir.

Helm grafiğinde --set service.create=trueadlı özel bir yapılandırma seçeneği vardır. Bu seçenek, aşağıda belirtilenleri kümeye gösteren bir Kubernetes Service oluşturur:

Anasistem aracısının kaldırılması

Helm Grafiği kullanılarak kurulan YönOrtamıana anasistem aracısını kaldırmak için aşağıdaki komutu çalıştırın:

helm uninstall instana-agent

Daha sonra, anasistem aracısıyla ilgili tüm kaynaklar kaldırılır.

DaemonSet olarak kur

Instana aracısını Kubernetes kümenizde DaemonSet olarak kurmak ve yapılandırmak için, instana-agent.yaml dosyasını DaemonSet öğesinin yaratıldığı instana-agent ad alanını yaratacak şekilde özelleştirin. Bu, aracıları hızlı tanımlama için etiketlemenizi ya da ad alanını silerek bunların tümünü durdurmanızı sağlar.

  1. Instana 'da oturum açın, More-> Agents-> Installing Instana Agents-> Kubernetesseçeneğini tıklatın.

  2. Technology (Teknoloji) listesinden DaemonSet(DaemonSet) seçeneğini belirleyin.

  3. Küme adını ve (isteğe bağlı olarak) aracı bölgesinigirin.

    Küme adı (INSTANA_KUBERNETES_CLUSTER_NAME), bu veri kümesi tarafından izlenen kümenin özelleştirilmiş adıdır.

    Aracı bölgesi (INSTANA_ZONE), altyapı eşleminde görüntülenen bölge gruplamasını uyarlamak için kullanılır. Kümenin varsayılan adını da belirler.

    Diğer gerekli parametrelerin tümü önceden doldurulmuştur.

  4. Kopyala ' yı tıklatın ve YAML dosyasını kaydedin.

  5. Aşağıdaki sarkan tutturucuları gerçek değerlerle değiştirerek YAML dosyasını düzenleyin:

    • *agentKey: Oluşturulan verilerin gönderilmesi gereken kümeye ilişkin base64 kodlanmış YönOrtamıAna anahtarı

      echo YOUR_INSTANA_AGENT_KEY | base64
      
    • *endpointHost: Kuruluşla ilişkili IP adresi ya da anasistem adı.

    • *endpointPort: Kuruluşla ilişkili ağ kapısı.

    • *clusterName: YönOrtamımda kümenize atanacak ad.

    • *zoneName: Kümenizin düğümleriyle ilişkilendirilecek aracı bölgesi .

  6. Instana 'yı Kubernetes Cluster ürününüze kurmak için şu komutu çalıştırın:

    kubectl apply -f instana-agent.yaml
    

    Not: instana-agent.yaml ürününde yapacağınız ek düzenlemeler için DaemonSet yeniden oluşturulmalı. Değişiklikleri uygulamak için aşağıdaki komutları çalıştırın:

    kubectl delete -f instana-agent.yaml
    kubectl apply -f instana-agent.yaml
    

RBAC

RBAC etkinleştirilmiş olarak 1.8 sürümünden önceki Kubernetes sürümleri için devreye almak üzere, RBAC api sürümü için rbac.authorization.k8s.io/v1 değerini rbac.authorization.k8s.io/v1beta1 ile değiştirin.

Kullanıcıınıza yetki rolleri yaratma yeteneği vermek için, örneğin GKE ' de şu komutu çalıştırın:

kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole cluster-admin --user $(gcloud config get-value account)

RBAC etkinleştirilmediyse, ClusterRole ve ClusterRoleBinding dosyasını instana-agent.yaml dosyasından kaldırmanız gerekir.

PodSecurityİlkesi

Bir PodSecurityPolicy ' ı YönOrtamıaracı için etkinleştirmek üzere:

  1. Helm grafiğimizdetanımlandığı şekilde bir PodSecurityPolicy kaynağı oluşturun.
  2. Bu ilkeyi instana-agent ClusterRoleiçinde yetkilendir . RBAC ' nin yukarıda belirtilen instana-agent.yaml dosyasında tanımlandığı şekilde oluşturulan ClusterRole ve ClusterRoleBinding kaynaklarıyla etkinleştirilmesi gerektiğini unutmayın.
  3. Kümenizde PodSecurityPolicy kabul denetleyicisini etkinleştirin. Var olan kümeler için, kabul denetleyicisini etkinleştirmeden önce ilkelerin eklenmesi ve yetkilendirilmesi önerilir.

Pod Güvenliği Kabul

Instana anasistem aracısı için privileged Pod Güvenlik Standardı gerekir. Pod Güvenlik Standardını yerleşik bir Pod Güvenlik Kabul denetleyicisiyle uygulamak için aşağıdaki komutu çalıştırın:

kubectl label --overwrite ns instana-agent pod-security.kubernetes.io/enforce=privileged

Anasistem aracısının durumunun denetlenmesi

Anasistem aracısını kurduktan sonra, instana kullanıcı arabiriminde ya da anasistemde anasistem aracısının durumunu denetleyebilirsiniz. Daha fazla bilgi için Anasistem aracısının durumunun denetlenmesibaşlıklı konuya bakın.

İzlenen uygulamalar için ağ erişimi yapılandırılması

Bazı uygulama tiplerinin önce aracıya ulaşması gerekir. Şu anda

  • Node.js
  • Git
  • Ruby
  • Python
  • .NET Çekirdeği

Bu uygulamaların, aracının hangi IP ' de dinlediğini bilmeleri gerekir. Aracı anasistem IP 'sini otomatik olarak dinleyeceği için, bunu bir ortam değişkeninde uygulama bölmesine geçirmek için aşağıdaki Aşağı doğru API parçacığını kullanın:

spec:
  containers:
    env:
      - name: INSTANA_AGENT_HOST
        valueFrom:
          fieldRef:
            fieldPath: status.hostIP

Ana düğümleri izle

Varsayılan olarak, devreye alma çoğu ana düğümde ayarlanan varsayılan taint node-role.kubernetes.io/master:NoSchedule ' e uyduğu için aracı Kubernetes ana düğümlerinde zamanlanmaz. Bunların üzerine yazmak için aracı veri kümesine aşağıdaki toleransı ekleyin:

kind: DaemonSet
metadata:
  name: instana-agent
  namespace: instana-agent
spec:
  template:
  ...
    spec:
      tolerations:
        - key: "node-role.kubernetes.io/master"
          effect: "NoSchedule"
          operator: "Exists"
    ...

Daha doğrudan denetim için aracıyı ana düğümlere ayrı olarak kurun. Ortamınıza ilişkin öneriler için lütfen destek bölümüyle iletişim kurun.

İzleyici Kubernetes NGINX Giriş

Kubernetes NGINX Ingresinin ve NGINX ölçümlerinin yakalanması için aracımızın nasıl yapılandırılacağı hakkında yönergeler için İzleme NGINX sayfasına bakın. Kubernetes NGINX Ingress, OpenTracing projesi aracılığıyla da izlenebilir, bunun nasıl ayarlanacağına ilişkin yönergeler için Distributed Tracing for NGINX Ingress başlıklı konuya bakın.

Sırları

Kubernetes , hassas bilgilerin depolanması ve yönetilmesi için yerleşik desteğe sahiptir. Ancak, bu yerleşik yeteneği kullanmazsanız, ancak yine de Kubernetes kaynaklarındaki hassas verileri düzenleme yeteneğine gereksinim duyarsanız, aracı güvenlik dizgileri yapılandırması bunu destekleyecek şekilde genişletilir.

Seçilen Kubernetes kaynakları (özellikle ek açıklamalar ve kapsayıcı ortam değişkenleri) için hassas veri düzeltmesini etkinleştirmek üzere, INSTANA_KUBERNETES_REDACT_SECRETS ortam değişkenini aşağıdaki aracı yaml parçacıkında gösterildiği gibi true olarak ayarlayın:

spec:
  containers:
      env:
        - name: INSTANA_KUBERNETES_REDACT_SECRETS
          value: "true"

Daha sonra, aracıyı aracı güvenlik sırları yapılandırmasındaaçıklandığı gibi, eşleşmesi istenen güvenlik sırları listesiyle yapılandırın.

Bu yeteneğin etkinleştirilmesi Kubernetes algılayıcısında performansın düşmesine neden olabilir.

Birden çok arka uca raporla

Kubernetes aracısından birden çok arka uca raporlamayı etkinleştirmek için bkz. docker aracısı yapılandırması.

YönOrtamıaracı güvenliği ile ilgili önemli noktalar

Instana aracısının, konuşlandırıldığı düğümdeki köprü ağlarındaki uygulama bölmelerine bağlanması ve kendi bağlantı noktalarını listemesi/açması gerektiğinden, altyapı ilişkilendirmesi için anasistem ağ erişimi ve anasistem düzeyinde işlem tanıtıcısı araması gerekir. Bu, Linux & Unix üzerinde verilen izinler anasistem ortamlarına eşdeğerdir ve DaemonSet konuşlandırmasında aşağıdaki işaretlerin ayarlanmasını gerektirir:

  • privileged: true , üst katman olmadan /proc 'a tam erişim, JVM eki için UID/GID' yi değiştirme ve uygulama ad alanlarına erişim sağlar.
  • hostPID: true , altyapı ilişkilendirmesi için gerekli olan /prociçinde anasistem düzeyinde PID ' ler sağlar.
  • hostNetwork: true , anasistem düzeyi & köprü ağ arabirimlerine erişim sağlar.

Ayrıca, OpenShift' e konuşlandırma sırasında, sözü edilen izinlere izin vermek için Güvenlik Bağlamı Kısıtlaması (SCC) privileged olarak ayarlanır.

Kubernetes algılayıcısı, Kubernetes kümesinde çalışan tüm kaynakları ve uygulamaları saptamak ve doğru izlendiğinden emin olmak için aşağıdaki küme rolü kurallarını gerektirir:

rules:
  - nonResourceURLs:
    - "/version"
    - "/healthz"
    verbs: ["get"]- apiGroups: ["batch"]
    resources:
      - "jobs"
      - "cronjobs"
    verbs: ["get", "list", "watch"]
  - apiGroups: ["extensions"]
    resources:
      - "deployments"
      - "replicasets"
      - "ingresses"
    verbs: ["get", "list", "watch"]
  - apiGroups: ["apps"]
    resources:
      - "deployments"
      - "replicasets"
      - "daemonsets"
      - "statefulsets"
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - "namespaces"
      - "events"
      - "services"
      - "endpoints"
      - "nodes"
      - "pods"
      - "replicationcontrollers"
      - "componentstatuses"
      - "resourcequotas"
      - "persistentvolumes"
      - "persistentvolumeclaims"
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - "endpoints"
    verbs: ["create", "update", "patch"]
  - apiGroups: ["networking.k8s.io"]
    resources:
      - "ingresses"
    verbs: ["get", "list", "watch"]

Örnek YAML dosyası

Tipik bir instana-agent.yaml dosyası, YönOrtamıana genel GitHub havuzu biçiminde karşıdan yüklenebilir. Bu grafik, tipik varsayılan değerlerle Helm grafiğinde görüntülenir. Tek tek özellikler, sonraki adımda olduğu gibi sarkan tutturucular olarak tanımlanır.

Bu dosyayı karşıdan yükleyin ve en son changelogdosyasını görüntüleyin.