Files
backstage/plugins/gitops-profiles

gitops-profiles

Welcome to the gitops-profiles plugin! This plugin is for creating GitOps-managed Kubernetes clusters. Currently, it supports provisioning EKS clusters on GitHub via GitHub Actions.

This plugin was created through the Backstage CLI

Plugin Development

Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running yarn start in the root directory, and then navigating to /gitops-clusters.

You can also serve the plugin in isolation by running yarn start in the plugin directory. This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can be found inside the /dev directory.

Use GitOps-API backend with Backstage

The backend of this plugin is written in Goland and its source code is available here as a separate GitHub repository. The binary of this plugin is available as a ready-to-use Docker image, https://hub.docker.com/chanwit/gitops-api. To start using GitOps with Backstage, you have to start the backend using the following command:

$ docker run -d --init -p 3008:8080 chanwit/gitops-api

Please note that this plugin requires the backend to run on port 3008.

Deploy on Kubernetes

This section shows am example to deploy Backstage with this gitops profiles plugin and its GitOps-API backend on Kubernetes. To try this example, simply copy-n-paste the following yaml to a file named deployment.yaml and then run kubectl apply -f deployment.yaml.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: backstage
  name: backstage
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backstage
  template:
    metadata:
      labels:
        app: backstage
    spec:
      containers:
        - image: spotify/backstage:latest
          imagePullPolicy: Always
          name: backstage
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: gitops-api
  name: gitops-api
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gitops-api
  template:
    metadata:
      labels:
        app: gitops-api
    spec:
      containers:
        - image: chanwit/gitops-api:latest
          imagePullPolicy: Always
          name: gitops-api
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: backstage
  name: backstage
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: backstage
  type: NodePort
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: gitops-api
  name: gitops-api
  namespace: default
spec:
  ports:
    - port: 3008
      protocol: TCP
      targetPort: 8080
  selector:
    app: gitops-api
  type: ClusterIP