fleet-argocd-plugin/fleet-sync-install.yaml (107 lines of code) (raw):
# Copyright 2024 Google LLC
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# https://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: v1
kind: ServiceAccount
metadata:
name: argocd-fleet-sync
namespace: argocd
annotations:
iam.gke.io/gcp-service-account: $FLEET_SA
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: argocd
name: argocd-fleet-sync-secrets-role
rules:
- apiGroups: [""] # Core API group
resources: ["secrets"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: argocd
name: argocd-fleet-sync-secrets-rolebinding
subjects:
- kind: ServiceAccount
name: argocd-fleet-sync
namespace: argocd
roleRef:
kind: Role
name: argocd-fleet-sync-secrets-role
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-fleet-sync
namespace: argocd
data:
token: '$argocd-fleet-sync:token'
baseUrl: "http://argocd-fleet-sync.argocd.svc.cluster.local:8888"
FLEET_PROJECT_NUMBER: "$FLEET_PROJECT_NUMBER"
PORT: ":4356"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: argocd-fleet-sync
namespace: argocd
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: argocd-fleet-sync
template:
metadata:
labels:
app.kubernetes.io/name: argocd-fleet-sync
spec:
serviceAccountName: argocd-fleet-sync
nodeSelector:
iam.gke.io/gke-metadata-server-enabled: "true"
containers:
- name: argocd-fleet-sync
# eg. us-central1-docker.pkg.dev/my-test-proj/argocd-fleet-sync/plugin:v1.0
image: "$PATH_TO_IMAGE"
imagePullPolicy: Always
envFrom:
- configMapRef:
name: argocd-fleet-sync
ports:
- containerPort: 4356
name: http
resources:
requests:
memory: "1Gi"
cpu: "500m"
ephemeral-storage: "1Gi"
limits:
memory: "1Gi"
cpu: "500m"
ephemeral-storage: "1Gi"
volumes:
- name: token
secret:
secretName: argocd-fleet-sync
---
apiVersion: v1
kind: Service
metadata:
name: argocd-fleet-sync
namespace: argocd
spec:
selector:
app.kubernetes.io/name: argocd-fleet-sync
ports:
- name: http
port: 8888
targetPort: 4356
---
# This secret lives with the plugin, and is mounted into the plugin container. The ApplicationSet controller must be
# configured with the exact same secret.
apiVersion: v1
kind: Secret
metadata:
name: argocd-fleet-sync
namespace: argocd
labels:
app.kubernetes.io/part-of: argocd
stringData:
token: 'supersecret'