mirror of
https://github.com/submariner-io/submariner-charts.git
synced 2026-09-22 12:00:35 +00:00
Add an operator Helm chart
The submariner-operator Helm chart deploys Submariner using the Submariner operator: it deploys the CRDs, roles, and SAs required to run the operator and Submariner, then pushes a Submariner CR to instruct the operator to deploy Submariner. This patch also adds a Makefile to validate the deployments; run make deploy to test the Helm charts (this will bring up two clusters, install the broker on one of them and the operator on both, and end with a connectivity test). Fixes: #17 Signed-off-by: Stephen Kitt <skitt@redhat.com>
This commit is contained in:
committed by
Miguel Angel Ajo Pelayo
parent
c128fb42c5
commit
96ff45c2f8
@@ -0,0 +1,7 @@
|
||||
Submariner is now installed.
|
||||
|
||||
{{- if .Values.engine.nodeSelectorEnabled }}
|
||||
If you haven't done so yet, please label a node as `submariner.io/gateway=true` to elect it for running Submariner.
|
||||
{{- end }}
|
||||
|
||||
By default, Submariner runs with 1 replica. If you have more than one Gateway host, you can scale Submariner to N replicas, and the other Submariner pods will simply join the leader election pool.
|
||||
@@ -0,0 +1,94 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "submariner.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "submariner.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "submariner.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the submariner-operator service account to use
|
||||
*/}}
|
||||
{{- define "submariner.operatorServiceAccountName" -}}
|
||||
{{- if .Values.serviceAccounts.operator.create -}}
|
||||
{{ default (printf "%s" (include "submariner.fullname" .)) .Values.serviceAccounts.operator.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.operator.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the submariner-engine service account to use
|
||||
*/}}
|
||||
{{- define "submariner.engineServiceAccountName" -}}
|
||||
{{- if .Values.serviceAccounts.engine.create -}}
|
||||
{{ default (printf "%s-engine" (include "submariner.fullname" .)) .Values.serviceAccounts.engine.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.engine.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the submariner-route-agent service account to use
|
||||
*/}}
|
||||
{{- define "submariner.routeAgentServiceAccountName" -}}
|
||||
{{- if .Values.serviceAccounts.routeAgent.create -}}
|
||||
{{ default (printf "%s-routeagent" (include "submariner.fullname" .)) .Values.serviceAccounts.routeAgent.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.routeAgent.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the submariner-globalnet service account to use
|
||||
*/}}
|
||||
{{- define "submariner.globalnetServiceAccountName" -}}
|
||||
{{- if .Values.serviceAccounts.globalnet.create -}}
|
||||
{{ default (printf "%s:globalnet" (include "submariner.fullname" .)) .Values.serviceAccounts.globalnet.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.globalnet.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the submariner-lighthouse service account to use
|
||||
*/}}
|
||||
{{- define "submariner.lighthouseServiceAccountName" -}}
|
||||
{{- if .Values.submariner.serviceDiscovery -}}
|
||||
{{ default (printf "%s-lighthouse" (include "submariner.fullname" .)) .Values.serviceAccounts.lighthouse.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccounts.lighthouse.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the submariner-lighthouse-coredns service name to use
|
||||
*/}}
|
||||
{{- define "submariner.lighthouseDnsName" -}}
|
||||
{{- default (printf "%s-lighthouse-coredns" (include "submariner.fullname" .)) .Values.lighthouseCoredns.name }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,723 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1beta1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: submariners.submariner.io
|
||||
annotations:
|
||||
"helm.sh/hook": crd-install
|
||||
controller-gen.kubebuilder.io/version: v0.3.0
|
||||
spec:
|
||||
group: submariner.io
|
||||
names:
|
||||
kind: Submariner
|
||||
listKind: SubmarinerList
|
||||
plural: submariners
|
||||
singular: submariner
|
||||
scope: Namespaced
|
||||
subresources:
|
||||
status: {}
|
||||
validation:
|
||||
openAPIV3Schema:
|
||||
description: Submariner is the Schema for the submariners API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation
|
||||
of an object. Servers should convert recognized schemas to the latest
|
||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this
|
||||
object represents. Servers may infer this from the endpoint the client
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: SubmarinerSpec defines the desired state of Submariner
|
||||
properties:
|
||||
broker:
|
||||
type: string
|
||||
brokerK8sApiServer:
|
||||
type: string
|
||||
brokerK8sApiServerToken:
|
||||
type: string
|
||||
brokerK8sCA:
|
||||
type: string
|
||||
brokerK8sRemoteNamespace:
|
||||
type: string
|
||||
cableDriver:
|
||||
type: string
|
||||
ceIPSecDebug:
|
||||
type: boolean
|
||||
ceIPSecIKEPort:
|
||||
type: integer
|
||||
ceIPSecNATTPort:
|
||||
type: integer
|
||||
ceIPSecPSK:
|
||||
type: string
|
||||
clusterCIDR:
|
||||
type: string
|
||||
clusterID:
|
||||
type: string
|
||||
colorCodes:
|
||||
type: string
|
||||
customDomains:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: set
|
||||
debug:
|
||||
type: boolean
|
||||
globalCIDR:
|
||||
type: string
|
||||
namespace:
|
||||
type: string
|
||||
natEnabled:
|
||||
type: boolean
|
||||
repository:
|
||||
type: string
|
||||
serviceCIDR:
|
||||
type: string
|
||||
serviceDiscoveryEnabled:
|
||||
type: boolean
|
||||
version:
|
||||
type: string
|
||||
required:
|
||||
- broker
|
||||
- brokerK8sApiServer
|
||||
- brokerK8sApiServerToken
|
||||
- brokerK8sCA
|
||||
- brokerK8sRemoteNamespace
|
||||
- ceIPSecDebug
|
||||
- ceIPSecPSK
|
||||
- clusterCIDR
|
||||
- clusterID
|
||||
- debug
|
||||
- namespace
|
||||
- natEnabled
|
||||
- serviceCIDR
|
||||
type: object
|
||||
status:
|
||||
description: SubmarinerStatus defines the observed state of Submariner
|
||||
properties:
|
||||
clusterCIDR:
|
||||
type: string
|
||||
clusterID:
|
||||
type: string
|
||||
colorCodes:
|
||||
type: string
|
||||
engineDaemonSetStatus:
|
||||
properties:
|
||||
lastResourceVersion:
|
||||
type: string
|
||||
mismatchedContainerImages:
|
||||
type: boolean
|
||||
nonReadyContainerStates:
|
||||
items:
|
||||
description: ContainerState holds a possible state of container.
|
||||
Only one of its members may be specified. If none of them is
|
||||
specified, the default one is ContainerStateWaiting.
|
||||
properties:
|
||||
running:
|
||||
description: Details about a running container
|
||||
properties:
|
||||
startedAt:
|
||||
description: Time at which the container was last (re-)started
|
||||
format: date-time
|
||||
type: string
|
||||
type: object
|
||||
terminated:
|
||||
description: Details about a terminated container
|
||||
properties:
|
||||
containerID:
|
||||
description: Container's ID in the format 'docker://<container_id>'
|
||||
type: string
|
||||
exitCode:
|
||||
description: Exit status from the last termination of
|
||||
the container
|
||||
format: int32
|
||||
type: integer
|
||||
finishedAt:
|
||||
description: Time at which the container last terminated
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: Message regarding the last termination of
|
||||
the container
|
||||
type: string
|
||||
reason:
|
||||
description: (brief) reason from the last termination
|
||||
of the container
|
||||
type: string
|
||||
signal:
|
||||
description: Signal from the last termination of the container
|
||||
format: int32
|
||||
type: integer
|
||||
startedAt:
|
||||
description: Time at which previous execution of the container
|
||||
started
|
||||
format: date-time
|
||||
type: string
|
||||
required:
|
||||
- exitCode
|
||||
type: object
|
||||
waiting:
|
||||
description: Details about a waiting container
|
||||
properties:
|
||||
message:
|
||||
description: Message regarding why the container is not
|
||||
yet running.
|
||||
type: string
|
||||
reason:
|
||||
description: (brief) reason the container is not yet running.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
status:
|
||||
description: DaemonSetStatus represents the current status of a
|
||||
daemon set.
|
||||
properties:
|
||||
collisionCount:
|
||||
description: Count of hash collisions for the DaemonSet. The
|
||||
DaemonSet controller uses this field as a collision avoidance
|
||||
mechanism when it needs to create the name for the newest
|
||||
ControllerRevision.
|
||||
format: int32
|
||||
type: integer
|
||||
conditions:
|
||||
description: Represents the latest available observations of
|
||||
a DaemonSet's current state.
|
||||
items:
|
||||
description: DaemonSetCondition describes the state of a DaemonSet
|
||||
at a certain point.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: Last time the condition transitioned from
|
||||
one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A human readable message indicating details
|
||||
about the transition.
|
||||
type: string
|
||||
reason:
|
||||
description: The reason for the condition's last transition.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of True, False,
|
||||
Unknown.
|
||||
type: string
|
||||
type:
|
||||
description: Type of DaemonSet condition.
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
currentNumberScheduled:
|
||||
description: 'The number of nodes that are running at least
|
||||
1 daemon pod and are supposed to run the daemon pod. More
|
||||
info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
desiredNumberScheduled:
|
||||
description: 'The total number of nodes that should be running
|
||||
the daemon pod (including nodes correctly running the daemon
|
||||
pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
numberAvailable:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have one or more of the daemon pod running
|
||||
and available (ready for at least spec.minReadySeconds)
|
||||
format: int32
|
||||
type: integer
|
||||
numberMisscheduled:
|
||||
description: 'The number of nodes that are running the daemon
|
||||
pod, but are not supposed to run the daemon pod. More info:
|
||||
https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
numberReady:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have one or more of the daemon pod running
|
||||
and ready.
|
||||
format: int32
|
||||
type: integer
|
||||
numberUnavailable:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have none of the daemon pod running and available
|
||||
(ready for at least spec.minReadySeconds)
|
||||
format: int32
|
||||
type: integer
|
||||
observedGeneration:
|
||||
description: The most recent generation observed by the daemon
|
||||
set controller.
|
||||
format: int64
|
||||
type: integer
|
||||
updatedNumberScheduled:
|
||||
description: The total number of nodes that are running updated
|
||||
daemon pod
|
||||
format: int32
|
||||
type: integer
|
||||
required:
|
||||
- currentNumberScheduled
|
||||
- desiredNumberScheduled
|
||||
- numberMisscheduled
|
||||
- numberReady
|
||||
type: object
|
||||
required:
|
||||
- mismatchedContainerImages
|
||||
type: object
|
||||
gateways:
|
||||
items:
|
||||
properties:
|
||||
connections:
|
||||
items:
|
||||
properties:
|
||||
endpoint:
|
||||
properties:
|
||||
backend:
|
||||
type: string
|
||||
backend_config:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
cable_name:
|
||||
type: string
|
||||
cluster_id:
|
||||
type: string
|
||||
hostname:
|
||||
type: string
|
||||
nat_enabled:
|
||||
type: boolean
|
||||
private_ip:
|
||||
type: string
|
||||
public_ip:
|
||||
type: string
|
||||
subnets:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- backend
|
||||
- cable_name
|
||||
- cluster_id
|
||||
- hostname
|
||||
- nat_enabled
|
||||
- private_ip
|
||||
- public_ip
|
||||
- subnets
|
||||
type: object
|
||||
status:
|
||||
type: string
|
||||
statusMessage:
|
||||
type: string
|
||||
required:
|
||||
- endpoint
|
||||
- status
|
||||
- statusMessage
|
||||
type: object
|
||||
type: array
|
||||
haStatus:
|
||||
type: string
|
||||
localEndpoint:
|
||||
properties:
|
||||
backend:
|
||||
type: string
|
||||
backend_config:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
cable_name:
|
||||
type: string
|
||||
cluster_id:
|
||||
type: string
|
||||
hostname:
|
||||
type: string
|
||||
nat_enabled:
|
||||
type: boolean
|
||||
private_ip:
|
||||
type: string
|
||||
public_ip:
|
||||
type: string
|
||||
subnets:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- backend
|
||||
- cable_name
|
||||
- cluster_id
|
||||
- hostname
|
||||
- nat_enabled
|
||||
- private_ip
|
||||
- public_ip
|
||||
- subnets
|
||||
type: object
|
||||
statusFailure:
|
||||
type: string
|
||||
version:
|
||||
type: string
|
||||
required:
|
||||
- connections
|
||||
- haStatus
|
||||
- localEndpoint
|
||||
- statusFailure
|
||||
- version
|
||||
type: object
|
||||
type: array
|
||||
globalCIDR:
|
||||
type: string
|
||||
globalnetDaemonSetStatus:
|
||||
properties:
|
||||
lastResourceVersion:
|
||||
type: string
|
||||
mismatchedContainerImages:
|
||||
type: boolean
|
||||
nonReadyContainerStates:
|
||||
items:
|
||||
description: ContainerState holds a possible state of container.
|
||||
Only one of its members may be specified. If none of them is
|
||||
specified, the default one is ContainerStateWaiting.
|
||||
properties:
|
||||
running:
|
||||
description: Details about a running container
|
||||
properties:
|
||||
startedAt:
|
||||
description: Time at which the container was last (re-)started
|
||||
format: date-time
|
||||
type: string
|
||||
type: object
|
||||
terminated:
|
||||
description: Details about a terminated container
|
||||
properties:
|
||||
containerID:
|
||||
description: Container's ID in the format 'docker://<container_id>'
|
||||
type: string
|
||||
exitCode:
|
||||
description: Exit status from the last termination of
|
||||
the container
|
||||
format: int32
|
||||
type: integer
|
||||
finishedAt:
|
||||
description: Time at which the container last terminated
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: Message regarding the last termination of
|
||||
the container
|
||||
type: string
|
||||
reason:
|
||||
description: (brief) reason from the last termination
|
||||
of the container
|
||||
type: string
|
||||
signal:
|
||||
description: Signal from the last termination of the container
|
||||
format: int32
|
||||
type: integer
|
||||
startedAt:
|
||||
description: Time at which previous execution of the container
|
||||
started
|
||||
format: date-time
|
||||
type: string
|
||||
required:
|
||||
- exitCode
|
||||
type: object
|
||||
waiting:
|
||||
description: Details about a waiting container
|
||||
properties:
|
||||
message:
|
||||
description: Message regarding why the container is not
|
||||
yet running.
|
||||
type: string
|
||||
reason:
|
||||
description: (brief) reason the container is not yet running.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
status:
|
||||
description: DaemonSetStatus represents the current status of a
|
||||
daemon set.
|
||||
properties:
|
||||
collisionCount:
|
||||
description: Count of hash collisions for the DaemonSet. The
|
||||
DaemonSet controller uses this field as a collision avoidance
|
||||
mechanism when it needs to create the name for the newest
|
||||
ControllerRevision.
|
||||
format: int32
|
||||
type: integer
|
||||
conditions:
|
||||
description: Represents the latest available observations of
|
||||
a DaemonSet's current state.
|
||||
items:
|
||||
description: DaemonSetCondition describes the state of a DaemonSet
|
||||
at a certain point.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: Last time the condition transitioned from
|
||||
one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A human readable message indicating details
|
||||
about the transition.
|
||||
type: string
|
||||
reason:
|
||||
description: The reason for the condition's last transition.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of True, False,
|
||||
Unknown.
|
||||
type: string
|
||||
type:
|
||||
description: Type of DaemonSet condition.
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
currentNumberScheduled:
|
||||
description: 'The number of nodes that are running at least
|
||||
1 daemon pod and are supposed to run the daemon pod. More
|
||||
info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
desiredNumberScheduled:
|
||||
description: 'The total number of nodes that should be running
|
||||
the daemon pod (including nodes correctly running the daemon
|
||||
pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
numberAvailable:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have one or more of the daemon pod running
|
||||
and available (ready for at least spec.minReadySeconds)
|
||||
format: int32
|
||||
type: integer
|
||||
numberMisscheduled:
|
||||
description: 'The number of nodes that are running the daemon
|
||||
pod, but are not supposed to run the daemon pod. More info:
|
||||
https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
numberReady:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have one or more of the daemon pod running
|
||||
and ready.
|
||||
format: int32
|
||||
type: integer
|
||||
numberUnavailable:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have none of the daemon pod running and available
|
||||
(ready for at least spec.minReadySeconds)
|
||||
format: int32
|
||||
type: integer
|
||||
observedGeneration:
|
||||
description: The most recent generation observed by the daemon
|
||||
set controller.
|
||||
format: int64
|
||||
type: integer
|
||||
updatedNumberScheduled:
|
||||
description: The total number of nodes that are running updated
|
||||
daemon pod
|
||||
format: int32
|
||||
type: integer
|
||||
required:
|
||||
- currentNumberScheduled
|
||||
- desiredNumberScheduled
|
||||
- numberMisscheduled
|
||||
- numberReady
|
||||
type: object
|
||||
required:
|
||||
- mismatchedContainerImages
|
||||
type: object
|
||||
natEnabled:
|
||||
type: boolean
|
||||
routeAgentDaemonSetStatus:
|
||||
properties:
|
||||
lastResourceVersion:
|
||||
type: string
|
||||
mismatchedContainerImages:
|
||||
type: boolean
|
||||
nonReadyContainerStates:
|
||||
items:
|
||||
description: ContainerState holds a possible state of container.
|
||||
Only one of its members may be specified. If none of them is
|
||||
specified, the default one is ContainerStateWaiting.
|
||||
properties:
|
||||
running:
|
||||
description: Details about a running container
|
||||
properties:
|
||||
startedAt:
|
||||
description: Time at which the container was last (re-)started
|
||||
format: date-time
|
||||
type: string
|
||||
type: object
|
||||
terminated:
|
||||
description: Details about a terminated container
|
||||
properties:
|
||||
containerID:
|
||||
description: Container's ID in the format 'docker://<container_id>'
|
||||
type: string
|
||||
exitCode:
|
||||
description: Exit status from the last termination of
|
||||
the container
|
||||
format: int32
|
||||
type: integer
|
||||
finishedAt:
|
||||
description: Time at which the container last terminated
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: Message regarding the last termination of
|
||||
the container
|
||||
type: string
|
||||
reason:
|
||||
description: (brief) reason from the last termination
|
||||
of the container
|
||||
type: string
|
||||
signal:
|
||||
description: Signal from the last termination of the container
|
||||
format: int32
|
||||
type: integer
|
||||
startedAt:
|
||||
description: Time at which previous execution of the container
|
||||
started
|
||||
format: date-time
|
||||
type: string
|
||||
required:
|
||||
- exitCode
|
||||
type: object
|
||||
waiting:
|
||||
description: Details about a waiting container
|
||||
properties:
|
||||
message:
|
||||
description: Message regarding why the container is not
|
||||
yet running.
|
||||
type: string
|
||||
reason:
|
||||
description: (brief) reason the container is not yet running.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
status:
|
||||
description: DaemonSetStatus represents the current status of a
|
||||
daemon set.
|
||||
properties:
|
||||
collisionCount:
|
||||
description: Count of hash collisions for the DaemonSet. The
|
||||
DaemonSet controller uses this field as a collision avoidance
|
||||
mechanism when it needs to create the name for the newest
|
||||
ControllerRevision.
|
||||
format: int32
|
||||
type: integer
|
||||
conditions:
|
||||
description: Represents the latest available observations of
|
||||
a DaemonSet's current state.
|
||||
items:
|
||||
description: DaemonSetCondition describes the state of a DaemonSet
|
||||
at a certain point.
|
||||
properties:
|
||||
lastTransitionTime:
|
||||
description: Last time the condition transitioned from
|
||||
one status to another.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: A human readable message indicating details
|
||||
about the transition.
|
||||
type: string
|
||||
reason:
|
||||
description: The reason for the condition's last transition.
|
||||
type: string
|
||||
status:
|
||||
description: Status of the condition, one of True, False,
|
||||
Unknown.
|
||||
type: string
|
||||
type:
|
||||
description: Type of DaemonSet condition.
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
- type
|
||||
type: object
|
||||
type: array
|
||||
currentNumberScheduled:
|
||||
description: 'The number of nodes that are running at least
|
||||
1 daemon pod and are supposed to run the daemon pod. More
|
||||
info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
desiredNumberScheduled:
|
||||
description: 'The total number of nodes that should be running
|
||||
the daemon pod (including nodes correctly running the daemon
|
||||
pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
numberAvailable:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have one or more of the daemon pod running
|
||||
and available (ready for at least spec.minReadySeconds)
|
||||
format: int32
|
||||
type: integer
|
||||
numberMisscheduled:
|
||||
description: 'The number of nodes that are running the daemon
|
||||
pod, but are not supposed to run the daemon pod. More info:
|
||||
https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'
|
||||
format: int32
|
||||
type: integer
|
||||
numberReady:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have one or more of the daemon pod running
|
||||
and ready.
|
||||
format: int32
|
||||
type: integer
|
||||
numberUnavailable:
|
||||
description: The number of nodes that should be running the
|
||||
daemon pod and have none of the daemon pod running and available
|
||||
(ready for at least spec.minReadySeconds)
|
||||
format: int32
|
||||
type: integer
|
||||
observedGeneration:
|
||||
description: The most recent generation observed by the daemon
|
||||
set controller.
|
||||
format: int64
|
||||
type: integer
|
||||
updatedNumberScheduled:
|
||||
description: The total number of nodes that are running updated
|
||||
daemon pod
|
||||
format: int32
|
||||
type: integer
|
||||
required:
|
||||
- currentNumberScheduled
|
||||
- desiredNumberScheduled
|
||||
- numberMisscheduled
|
||||
- numberReady
|
||||
type: object
|
||||
required:
|
||||
- mismatchedContainerImages
|
||||
type: object
|
||||
serviceCIDR:
|
||||
type: string
|
||||
required:
|
||||
- clusterID
|
||||
- natEnabled
|
||||
type: object
|
||||
type: object
|
||||
version: v1alpha1
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
storage: true
|
||||
status:
|
||||
acceptedNames:
|
||||
kind: ""
|
||||
plural: ""
|
||||
conditions: []
|
||||
storedVersions: []
|
||||
@@ -0,0 +1,57 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.fullname" . }}
|
||||
component: engine
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
spec:
|
||||
progressDeadlineSeconds: 600
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 10
|
||||
selector:
|
||||
matchLabels:
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 25%
|
||||
maxUnavailable: 25%
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
labels:
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
spec:
|
||||
containers:
|
||||
- command:
|
||||
- submariner-operator
|
||||
env:
|
||||
- name: WATCH_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: metadata.namespace
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: metadata.name
|
||||
- name: OPERATOR_NAME
|
||||
value: submariner-operator
|
||||
image: {{ .Values.operator.image.repository }}:{{ default .Chart.AppVersion .Values.operator.image.tag }}
|
||||
imagePullPolicy: {{ .Values.operator.image.pullPolicy }}
|
||||
name: submariner-operator
|
||||
resources: {}
|
||||
terminationMessagePath: /dev/termination-log
|
||||
terminationMessagePolicy: File
|
||||
dnsPolicy: ClusterFirst
|
||||
restartPolicy: Always
|
||||
schedulerName: default-scheduler
|
||||
securityContext: {}
|
||||
serviceAccount: {{ template "submariner.fullname" . }}
|
||||
serviceAccountName: {{ template "submariner.fullname" . }}
|
||||
terminationGracePeriodSeconds: 30
|
||||
@@ -0,0 +1,318 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
- services
|
||||
- services/finalizers
|
||||
- endpoints
|
||||
- persistentvolumeclaims
|
||||
- events
|
||||
- configmaps
|
||||
- secrets
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- deployments
|
||||
- daemonsets
|
||||
- replicasets
|
||||
- statefulsets
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- monitoring.coreos.com
|
||||
resources:
|
||||
- servicemonitors
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- apiGroups:
|
||||
- apps
|
||||
resourceNames:
|
||||
- {{ template "submariner.fullname" . }}
|
||||
resources:
|
||||
- deployments/finalizers
|
||||
verbs:
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
verbs:
|
||||
- get
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- replicasets
|
||||
verbs:
|
||||
- get
|
||||
- apiGroups:
|
||||
- submariner.io
|
||||
resources:
|
||||
- '*'
|
||||
- servicediscoveries
|
||||
verbs:
|
||||
- '*'
|
||||
---
|
||||
kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:engine
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["configmaps"]
|
||||
verbs: ["create", "get", "list", "watch", "patch", "update"]
|
||||
- apiGroups: ["submariner.io"]
|
||||
resources: ["clusters", "endpoints", "gateways"]
|
||||
verbs: ["create", "get", "list", "watch", "patch", "update", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["create", "patch"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:engine
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ template "submariner.fullname" . }}:engine
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "submariner.operatorServiceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:routeagent
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
rules:
|
||||
- apiGroups: ["submariner.io"]
|
||||
resources: ["clusters", "endpoints", "gateways"]
|
||||
verbs: ["create", "get", "list", "watch", "patch", "update"]
|
||||
- apiGroups: [""]
|
||||
resources: ["pods"]
|
||||
verbs: ["get", "watch", "list"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:routeagent
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ template "submariner.fullname" . }}:routeagent
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "submariner.operatorServiceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
rules:
|
||||
# submariner-operator updates the config map of core-dns to forward requests to
|
||||
# clusterset.local to Lighthouse DNS, also looks at existing configmaps
|
||||
# to figure out network settings
|
||||
- apiGroups: [""]
|
||||
resources: ["configmaps"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["apiextensions.k8s.io"]
|
||||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "create", "update", "delete"]
|
||||
- apiGroups: [""] # pods and services are looked up to figure out network settings
|
||||
resources: ["pods", "services"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["operator.openshift.io"]
|
||||
resources: ["dnses"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["config.openshift.io"]
|
||||
resources: ["networks"]
|
||||
verbs: ["get", "list"]
|
||||
- apiGroups: ["multicluster.x-k8s.io"]
|
||||
resources: ["*"]
|
||||
verbs: ["create", "get", "list", "watch", "update", "delete"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "submariner.operatorServiceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "submariner.fullname" . }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:routeagent
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "update"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:routeagent
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "submariner.fullname" . }}:routeagent
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "submariner.operatorServiceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:globalnet
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["services", "namespaces", "pods", "nodes"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["submariner.io"]
|
||||
resources: ["clusters", "endpoints", "gateways"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:globalnet
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "submariner.fullname" . }}:globalnet
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "submariner.operatorServiceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
{{- if .Values.submariner.serviceDiscovery }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:lighthouse
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["services", "namespaces", "configmaps", "endpoints"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["discovery.k8s.io"]
|
||||
resources: ["endpointslices"]
|
||||
verbs: ["create", "get", "list", "watch", "update", "delete"]
|
||||
- apiGroups: ["lighthouse.submariner.io"]
|
||||
resources: ["*"]
|
||||
verbs: ["create", "get", "list", "watch", "update", "delete"]
|
||||
- apiGroups: ["submariner.io"]
|
||||
resources: ["gateways"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "submariner.fullname" . }}:lighthouse
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "submariner.fullname" . }}:lighthouse
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "submariner.operatorServiceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,24 @@
|
||||
apiVersion: submariner.io/v1alpha1
|
||||
kind: Submariner
|
||||
metadata:
|
||||
name: submariner
|
||||
namespace: submariner-operator
|
||||
spec:
|
||||
broker: k8s
|
||||
brokerK8sApiServer: {{ .Values.broker.server }}
|
||||
brokerK8sApiServerToken: {{ .Values.broker.token }}
|
||||
brokerK8sCA: {{ .Values.broker.ca }}
|
||||
brokerK8sRemoteNamespace: {{ .Values.broker.namespace }}
|
||||
ceIPSecDebug: {{ .Values.ipsec.debug }}
|
||||
ceIPSecIKEPort: {{ .Values.ipsec.ikePort }}
|
||||
ceIPSecNATTPort: {{ .Values.ipsec.natPort }}
|
||||
ceIPSecPSK: {{ .Values.ipsec.psk }}
|
||||
clusterCIDR: "{{ .Values.submariner.clusterCidr }}"
|
||||
clusterID: {{ .Values.submariner.clusterId }}
|
||||
colorCodes: {{ .Values.submariner.colorCodes }}
|
||||
debug: {{ .Values.submariner.debug }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
natEnabled: {{ .Values.submariner.natEnabled }}
|
||||
repository: {{ .Values.submariner.images.repository }}
|
||||
version: {{ .Values.submariner.images.tag }}
|
||||
serviceCIDR: "{{ .Values.submariner.serviceCidr }}"
|
||||
@@ -0,0 +1,59 @@
|
||||
{{- if .Values.serviceAccounts.operator.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "submariner.operatorServiceAccountName" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
{{- end }}
|
||||
---
|
||||
{{- if .Values.serviceAccounts.engine.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "submariner.engineServiceAccountName" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
{{- end }}
|
||||
---
|
||||
{{- if .Values.serviceAccounts.routeAgent.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "submariner.routeAgentServiceAccountName" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
{{- end }}
|
||||
---
|
||||
{{- if .Values.serviceAccounts.globalnet.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "submariner.globalnetServiceAccountName" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
{{- end }}
|
||||
---
|
||||
{{- if .Values.serviceAccounts.lighthouse.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "submariner.lighthouseServiceAccountName" . }}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: {{ template "submariner.chart" . }}
|
||||
app: {{ template "submariner.name" . }}
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user