fleet-charts/argocd-mco-plugin/templates/plugin.install.yaml (100 lines of code) (raw):
# Copyright 2025 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
#
# http://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-mco-placement
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: argocd-mco-placement
rules:
- apiGroups:
- "orchestra.multicluster.x-k8s.io"
resources:
- "multikubernetesclusterplacements"
verbs:
- "get"
- "list"
- "watch"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: argocd-mco-placement
subjects:
- kind: ServiceAccount
name: argocd-mco-placement
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: argocd-mco-placement
apiGroup: rbac.authorization.k8s.io
---
# https://argo-cd.readthedocs.io/en/latest/operator-manual/applicationset/Generators-Plugin/#add-a-configmap-to-configure-the-access-of-the-plugin
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-mco-placement
data:
token: '$argocd-mco-placement:token'
baseUrl: "http://argocd-mco-placement.argocd.svc.cluster.local:8888"
PORT: "4356"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: argocd-mco-placement
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: argocd-mco-placement
template:
metadata:
labels:
app.kubernetes.io/name: argocd-mco-placement
spec:
serviceAccountName: argocd-mco-placement
containers:
- name: argocd-mco-placement
image: "{{ .Values.image }}"
imagePullPolicy: Always
envFrom:
- configMapRef:
name: argocd-mco-placement
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-mco-placement
---
apiVersion: v1
kind: Service
metadata:
name: argocd-mco-placement
spec:
selector:
app.kubernetes.io/name: argocd-mco-placement
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.
# https://argo-cd.readthedocs.io/en/latest/operator-manual/applicationset/Generators-Plugin/#store-credentials
apiVersion: v1
kind: Secret
metadata:
name: argocd-mco-placement
labels:
app.kubernetes.io/part-of: argocd
stringData:
token: 'supersecret'