Plattformautomatisierung und DevOps für AKS

Als cloudnatives Konstrukt erfordert Kubernetes einen cloudnativen Ansatz für Bereitstellung und Betrieb. Azure und Kubernetes sind offene und erweiterbare Plattformen mit umfangreichen und wohlstrukturierten APIs, die die Möglichkeit bieten, die Automatisierung in vollem Umfang zu nutzen. Planen Sie einen DevOps- und in hohem Maße automatisierten Ansatz, indem Sie auf Automatisierung und allgemeine bewährte Methoden für DevOps setzen.

Überlegungen zum Entwurf

Nachfolgend finden Sie einige Überlegungen zum Entwurf der AKS-Plattformautomatisierung und zu DevOps:

  • Berücksichtigen Sie die Einschränkungen des Azure-Dienstes und Ihre CI und CD-Umgebung (Continuous Integration/Continuous Delivery), wenn Sie Ihren Entwicklungs- und Automatisierungsansatz bestimmen. Ein weiteres Beispiel finden Sie in den GitHub-Nutzungseinschränkungen.

  • Wenn Sie den Zugriff auf Entwicklungs-, Test-, F&A- und Produktionsumgebungen sichern und schützen, sollten Sie die Sicherheitsoptionen aus einer CI/CD-Perspektive betrachten. Bereitstellungen erfolgen automatisch. Ordnen Sie daher die Zugriffssteuerung entsprechend zu.

  • Erwägen Sie die Verwendung von Präfixen und Suffixen mit genau definierten Konventionen, um jede bereitgestellte Ressource eindeutig zu identifizieren. Diese Namenskonventionen vermeiden Konflikte bei der parallelen Bereitstellung von Lösungen und verbessern insgesamt die Agilität und den Durchsatz des Teams.

  • Inventarisieren Sie die Workflows zur Unterstützung bei der Entwicklung, Aktualisierung und Bereitstellung Ihrer Lösung im normalen und im DRP-Modus (Notfallwiederherstellungsplan, Disaster Recovery Plan). Erwägen Sie die Zuordnung von Pipelines gemäß dieser Workflows, um die Vertrautheit und Produktivität zu maximieren.

    Einige zu berücksichtigende Beispielszenarien und Pipelines:

    • Bereitstellen, Patchen und Aktualisieren von Clustern
    • Bereitstellen und Aktualisieren von Anwendungen
    • Bereitstellen und Warten von Add-Ons
    • Durchführen von Failovers für die Notfallwiederherstellung
    • Blaugrün-Bereitstellungen
    • Verwalten von Canary-Umgebungen
  • Erwägen Sie die Verwendung eines Dienstnetzes, um Ihren Workloads mehr Sicherheit, Verschlüsselung und Protokollierungsfunktionen hinzuzufügen.

  • Erwägen Sie die Bereitstellung weiterer Ressourcen wie Abonnements, Kennzeichnung und Bezeichnungen, um Ihre DevOps-Erfahrung zu unterstützen, indem Sie Bereitstellungen und zugehörige Artefakte nach- und rückverfolgen.

  • Bedenken Sie die Auswirkungen des Paradigmenwechsels Rinder versus Haustiere. Erwarten Sie, dass Pods und andere Aspekte von Kubernetes kurzlebig sind, und richten Sie Ihre Infrastruktur für Automatisierung und Pipelines entsprechend aus. Verlassen Sie sich nicht darauf, dass IP-Adressen oder andere Ressourcen unveränderlich oder dauerhaft sind.

Entwurfsempfehlungen

Nachfolgend finden Sie einige Empfehlungen zum Entwurf der AKS-Plattformautomatisierung und zu DevOps:

  • Verlassen Sie sich für Folgendes auf Pipelines oder Aktionen:

    • Maximieren von angewandten Praktiken im gesamten Team.
    • Entfernen eines Großteils der Last, das Rad neu erfinden zu müssen.
    • Bereitstellen von Vorhersagbarkeit und Erkenntnissen zur Gesamtqualität und Agilität.
  • Frühzeitiges und häufiges Bereitstellen durch die Verwendung von triggerbasierten und geplanten Pipelines. Triggerbasierte Pipelines stellen Änderungen durch eine ordnungsgemäße Prüfung sicher, während geplante Pipelines das Verhalten in sich ändernden Umgebungen verwalten.

  • Trennen der Bereitstellung der Infrastruktur von der Anwendungsbereitstellung. Die Kerninfrastruktur ändert sich weniger als Anwendungen. Behandeln Sie jeden Bereitstellungstyp als separaten Flow und separate Pipeline.

  • Nutzen Sie bei der Bereitstellung cloudbasierte Optionen. Verwenden Sie Infrastruktur als Code, um die Infrastruktur einschließlich der Steuerungsebene bereitzustellen, und verwenden Sie Helm und das Kubernetes-Operator-Muster, um native Kubernetes-Komponenten bereitzustellen und zu warten.

  • Verwenden Sie GitOps zum Bereitstellen und Warten von Anwendungen. GitOps verwendet das Git-Repository als einzige Informationsquelle. Dadurch werden Konfigurationsabweichungen vermieden und die Produktivität und Zuverlässigkeit bei Rollbacks und zugehörigen Verfahren erhöht.

  • Verwenden Sie verwaltete Podidentitäten und den Azure Key Vault-Anbieter für Secrets Store CSI Driver, um Geheimnisse, Zertifikate und Verbindungszeichenfolgen zu schützen.

  • Streben Sie nach maximaler Parallelität bei der Bereitstellung, indem Sie hartcodierte Konfigurationselemente und Einstellungen vermeiden.

  • Verlassen Sie sich bei der infrastruktur- oder anwendungsbezogenen Bereitstellung auf bekannte Konventionen. Verwenden Sie Zugangscontroller in Kombination mit dem Azure Policy-Add-On für Kubernetes, um Konventionen zwischen den anderen definierten Richtlinien zu überprüfen und durchzusetzen.

  • Nehmen Sie das Verschieben nach links konsequent mit Folgendem an:

    • Sicherheit durch frühzeitiges Hinzufügen von Tools zur Überprüfung auf Sicherheitsrisiken, z. B. Containerscans, zur Pipeline.
    • Richtlinie, durch die Verwendung von Richtlinien als Code und das Erzwingen von Richtlinien in einer cloudnativen Weise durch Zugangscontroller.
  • Behandeln Sie jede Störung, jeden Fehler und jeden Ausfall als Chance zur Automatisierung und Verbesserung der Gesamtqualität der Lösung. Integrieren Sie diesen Ansatz in Ihr „Verschieben nach links“- und SRE-Framework (Site Reliability Engineering).