Compare commits

...
98 Commits
Author SHA1 Message Date
Automated Release 4126e0fb08 Update base image to use stable branch 'release-0.9'
Signed-off-by: Automated Release <release@submariner.io>
2021-04-30 09:49:39 +00:00
Stephen KittandThomas Pantelis 2b992c9f04 Disable the DCO GHA
We've installed the DCO bot instead, as requested by the CNCF.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2021-04-28 08:43:32 -04:00
Tom Pantelis b02dce884f Fix the release job
It's failing b/c the submariner chart was recently removed.

Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
2021-04-06 10:23:34 -04:00
Stephen KittandThomas Pantelis c16442ac29 Add a failing check on PRs not targeting devel
Signed-off-by: Stephen Kitt <skitt@redhat.com>
2021-04-05 13:26:24 -04:00
Daniel FarrellandThomas Pantelis e0c75d7db2 Test K8s versions 1.18, 1.19, and 1.20 in E2E
Use the new ability of the shared E2E GHA to configure the Kubernetes
version. Add jobs that cover the latest available patch versions
(limited by kind images) from the three most recent minor versions.

Only run one E2E job with all-default configuration per K8s version, for
some coverage with minimal overhead.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2021-04-05 13:07:59 -04:00
Stephen KittandDaniel Farrell 74b4a9d0bb Remove the standalone Submariner chart
This was deprecated in favour of the operator-based chart. This only
removes the Submariner chart, the broker chart will be addressed
separately.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2021-03-30 13:01:39 -05:00
Daniel FarrellandMiguel Angel Ajo Pelayo 50570be17c Add flake finder periodic E2E tests
Periodically run E2E tests against the merged (must have passed E2E
gating) code to detect breakages due to external changes or flaky
failures.

Also supports debugging Helm-related failures in other repositories, by
verifying (or not) what's passing here.

Use the same test matrix as the current E2E job.

Mirrors similar tests in other Submariner repositories.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2021-03-16 09:06:04 +01:00
Mike KolesnikandDaniel Farrell 50a2d3db29 Import Makefile.dapper downloaded from Shipyard
Instead of redefining the dapper file here, download it from Shiyard
Also use the BASE_BRANCH env variable for the dapper file

Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
2021-03-10 19:43:24 -05:00
Mike KolesnikandDaniel Farrell 51975c6bc7 Use 'preload-images' from Shipyard
Now that it's a standard target, use it instead of having specific code
here

Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
2021-03-10 19:27:17 -05:00
Mike Kolesnik 8d326e660e Use the 'using' input for the E2E GHA
Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
2021-03-10 17:41:07 +02:00
Steve MattarandSteve Mattar c450f75c8e feat: add lighthouse to e2e matrix
Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-03-10 16:41:48 +02:00
Steve MattarandSteve Mattar d74e4a6fd4 feat: support ovn
Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-03-10 16:41:48 +02:00
Steve MattarandSteve Mattar 64d7c11506 refactor: globalnet should be under the broker
Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-03-10 16:41:48 +02:00
Daniel FarrellandThomas Pantelis 8d6ca0bd1d Add cable driver to E2E matrix
Run E2E tests for all currently-supported cable drivers.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2021-03-05 09:47:25 -05:00
Steve MattarandSteve Mattar 86ba2b8857 feat: support cableDriver value default is libreswan
Closes #33

Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-03-04 19:46:28 +02:00
Steve MattarandSteve Mattar 8d13ad14fb refactor: rename the gateway deployment file
Rename to maintain consistency and to follow the standards.

Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-03-04 15:53:03 +02:00
Steve MattarandGitHub 4a59718a34 refactor: rename submariner-engine to submariner-gateway (#122)
Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-03-02 08:57:52 -05:00
Mike KolesnikandGitHub 0c0e73c57f Remove reliance on version script (#121)
The script has been migrated to `Makefile.versions` so we can just rely
on the `$VERSION` from there.

Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
2021-03-01 10:57:14 -05:00
Miguel Angel AjoandMiguel Angel Ajo Pelayo dd6bc283c7 Enable globalnet E2E matrix
Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>
2021-02-24 15:01:01 +01:00
Miguel Angel AjoandThomas Pantelis f3787856f6 Add globalCidr mappings to the submariner template
also includes the questions.yaml which is UI.

Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>
2021-02-24 08:36:47 -05:00
Steve MattarandMiguel Angel Ajo Pelayo cce1bf6494 fix(crd): add the missing service discovery crd
Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-02-24 12:45:03 +01:00
Steve MattarandMiguel Angel Ajo Pelayo 83177c8083 fix(crd): add the broker crd
Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-02-24 12:45:03 +01:00
Steve MattarandGitHub 7f2d832e6f fix(rbac): sa and rbac definitions (#117)
Sync the SA and RBAC definitions with what we have in submariner-operator.

Signed-off-by: Steve Mattar <smattar@redhat.com>
2021-02-23 16:08:55 +01:00
Daniel FarrellandStephen Kitt c1177daa36 Use shared GHAs from Shipyard
Run the E2E tests using Submariner's custom GitHub Actions.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2021-02-08 09:47:58 +01:00
Stephen KittandThomas Pantelis af9332cb53 Track the devel branch for release
Signed-off-by: Stephen Kitt <skitt@redhat.com>
2021-02-05 08:23:55 -05:00
Daniel FarrellandDaniel Farrell ad064a97b2 Add git commit message linting
As implemented and configured in other Submariner repos.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2021-02-02 08:49:25 -06:00
Daniel FarrellandStephen Kitt 8754508eb0 Add .dapper and .shflags to gitignore
Both are generated by our standard make commands, both are ignored in
other Submariner repos.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2021-02-02 14:02:52 +01:00
Daniel FarrellandThomas Pantelis 472ad44a87 Use markdownlint from Shipyard
Instead of an external GitHub action, use the same markdownlint make
target from Shipyard that we use in other repos.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2021-02-01 16:42:35 -05:00
Stephen KittandThomas Pantelis 0d566a4104 Use the PR base branch as reference when linting
To determine the changed files, the Markdown linter needs to know the
base branch; instead of using the default everywhere, use the base
branch set in the PR.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2021-01-21 09:49:13 -05:00
Aswin SuryanarayananandGitHub 83aeade0cc Add a cluster role for submariner-engine serivce-account
The submainer-engine now access the node object as part
of golbalnet-healthcheck support and the required roles are
added

Signed-off-by: Aswin Surayanarayanan <asuryana@redhat.com>
2021-01-14 10:33:21 +01:00
Sridhar GaddamandStephen Kitt 69a435efb3 Update GatewayEngine Pod env with the host nodeName
Related to: https://github.com/submariner-io/submariner/issues/1068
Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2021-01-12 11:11:34 +01:00
Sridhar GaddamandStephen Kitt 54b9fab7f0 Fix broken globalnet helm jobs
Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2021-01-04 09:09:39 +01:00
Sridhar GaddamandStephen Kitt 9946eeb071 Update Globalnet Pod env with the host nodeName
Related to: https://github.com/submariner-io/submariner/issues/970

Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-12-24 14:06:14 +01:00
Daniel FarrellandStephen Kitt 6edd0a2f10 Fix all broken links
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-12-17 15:44:34 +01:00
Daniel FarrellandStephen Kitt 701ad09f63 Fix periodic broken link test issue reporting
Use new GHA for reporting issues when broken links are detected. This
logic was verified to work by the frequently-run flaky test finder.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-12-17 15:10:59 +01:00
Stephen KittandThomas Pantelis 8a670ad49d Set the serviceDiscoveryEnabled flag
This allows the e2e tests to complete successfully.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-12-17 08:21:41 -05:00
Stephen KittandThomas Pantelis 59bc056f99 Update the instructions for Helm v3
With v3, we no longer need to initialise Helm or even provide a local
repository; the charts can be installed directly. We now support make
deploy and make e2e too, document that.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-12-09 13:07:07 -05:00
Daniel FarrellandStephen Kitt 433ff8347e Set cable driver flag passed from Shipyard
Relates-to: submariner-io/shipyard#364
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-12-09 15:26:10 +01:00
nyechielandStephen Kitt c22af2a996 Update README file
Signed-off-by: nyechiel <nyechiel@redhat.com>
2020-11-23 11:51:43 +01:00
Sridhar GaddamandThomas Pantelis c5ab3dd7d7 Include ClusterRole for routeagent to list nodes
In the new event framework we use node listeners to support certain use-cases.
Currently in helm, routeagent does not have that role, so e2e tests are failing.
This PR enables it.

Related to: https://github.com/submariner-io/submariner/issues/858
Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-11-20 12:35:59 -05:00
Stephen KittandThomas Pantelis 33cbc85f50 Ensure we overwrite charts when necessary
Currently, we lose updated charts when we check the gh-pages branch
out. This patch generates the charts in the base directory, and moves
them into place after checking the target branch out.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-18 12:32:01 -05:00
Sridhar GaddamandThomas Pantelis f108705710 Update route-agent Pod env with the host nodeName
Related to: https://github.com/submariner-io/submariner-operator/issues/835
Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-11-18 09:38:26 -05:00
Sridhar GaddamandStephen Kitt 8f2bed6191 Exclude openshift-dns namespace in Globalnet
In an OCP Cluster, openshift-dns namespace has dns-default
service and this is controlled by its operator.
When Globalnet is deployed on OCP, it was seen that globalip
annotation added to it is periodically getting deleted by the
operator, so Globalnet tries to re-add the annotation and this
goes on forever. This will cause Globalnet to consume CPU
unnecessarily and could affect user-experience with Submariner
Globalnet. We have plans to enhance Globalnet to improve its
scalability, but until then we can exclude annotating services
in openshift-dns namespace.

Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-11-18 14:21:11 +01:00
Sridhar GaddamandStephen Kitt 5407e97cd3 Exclude openshift-monitoring namespace in Globalnet
In an OCP Cluster, openshift-monitoring namespace has couple of
services and these are controlled by their respective operators.
When Globalnet is deployed on OCP, it was seen that globalip
annotation added to such services are periodically getting
deleted by the operators, so Globalnet tries to re-add the
annotation and this goes on forever. This will cause Globalnet
to consume CPU unnecessarily and could affect user-experience
with Submariner Globalnet. We have plans to enhance Globalnet
to improve its scalability, but until then we can exclude
annotating services in openshift-monitoring namespace.

Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-11-18 14:21:11 +01:00
Stephen KittandMiguel Angel Ajo Pelayo 672e55f528 Revert to the default Helm version
Now that Shipyard ships Helm 3, remove our overrides.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-18 11:47:58 +01:00
Stephen KittandThomas Pantelis 03e931d203 Release charts manually
This replicates the process used in the old Travis configuration to
publish updated charts.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-16 09:56:28 -05:00
Stephen KittandThomas Pantelis ca2e3cd29a Add myself as a code owner
Following https://groups.google.com/u/1/g/submariner-dev/c/1lAmi0IwDgc

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-13 16:49:13 -05:00
Stephen KittandMiguel Angel Ajo Pelayo 5906cfb3dc Switch to Helm v3
This allows us to deploy v1 CRDs such as the upstream MCS API CRDs.

Fixes: #47
Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-13 12:31:30 +01:00
Vishal ThaparandMiguel Angel Ajo Pelayo 44374a709c Enable serviceDiscovery for broker install
This is to test installation of MCS API CRDs on broker

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-11-13 12:31:30 +01:00
Vishal ThaparandMiguel Angel Ajo Pelayo 59ab112b29 Fix MCS API CRDs
Update the MCS API CRDs as per definition in
https://github.com/kubernetes-sigs/mcs-api/tree/master/config/crd

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-11-13 12:31:30 +01:00
Stephen KittandThomas Pantelis 34cd37c4c0 Check out the full history for chart-releaser
chart-releaser looks at the project history to determine whether a
chart changed, we mustn't limit the fetch depth.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-12 14:03:55 -05:00
Stephen KittandThomas Pantelis aa2cd102f1 Fix the chart-releaser-action version
Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-12 07:26:28 -05:00
Stephen KittandMiguel Angel Ajo Pelayo 1ae567356b Fix the globalnet SAs
SA names can't include ':', revert to '-' as used in the old charts.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-12 12:04:20 +01:00
Stephen KittandStephen Kitt 7ffc2bb663 Add an e2e GHA
For now this only uses the default deployment.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-10 18:45:33 +01:00
Daniel FarrellandThomas Pantelis c31bf71824 Remove Travis CI
All tests and release work has been transferred to run on GitHub
Actions, like the rest of Subariner's repos.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-11-10 12:33:30 -05:00
Daniel FarrellandThomas Pantelis 7ead45df85 Release Helm charts via helm/chart-releaser GHA
Use the official Helm chart releasing GitHub Action instead of our
custom bash.

Travis CI can be removed after this commit, as all tests will have
equivalents for GHAs.

Closes: #71
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-11-10 12:33:30 -05:00
Daniel FarrellandStephen Kitt ea49a9c47a Add CODE-OF-CONDUCT.md, point to website
It seems most CNCF projects provide a CODE-OF-CONDUCT.md file at the
root of their repositories, even if they have their Code of Conduct on
their website. To better fit into the CNCF ecosystem and be a more
welcoming project, follow that pattern.

Relates-to: submariner-io/submariner#804
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-11-10 17:54:06 +01:00
Daniel FarrellandStephen Kitt 9a4f6bbfea Add CONTRIBUTING.md, point to website
It seems most CNCF projects provide a CONTRIBUTING.md file at the root
of their repositories, even if they have their contributing docs on
their website. To better fit into the CNCF ecosystem and be a more
welcoming project, follow that pattern.

Relates-to: submariner-io/submariner#804
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-11-10 17:54:06 +01:00
nyechielandThomas Pantelis e207ef8e4a Add templates for bugs/enhancements/support
Signed-off-by: nyechiel <nyechiel@redhat.com>
2020-11-10 11:41:01 -05:00
Vishal ThaparandThomas Pantelis 71926ccfe3 Add openAPIV3Schema fields to MCS CRDS
Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-11-10 07:53:49 -05:00
Stephen KittandMiguel Angel Ajo Pelayo 96ff45c2f8 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>
2020-11-06 07:56:55 +01:00
Vishal ThaparandThomas Pantelis c128fb42c5 Install MCS SIG CRDs and roles
This installs the `multicluster.x-k8s.io` CRDs and roles for them

Fixes:submariner-io/lighthouse#336

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-11-02 08:29:12 -05:00
Daniel FarrellandThomas Pantelis f92523dbb1 Run YAML linting also via GHA
YAML linting currently runs on Travis. Convert to a GHA, to align with
other repos and prepare for future optimizations.

Only run against values.yaml and Chart.yaml files, as is currently the
case in the Travis-driven workflow.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-10-21 13:46:48 -04:00
Daniel FarrellandThomas Pantelis 4461924636 Fix Markdown linting errros in README
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-10-21 11:06:52 -04:00
Daniel FarrellandThomas Pantelis 3ac4e14664 Add Markdown linting
Add linting for Markdown files, following norms from other repos.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-10-21 11:06:52 -04:00
Daniel FarrellandThomas Pantelis 8c49e84959 Refactor periodic GHA
Convert MD-lint Workflow into general periodic Workflow.

Minor tweaks from refactoring in other repos.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-10-21 09:18:50 -04:00
Daniel FarrellandThomas Pantelis 5d4d921dbf Refactor linting GHAs
Combine linting GitHub Actions into a single Workflow.

Minor updates to reflect refactoring in other repos.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-10-21 09:18:50 -04:00
Nir YechielandGitHub 0dde6f2123 Add stalebot to charts repo (#64)
Signed-off-by: nyechiel <n.yechiel@gmail.com>
2020-09-29 09:51:54 -04:00
Vishal ThaparandThomas Pantelis 1e3737abd9 Add deletecollection verb for endpointslices
Refer: https://github.com/submariner-io/submariner-operator/pull/636

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-09-03 10:10:19 -04:00
Stephen KittandMiguel Angel Ajo Pelayo c4760944f9 Bump to 0.6.0
This changes the defaults to 0.6.0, pulling the images from our Quay
repository.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-08-31 12:14:39 +02:00
Daniel FarrellandThomas Pantelis bb60a9e87b Bump MD link check linter 0.6->1.*
Adds support for check-modified-files-only config, which currently isn't
honored and throws a warning.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-08-26 09:00:50 -04:00
Sridhar GaddamandMiguel Angel Ajo Pelayo d38625a9fd Modify updateStrategy for Route-agent Pods
Currently, the updateStrategy for Route-agent pods is set to RollingUpdate
with maxUnavailable as 1. Because of this, when the route-agent DaemonSet
is updated, the Pods are updated one after the other. While the rolling
update strategy is good for user-facing services, for route-agent DaemonSet
its not the most suitable one as it takes time for all the route-agent pods
to be updated in a large cluster.

Ideally, it would have been great if "Recreate" updateStrategy was supported
for DaemonSets, but unfortunately K8s does not support it. But an alternate
way to achieve something similar is to configure rollingUpdate.maxUnavailable
to 100% so that the DaemonSet controller can update all the route-agent Pods
in a single go.

https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/#daemonset-update-strategy

Fixes issue: https://github.com/submariner-io/submariner/issues/734

Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-08-21 10:05:46 +02:00
Daniel FarrellandThomas Pantelis ae84a0b409 Add link aliveness tests
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-08-20 14:36:53 -04:00
Stephen KittandMiguel Angel Ajo Pelayo 9d3a9b7f66 Rename "supercluster" to "clusterset"
The latter is the name chosen by the multi-cluster SIG.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-08-20 09:40:42 +02:00
Vishal ThaparandThomas Pantelis 8df47c6f85 Add roles for endpoints and endpointslices
* Add clusterrole to give lighthouse serviceaccount access to endpoints and
endpointslices
* Add role to give broker serviceaccont access to endpoint slices

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-08-07 07:54:15 -04:00
Vishal ThaparandThomas Pantelis fefd6b21ed Install gateway CRD on broker
If crd.create is set to false when installing submariner on same cluster
as broker, gateways CRD never gets installed because it is missing from
broker charts. This change is to install the CRD even on broker, as a
cleaner alternative to adding more flags.

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-07-21 11:35:31 -04:00
Vishal ThaparandThomas Pantelis 1954770672 Allow lighthouse access to gateways.submariner.io
Adds following permissions to lighthouse clusterrole
for `gateways.submariner.io`
 - get
 - list
 - watch

This allows lighthouse to track changes to gateway status and know which
clusters are connected.

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-07-20 11:16:04 -04:00
Sridhar GaddamandGitHub 7cc50b03d3 Reset terminationGracePeriodSeconds for SM Pods (#50)
In one of the earlier PRs, we modified the terminationGracePeriodSeconds
to 10 secs. However, its seen that this is causing more CI failures
during e2e redundancy tests. Ideally, once the Pods are terminated,
it should cleanup itself ASAP but it is seen that SM Pods are sometimes
taking time to exit and during this Period since there is no active SM
Pod running, this is triggering some failures.

Until we figure out the exact reason why the Pods are taking time for
cleanup, this PR reduces the terminationGracePeriodSeconds.

This issue would be properly addressed via
https://github.com/submariner-io/submariner/issues/694

Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-07-10 14:57:14 -04:00
Vishal ThaparandGitHub fb65f1ffbe Add ServiceImport CRD (#51)
Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-07-09 10:54:28 -04:00
Sridhar GaddamandGitHub c9f1f79338 Fix updateStrategy in Submariner DaemonSet Pods (#49)
Fixes issue: https://github.com/submariner-io/submariner-charts/issues/48

Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-06-24 10:47:08 -04:00
Miguel Angel Ajo PelayoandGitHub 3b44f11749 Update versioning and image repositories (#44)
* Update versioning and image repositories

Update helm charts to follow the submariner versioning,
and include the image repositories by default.

Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>

* Update final version

Signed-off-by: Miguel Angel Ajo Pelayo <majopela@redhat.com>
2020-06-24 10:11:21 -04:00
Vishal ThaparandGitHub d2b0d98ea2 Add globalnet flag for lighthouse (#43)
To optimize Lighthouse for Globalnet, Lighthouse needs to know if
globalnet was enabled.

Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
2020-06-23 10:00:29 -04:00
Miguel Angel Ajo PelayoandGitHub eadf5be408 Update contact details for charts (#46)
Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>
2020-06-23 07:57:59 -04:00
Miguel Angel Ajo PelayoandGitHub 86ee45297b Update default gateway leadership timing (#45)
Those values where changed on the engine.

Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>
2020-06-23 07:57:17 -04:00
Daniel FarrellandMiguel Angel Ajo Pelayo 90929ce969 Add DCO signed-off-by GHA validation
Add GitHub Action validating presence of signed-off-by line to accept
the Developer Certificate of Origin, as required for CNCF.

Relates-to: submariner-io/submariner#666
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-06-23 09:39:51 +02:00
Vishal ThaparandGitHub e43e321a0d Use correct name for lighthouse-coredns (#41) 2020-06-09 16:40:18 -04:00
Vishal ThaparandMiguel Angel Ajo Pelayo b217b75f96 Add lighthouse-coredns charts
1. Adds deployment amd configmap
2. Updates RBAC
2020-06-09 13:27:07 +02:00
Sridhar GaddamandMiguel Angel Ajo Pelayo c905d9fdca Fix terminationGracePeriodSeconds in Submariner Pods
In K8s the default termination grace period for a Pod is 30
secs. However, for Submariner Pods, we were configuring this as
0 secs, because of which, cleanup was not happening in a
consistent manner and we are seeing failures in CI jobs.

This PR modifies the terminationGracePeriodSeconds to 10 secs.

Along with this change, it also uses the proper namespace of
submariner in the excluded namespaces.

Fixes issue: https://github.com/submariner-io/submariner-charts/issues/39

Signed-off-by: Sridhar Gaddam <sgaddam@redhat.com>
2020-06-08 11:05:16 +02:00
Vishal ThaparandMiguel Angel Ajo Pelayo 77fe3d91fa Add crd-install hook for ServiceExport 2020-05-19 10:44:52 +02:00
Vishal ThaparandMiguel Angel Ajo Pelayo 855b874a6a Use v1beta1 for lighthouse CRDs
v1 is only available k8s v1.16 onwards and we're using 1.14 in E2E.
2020-05-18 10:11:59 +02:00
Mike KolesnikandMiguel Angel Ajo Pelayo 1d2af4468b Check also optional parts of charts
The CI job currently only checks the bare chart, with optional flags set
to defaults which cause it to miss those parts. Set the flags so that
the job also checks those parts.
2020-05-15 00:43:54 +02:00
Vishal ThaparandMiguel Angel Ajo Pelayo 97e83e4fc8 Add ServiceExport CRD 2020-05-15 00:41:54 +02:00
Daniel FarrellandGitHub 40538471b6 Add CODEOWNERS file to manage commit rights (#32)
Add a GitHub CODEOWNERS file to support disaggregating commit rights.
Allows the Committer process in the Community Membership docs to be
implemented.

Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
2020-05-05 09:02:40 -04:00
Mike KolesnikandMiguel Angel Ajo Pelayo 89b509f60d Fix lighthouseServiceAccountName
It was missing the post-deletion operator which caused it to generate:
    name:
    submariner-lighthouse

Instead of `name: submariner-lighthouse`

Now it should be fine
2020-04-26 08:49:57 +02:00
Miguel Angel Ajo PelayoandGitHub 2146487899 Add printer column to gateway CRD (#28) 2020-04-24 08:07:12 -04:00
Vishal ThaparandMiguel Angel Ajo Pelayo d37db87a61 Bump chart versions for servicediscovery
With servicediscovery changes coming in, time to update chart versions

submariner: 0.0.3 => 0.0.4
submariner-k8s-broker: 0.0.1 => 0.0.2
2020-04-23 09:29:50 +02:00
Vishal ThaparandMiguel Angel Ajo Pelayo 5e425b9079 Add Lighthouse charts
This adds the deployment for lighthouse-agent, service account and RBAC.
2020-04-23 09:29:50 +02:00
Alexey RoytmanandGitHub 2914c74e38 Support CableDriver (#18) 2020-04-20 09:49:00 -04:00
51 changed files with 2991 additions and 809 deletions
+2
View File
@@ -0,0 +1,2 @@
Periodic link aliveness CI detected a broken link. Please see the [periodic job
results](https://github.com/submariner-io/submariner-charts/actions?query=workflow%3APeriodic) for details.
+33
View File
@@ -0,0 +1,33 @@
---
name: Bug Report
about: Report a bug in Helm Charts
labels: bug
---
<!-- Please use this template while reporting a bug and provide as much info as
possible. Not doing so may result in your bug not being addressed in a timely
manner. Thanks!
If the matter is security related, please disclose it privately to the
Submariner Owners: https://github.com/orgs/submariner-io/teams/submariner-core
-->
**What happened**:
**What you expected to happen**:
**How to reproduce it (as minimally and precisely as possible)**:
**Anything else we need to know?**:
**Environment**:
- Submariner version (use `subctl version`):
- Kubernetes version (use `kubectl version`):
- Cloud provider or hardware configuration:
- OS (e.g: `cat /etc/os-release`):
- Kernel (e.g. `uname -a`):
- Install tools:
- Network plugin and version (if this is a network-related bug):
- Others:
+11
View File
@@ -0,0 +1,11 @@
---
name: Enhancement Request
about: Suggest an enhancement to the Helm Charts project
labels: enhancement
---
<!-- Please only use this template for submitting enhancement requests -->
**What would you like to be added**:
**Why is this needed**:
+18
View File
@@ -0,0 +1,18 @@
---
name: Support Request
about: Support request or question relating to Helm Charts
labels: support
---
<!--
GitHub may not the right place for support requests.
You can also post your question on the [Submariner
Slack](https://kubernetes.slack.com/archives/C010RJV694M) or the Submariner
[users](https://bit.ly/submariner-users) or
[developers](https://bit.ly/submariner-dev) mailing lists.
If the matter is security related, please disclose it privately to the
Submariner Owners: https://github.com/orgs/submariner-io/teams/submariner-core
-->
+57
View File
@@ -0,0 +1,57 @@
---
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an Issue becomes stale (pull request is overridden later)
daysUntilStale: 60
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels: []
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
- security
- confirmed
# Set to true to ignore issues in a project (defaults to false)
exemptProjects: false
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: false
# Set to true to ignore issues with an assignee (defaults to false)
exemptAssignees: false
# Label to use when marking as stale
staleLabel: wontfix
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
activity for 60 days. It will be closed if no further activity occurs.
Please make a comment if this issue/pr is still valid. Thank you
for your contributions.
# Comment to post when removing the stale label.
# unmarkComment: >
# Your comment here.
# Comment to post when closing a stale Issue or Pull Request.
# closeComment: >
# Your comment here.
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30
# Limit to only `issues` or `pulls`
# only: issues
pulls:
daysUntilStale: 30
markComment: >
This pull request has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
+14
View File
@@ -0,0 +1,14 @@
---
name: Branch Checks
on:
pull_request:
jobs:
target_devel:
name: PR targets release-0.9
runs-on: ubuntu-latest
steps:
- name: Check that the PR targets release-0.9
if: ${{ github.base_ref != 'release-0.9' }}
run: exit 1
+36
View File
@@ -0,0 +1,36 @@
---
name: End to End Tests
on:
pull_request:
jobs:
e2e:
name: E2E
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
cable_driver: ['libreswan', 'wireguard']
globalnet: ['', 'globalnet']
k8s_version: ['1.17.17']
lighthouse: ['', 'lighthouse']
include:
# Recentness of K8s versions are limited by kindest/node image releases
- k8s_version: 1.18.15
- k8s_version: 1.19.7
- k8s_version: 1.20.2
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Run E2E deployment and tests
uses: submariner-io/shipyard/gh-actions/e2e@release-0.9
with:
k8s_version: ${{ matrix.k8s_version }}
using: ${{ matrix.cable_driver }} ${{ matrix.globalnet }} ${{ matrix.lighthouse }}
- name: Post mortem
if: failure()
uses: submariner-io/shipyard/gh-actions/post-mortem@release-0.9
+30
View File
@@ -0,0 +1,30 @@
---
name: Flake Finder
on:
schedule:
- cron: "0 0 * * *"
jobs:
e2e:
name: E2E
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
cable_driver: ['libreswan', 'wireguard']
globalnet: ['', 'globalnet']
lighthouse: ['', 'lighthouse']
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Run E2E deployment and tests
uses: submariner-io/shipyard/gh-actions/e2e@release-0.9
with:
using: ${{ matrix.cable_driver }} ${{ matrix.globalnet }} ${{ matrix.lighthouse }}
- name: Post mortem
if: failure()
uses: submariner-io/shipyard/gh-actions/post-mortem@release-0.9
+52
View File
@@ -0,0 +1,52 @@
---
name: Linting
on:
pull_request:
jobs:
gitlint:
name: Commit Message(s)
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Run gitlint
run: make gitlint
markdown-link-check:
name: Markdown Links (modified files)
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Run markdown-link-check
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
config-file: ".markdownlinkcheck.json"
check-modified-files-only: "yes"
base-branch: ${{ github.base_ref }}
markdownlint:
name: Markdown
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Run markdownlint
run: make markdownlint
yaml-lint:
name: YAML
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Run yamllint
uses: ibiqlik/action-yamllint@v1
with:
file_or_dir: submariner-k8s-broker/Chart.yaml submariner-k8s-broker/values.yaml submariner-operator/Chart.yaml submariner-operator/values.yaml
config_file: .yamllint.yml
+27
View File
@@ -0,0 +1,27 @@
---
name: Periodic
on:
schedule:
- cron: "0 0 * * 0"
jobs:
markdown-link-check-periodic:
name: Markdown Links (all files)
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Run markdown-link-check
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
config-file: ".markdownlinkcheck.json"
- name: Raise an Issue to report broken links
if: ${{ failure() }}
uses: peter-evans/create-issue-from-file@v2.3.2
with:
title: Broken link detected by CI
content-filepath: .github/ISSUE_TEMPLATE/broken-link.md
labels: automated, broken link
+32
View File
@@ -0,0 +1,32 @@
---
name: Release Charts
on:
push:
branches:
- release-0.9
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Update the charts
run: |
make release
- name: Push the charts
run: |
git add charts/*
git commit -m "Chart update"
git push
+4 -1
View File
@@ -1,2 +1,5 @@
.dapper
.idea
*.tgz
.shflags
*.tgz
Makefile.dapper
+9
View File
@@ -0,0 +1,9 @@
[general]
# body-is-missing: Allow commit messages with only a title
# body-min-length: Allow short body lines, like "Relates-to: #issue"
ignore=body-is-missing,body-min-length
[ignore-by-body]
# Dependabot doesn't follow our conventions, unfortunately
regex=^Signed-off-by: dependabot\[bot\](.*)
ignore=all
+10
View File
@@ -0,0 +1,10 @@
{
"ignorePatterns": [
{
"pattern": "^https://github.com/\\S+/\\S+/(issues|pull)/[0-9]+"
},
{
"pattern": "^http://localhost:"
}
]
}
+12
View File
@@ -0,0 +1,12 @@
---
# Breaks reusing MD snippets extracted to files
first-line-heading: false
# Set maximum line Length to 140c to match Go linting
line-length:
line_length: 140
# Allow HTML span elements to set font sizes
no-inline-html:
allowed_elements:
- span
-46
View File
@@ -1,46 +0,0 @@
language: python
env:
global:
- HELM_URL=https://storage.googleapis.com/kubernetes-helm
- HELM_TGZ=helm-v2.14.3-linux-amd64.tar.gz
- TARGET_BR=gh-pages
- GH_URL=https://submariner-io.github.io/submariner-charts/charts
- CHARTS_DIR=charts
- YAMLLINT_VERSION=1.17.0
install:
- wget -q ${HELM_URL}/${HELM_TGZ}
- tar xzfv ${HELM_TGZ}
- PATH=`pwd`/linux-amd64/:$PATH
- helm init --client-only
- sudo pip install yamllint=="${YAMLLINT_VERSION}"
script:
- for dir in submariner submariner-k8s-broker; do helm lint $dir; done
- yamllint -c .yamllint.yml -s $(find . -type f -name "Chart.yaml")
- yamllint -c .yamllint.yml -s $(find . -type f -name "values.yaml")
after_success:
- >
if [ $TRAVIS_BRANCH = 'master' ] && [ $TRAVIS_PULL_REQUEST = 'false' ]; then
set -e
for dir in submariner submariner-k8s-broker; do
helm dep update $dir
helm package $dir
done
REPO_URL=`git config remote.origin.url`
git clone ${REPO_URL} out && cd out && git checkout gh-pages && mkdir -p ${CHARTS_DIR}
cp -f ../submariner-*.tgz ${CHARTS_DIR}/
if [ -f charts/index.yaml ]; then
helm repo index ${CHARTS_DIR} --url ${GH_URL} --merge index.yaml
else
helm repo index ${CHARTS_DIR} --url ${GH_URL}
fi
git config user.name "Travis CI"
git config user.email "travis@travis-ci.org"
git add -f ${CHARTS_DIR}/*
git commit -m "Travis build: $TRAVIS_BUILD_NUMBER"
git remote add origin-pages https://${GH_TOKEN}@github.com/submariner-io/submariner-charts.git > /dev/null 2>&1
git push --quiet -f -u origin-pages gh-pages
fi
+3
View File
@@ -0,0 +1,3 @@
# Code of Conduct
Please see the [Code of Conduct docs on Submariner's website](https://submariner.io/community/code-of-conduct/).
+1
View File
@@ -0,0 +1 @@
* @mangelajo @Oats87 @skitt @tpantelis
+3
View File
@@ -0,0 +1,3 @@
# Contributing
Please see the [Development docs on Submariner's website](https://submariner.io/development/).
+16
View File
@@ -0,0 +1,16 @@
ARG BASE_BRANCH
FROM quay.io/submariner/shipyard-dapper-base:release-0.9
ARG DAPPER_HOST_ARCH
ENV HOST_ARCH=${DAPPER_HOST_ARCH} ARCH=${DAPPER_HOST_ARCH} \
DAPPER_ENV="REPO TAG QUAY_USERNAME QUAY_PASSWORD GITHUB_SHA MAKEFLAGS CLUSTERS_ARGS DEPLOY_ARGS E2E_ARGS RELEASE_ARGS" \
DAPPER_SOURCE=/go/src/github.com/submariner-io/submariner-charts DAPPER_DOCKER_SOCKET=true
ENV DAPPER_OUTPUT=${DAPPER_SOURCE}/output PATH=${DAPPER_SOURCE}/bin/:${PATH}
WORKDIR ${DAPPER_SOURCE}
# Override the Helm deployment scripts
COPY deploy_helm /opt/shipyard/scripts/lib/
ENTRYPOINT ["/opt/shipyard/scripts/entry"]
CMD ["sh"]
+69
View File
@@ -0,0 +1,69 @@
BASE_BRANCH ?= release-0.9
export BASE_BRANCH
ifneq (,$(DAPPER_HOST_ARCH))
# Running in Dapper
PRELOAD_IMAGES := submariner-gateway submariner-operator submariner-route-agent lighthouse-agent lighthouse-coredns
include $(SHIPYARD_DIR)/Makefile.inc
CLUSTER_SETTINGS_FLAG = --cluster_settings $(DAPPER_SOURCE)/cluster_settings
ifneq (,$(filter ovn,$(_using)))
CLUSTER_SETTINGS_FLAG = --cluster_settings $(DAPPER_SOURCE)/cluster_settings.ovn
else
CLUSTER_SETTINGS_FLAG = --cluster_settings $(DAPPER_SOURCE)/cluster_settings
endif
override CLUSTERS_ARGS += $(CLUSTER_SETTINGS_FLAG)
override DEPLOY_ARGS += $(CLUSTER_SETTINGS_FLAG) --deploytool helm
export DEPLOY_ARGS
GH_URL=https://submariner-io.github.io/submariner-charts/charts
CHARTS_DIR=charts
CHARTS_VERSION=0.7.0
REPO_URL=$(shell git config remote.origin.url)
# Process extra flags from the `using=a,b,c` optional flag
ifneq (,$(filter lighthouse,$(_using)))
override DEPLOY_ARGS += --service_discovery
endif
ifneq (,$(filter globalnet,$(_using)))
override DEPLOY_ARGS += --globalnet
endif
# Targets to make
e2e: E2E_ARGS=cluster1 cluster2
%.tgz:
helm dep update $(subst -$(CHARTS_VERSION),,$(basename $(@F)))
helm package --version $(CHARTS_VERSION) $(subst -$(CHARTS_VERSION),,$(basename $(@F)))
release: submariner-k8s-broker-$(CHARTS_VERSION).tgz submariner-operator-$(CHARTS_VERSION).tgz
git checkout gh-pages
mv *.tgz $(CHARTS_DIR)
if [ -f $(CHARTS_DIR)/index.yaml ]; then \
helm repo index $(CHARTS_DIR) --url $(GH_URL) --merge $(CHARTS_DIR)/index.yaml; \
else \
helm repo index $(CHARTS_DIR) --url $(GH_URL); \
fi
.PHONY: release
else
# Not running in Dapper
Makefile.dapper:
@echo Downloading $@
@curl -sfLO https://raw.githubusercontent.com/submariner-io/shipyard/$(BASE_BRANCH)/$@
include Makefile.dapper
endif
# Disable rebuilding Makefile
Makefile Makefile.inc: ;
+21 -81
View File
@@ -1,17 +1,17 @@
# submariner-charts
Please see https://github.com/submariner-io/submariner for more information. This is only a supporting repository for Submariner
Please see the [Helm docs on Submariner's website](https://submariner.io/operations/deployment/helm/).
# Dev workflow.
## Development workflow
### Prerequisites
- [helm]
- [docker] or [podman]
- [Helm] v3
- [Docker] or [Podman]
### Create a fork and checkout.
### Create a fork and checkout
[Create a fork] of the original repository, clone it locally and checkout a new branch from master.
[Create a fork] of the original repository, clone it locally and checkout a new branch from master.
Example:
@@ -21,96 +21,36 @@ cd submariner-charts
git checkout -b new-feature
```
Now you can modify the helm charts according to your needs.
### Serve the modified charts
Before serving the modified charts, the charts must be packaged for local usage.
```bash
helm package ./submariner
helm package ./submariner-k8s-broker
```
Note: if you just installed helm, you have to init the helm, by running
```bash
helm init --client-only
```
Serve the packaged charts through a local helm repository:
```bash
docker run -d --rm --name helm-repo -p 8080:8080 -v $PWD:/charts -e DEBUG=true -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts chartmuseum/chartmuseum
```
or
```bash
sudo podman run -d --rm --name helm-repo -p 8080:8080 -v $PWD:/charts -e DEBUG=true -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts chartmuseum/chartmuseum
```
Get the container internal ip:
```bash
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' helm-repo
```
The local container will serve the charts locally on port 8080.
Get logs for the container:
```bash
docker logs -f helm-repo
```
Now you can modify the Helm charts according to your needs.
### Use the modified charts
Init helm
Locally-modified charts can be installed using `helm install`,
referring to the local path; for example:
```bash
helm init --client-only
helm install submariner-k8s-broker ./submariner-k8s-broker ...
```
Add your local repository to helm
In the base directory of this repository, a local deployment using the
local charts can be obtained by running the following command:
```bash
internal_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' helm-repo)
helm repo add test-repo http://$internal_ip:8080
make deploy
```
List the repos:
This will start two kind clusters and deploy Submariner using the
Broker and Operator charts.
```bash
helm repo list
make e2e
```
You should be able to see test-repo in the list
Search the new repo for submariner charts:
```bash
helm search -l test-repo
```
### Modify submariner e2e tests helm deployment script to use your local test-repo.
You can test your helm-charts with e2e tests from the [shipyard](https://github.com/submariner-io/shipyard) repository.
In the file `scripts/shared/lib/deploy_helm` change the line from:
```bash
helm repo add submariner-latest https://submariner-io.github.io/submariner-charts/charts
```
to
```bash
internal_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' helm-repo)
helm repo add submariner-latest http://$internal_ip:8080
```
will run the end-to-end test suite used to validate that Submariner is
working correctly.
<!--links-->
[helm]: https://helm.sh/docs/using_helm/#installing-helm
[docker]: https://docs.docker.com/install/
[podman]: https://podman.io/getting-started/installation
[Helm]: https://helm.sh/docs/using_helm/#installing-helm
[Docker]: https://docs.docker.com/install/
[Podman]: https://podman.io/getting-started/installation
[Create a fork]: https://help.github.com/en/articles/fork-a-repo
+10
View File
@@ -0,0 +1,10 @@
. "${SCRIPTS_DIR}"/lib/source_only
# We need a minimal setup to verify the deployment works
clusters=('cluster1' 'cluster2')
cluster_nodes['cluster1']="control-plane worker"
cluster_nodes['cluster2']="control-plane worker"
cluster_cni=( ['cluster1']="weave" ['cluster2']="weave" )
cluster_subm=( ['cluster1']="true" ['cluster2']="true" )
+10
View File
@@ -0,0 +1,10 @@
. "${SCRIPTS_DIR}"/lib/source_only
# We need a minimal setup to verify the deployment works
clusters=('cluster1' 'cluster2')
cluster_nodes['cluster1']="control-plane worker worker"
cluster_nodes['cluster2']="control-plane worker worker"
cluster_cni=( ['cluster1']="ovn" ['cluster2']="ovn" )
cluster_subm=( ['cluster1']="true" ['cluster2']="true" )
+76
View File
@@ -0,0 +1,76 @@
# shellcheck shell=bash
# shellcheck source=scripts/shared/lib/source_only
. "${BASH_SOURCE%/*}"/source_only
### Constants ###
readonly SUBMARINER_BROKER_NS=submariner-k8s-broker
readonly SUBMARINER_PSK=$(LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 64 | head -n 1)
### Functions ###
function deploytool_prereqs() {
helm version
}
function setup_broker() {
if kubectl get crd clusters.submariner.io > /dev/null 2>&1; then
echo "Submariner CRDs already exist, skipping broker creation..."
else
echo "Installing submariner broker..."
# shellcheck disable=SC2086 # Split on purpose
helm install "${SUBMARINER_BROKER_NS}" ./submariner-k8s-broker \
--create-namespace \
--kube-context "${cluster}" \
--namespace "${SUBMARINER_BROKER_NS}" \
${deploytool_broker_args}
fi
submariner_broker_url=$(kubectl -n default get endpoints kubernetes -o jsonpath="{.subsets[0].addresses[0].ip}:{.subsets[0].ports[?(@.name=='https')].port}")
submariner_broker_ca=$(kubectl -n "${SUBMARINER_BROKER_NS}" get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='${SUBMARINER_BROKER_NS}-client')].data['ca\.crt']}")
submariner_broker_token=$(kubectl -n "${SUBMARINER_BROKER_NS}" get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='${SUBMARINER_BROKER_NS}-client')].data.token}"|base64 --decode)
}
function helm_install_subm() {
local crd_create=false
[[ "${cluster}" = "${broker}" ]] || crd_create=true
if kubectl wait --for=condition=Ready pods -l app=submariner-operator -n "${SUBM_NS}" --timeout=60s > /dev/null 2>&1; then
echo "Submariner already installed, skipping installation..."
return
fi
echo "Installing Submariner..."
# shellcheck disable=SC2086 # Split on purpose
helm --kube-context "${cluster}" install submariner-operator \
./submariner-operator \
--create-namespace \
--namespace "${SUBM_NS}" \
--set ipsec.psk="${SUBMARINER_PSK}" \
--set broker.server="${submariner_broker_url}" \
--set broker.token="${submariner_broker_token}" \
--set broker.namespace="${SUBMARINER_BROKER_NS}" \
--set broker.ca="${submariner_broker_ca}" \
--set broker.globalnet="${globalnet}" \
--set submariner.serviceDiscovery="${service_discovery}" \
--set submariner.cableDriver="${cable_driver}" \
--set submariner.clusterId="${cluster}" \
--set submariner.clusterCidr="${cluster_CIDRs[$cluster]}" \
--set submariner.serviceCidr="${service_CIDRs[$cluster]}" \
--set submariner.globalCidr="${global_CIDRs[$cluster]}" \
--set serviceAccounts.globalnet.create="${globalnet}" \
--set serviceAccounts.lighthouseAgent.create="${service_discovery}" \
--set serviceAccounts.lighthouseCoreDns.create="${service_discovery}" \
--set submariner.natEnabled="false" \
--set operator.image.repository="localhost:5000/submariner-operator" \
--set operator.image.tag="local" \
--set operator.image.pullPolicy="IfNotPresent" \
--set submariner.images.repository="localhost:5000" \
--set submariner.images.tag="local" \
--set brokercrds.create="${crd_create}" \
${deploytool_submariner_args}
}
function install_subm_all_clusters() {
run_subm_clusters helm_install_subm
}
+5 -5
View File
@@ -1,12 +1,12 @@
---
name: submariner-k8s-broker
version: 0.0.1
appVersion: v0.0.1
version: 0.6.0
appVersion: 0.6.0
description: Submariner Kubernetes Broker
keywords:
home: https://submariner.io/
home: https://submariner-io.github.io/
sources:
- https://submariner-io.github.io/submariner-charts/charts
maintainers:
- name: Rancher Labs
email: charts@rancher.com
- name: Submariner Developers
email: submariner-dev@googlegroups.com
+324
View File
@@ -0,0 +1,324 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: clusters.submariner.io
spec:
group: submariner.io
version: v1
names:
kind: Cluster
plural: clusters
scope: Namespaced
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: endpoints.submariner.io
spec:
group: submariner.io
version: v1
names:
kind: Endpoint
plural: endpoints
scope: Namespaced
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: gateways.submariner.io
spec:
group: submariner.io
version: v1
names:
kind: Gateway
plural: gateways
scope: Namespaced
additionalPrinterColumns:
- name: ha-status
type: string
description: High Availability Status of the Gateway
JSONPath: .status.haStatus
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: multiclusterservices.lighthouse.submariner.io
spec:
group: lighthouse.submariner.io
version: v1
names:
kind: MultiClusterService
plural: multiclusterservices
singular: multiclusterservice
scope: Namespaced
validation:
openAPIV3Schema:
properties:
spec:
properties:
clusterServiceInfo:
properties:
clusterID:
type: "string"
clusterDomain:
type: "string"
serviceIP:
type: "string"
port:
type: "integer"
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: serviceexports.lighthouse.submariner.io
spec:
group: lighthouse.submariner.io
version: v2alpha1
names:
kind: ServiceExport
plural: serviceexports
singular: serviceexport
scope: Namespaced
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: serviceimports.lighthouse.submariner.io
spec:
group: lighthouse.submariner.io
version: v2alpha1
names:
kind: ServiceImport
plural: serviceimports
singular: serviceimport
scope: Namespaced
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: serviceexports.multicluster.x-k8s.io
spec:
group: multicluster.x-k8s.io
scope: Namespaced
names:
plural: serviceexports
singular: serviceexport
kind: ServiceExport
shortNames:
- svcex
versions:
- name: v1alpha1
served: true
storage: true
subresources:
status: {}
additionalPrinterColumns:
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
"schema":
"openAPIV3Schema":
description: ServiceExport declares that the Service with the same name and
namespace as this export should be consumable from other clusters.
type: object
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
status:
description: status describes the current state of an exported service.
Service configuration comes from the Service that had the same name
and namespace as this ServiceExport. Populated by the multi-cluster
service implementation's controller.
type: object
properties:
conditions:
type: array
items:
description: "ServiceExportCondition contains details for the current
condition of this service export. \n Once [KEP-1623](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1623-standardize-conditions)
is implemented, this will be replaced by metav1.Condition."
type: object
required:
- status
- type
properties:
lastTransitionTime:
type: string
format: date-time
message:
type: string
reason:
type: string
status:
description: Status is one of {"True", "False", "Unknown"}
type: string
enum:
- "True"
- "False"
- Unknown
type:
description: ServiceExportConditionType identifies a specific
condition.
type: string
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: serviceimports.multicluster.x-k8s.io
spec:
group: multicluster.x-k8s.io
scope: Namespaced
names:
plural: serviceimports
singular: serviceimport
kind: ServiceImport
shortNames:
- svcim
versions:
- name: v1alpha1
served: true
storage: true
subresources:
status: {}
additionalPrinterColumns:
- name: Type
type: string
description: The type of this ServiceImport
jsonPath: .spec.type
- name: IP
type: string
description: The VIP for this ServiceImport
jsonPath: .spec.ips
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
"schema":
"openAPIV3Schema":
description: ServiceImport describes a service imported from clusters in a
ClusterSet.
type: object
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: spec defines the behavior of a ServiceImport.
type: object
required:
- ports
- type
properties:
ips:
description: ip will be used as the VIP for this service when type
is ClusterSetIP.
type: array
maxItems: 1
items:
type: string
ports:
type: array
items:
description: ServicePort represents the port on which the service
is exposed
type: object
required:
- port
properties:
appProtocol:
description: The application protocol for this port. This field
follows standard Kubernetes label syntax. Un-prefixed names
are reserved for IANA standard service names (as per RFC-6335
and http://www.iana.org/assignments/service-names). Non-standard
protocols should use prefixed names such as mycompany.com/my-custom-protocol.
Field can be enabled with ServiceAppProtocol feature gate.
type: string
name:
description: The name of this port within the service. This
must be a DNS_LABEL. All ports within a ServiceSpec must have
unique names. When considering the endpoints for a Service,
this must match the 'name' field in the EndpointPort. Optional
if only one ServicePort is defined on this service.
type: string
port:
description: The port that will be exposed by this service.
type: integer
format: int32
protocol:
description: The IP protocol for this port. Supports "TCP",
"UDP", and "SCTP". Default is TCP.
type: string
x-kubernetes-list-type: atomic
sessionAffinity:
description: 'Supports "ClientIP" and "None". Used to maintain session
affinity. Enable client IP based session affinity. Must be ClientIP
or None. Defaults to None. Ignored when type is Headless More info:
https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
type: string
sessionAffinityConfig:
description: sessionAffinityConfig contains session affinity configuration.
type: object
properties:
clientIP:
description: clientIP contains the configurations of Client IP
based session affinity.
type: object
properties:
timeoutSeconds:
description: timeoutSeconds specifies the seconds of ClientIP
type session sticky time. The value must be >0 && <=86400(for
1 day) if ServiceAffinity == "ClientIP". Default value is
10800(for 3 hours).
type: integer
format: int32
type:
description: type defines the type of this service. Must be ClusterSetIP
or Headless.
type: string
enum:
- ClusterSetIP
- Headless
status:
description: status contains information about the exported services that
form the multi-cluster service referenced by this ServiceImport.
type: object
properties:
clusters:
description: clusters is the list of exporting clusters from which
this service was derived.
type: array
items:
description: ClusterStatus contains service configuration mapped
to a specific source cluster
type: object
required:
- cluster
properties:
cluster:
description: cluster is the name of the exporting cluster. Must
be a valid RFC-1123 DNS label.
type: string
x-kubernetes-list-map-keys:
- cluster
x-kubernetes-list-type: map
-29
View File
@@ -1,29 +0,0 @@
{{- if .Values.crd.create -}}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: clusters.submariner.io
annotations:
"helm.sh/hook": crd-install
spec:
group: submariner.io
version: v1
names:
kind: Cluster
plural: clusters
scope: Namespaced
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: endpoints.submariner.io
annotations:
"helm.sh/hook": crd-install
spec:
group: submariner.io
version: v1
names:
kind: Endpoint
plural: endpoints
scope: Namespaced
{{- end -}}
@@ -12,6 +12,15 @@ rules:
- apiGroups: ["submariner.io"]
resources: ["clusters", "endpoints"]
verbs: ["create", "get", "list", "watch", "patch", "update", "delete"]
- apiGroups: ["lighthouse.submariner.io"]
resources: ["*"]
verbs: ["create", "get", "list", "watch", "patch", "update", "delete"]
- apiGroups: ["discovery.k8s.io"]
resources: ["endpointslices"]
verbs: ["create", "get", "list", "watch","patch", "update", "delete"]
- apiGroups: ["multicluster.x-k8s.io"]
resources: ["*"]
verbs: ["create", "get", "list", "watch", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
+12
View File
@@ -0,0 +1,12 @@
---
name: submariner-operator
version: 0.7.0
appVersion: 0.7.0
description: Submariner enables direct networking between Pods and Services in different Kubernetes clusters
keywords:
home: https://submariner-io.github.io/
sources:
- https://submariner-io.github.io/submariner-charts/charts
maintainers:
- name: Submariner Developers
email: submariner-dev@googlegroups.com
+5
View File
@@ -0,0 +1,5 @@
# Submariner
[Submariner](https://submariner.io) is a cross-cluster networking tool.
This chart creates the required components in this cluster to deploy the Submariner operator.
+877
View File
@@ -0,0 +1,877 @@
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: submariners.submariner.io
annotations:
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
gatewayDaemonSetStatus:
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: []
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.3.0
creationTimestamp: null
name: servicediscoveries.submariner.io
spec:
group: submariner.io
names:
kind: ServiceDiscovery
listKind: ServiceDiscoveryList
plural: servicediscoveries
singular: servicediscovery
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: ServiceDiscovery is the Schema for the servicediscoveries 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: ServiceDiscoverySpec defines the desired state of ServiceDiscovery
properties:
brokerK8sApiServer:
type: string
brokerK8sApiServerToken:
type: string
brokerK8sCA:
type: string
brokerK8sRemoteNamespace:
type: string
clusterID:
type: string
customDomains:
items:
type: string
type: array
x-kubernetes-list-type: set
debug:
type: boolean
globalnetEnabled:
type: boolean
imageOverrides:
additionalProperties:
type: string
type: object
namespace:
type: string
repository:
type: string
version:
type: string
required:
- brokerK8sApiServer
- brokerK8sApiServerToken
- brokerK8sCA
- brokerK8sRemoteNamespace
- clusterID
- debug
- namespace
type: object
status:
description: ServiceDiscoveryStatus defines the observed state of ServiceDiscovery
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.3.0
creationTimestamp: null
name: brokers.submariner.io
spec:
group: submariner.io
names:
kind: Broker
listKind: BrokerList
plural: brokers
singular: broker
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Broker is the Schema for the brokers 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: BrokerSpec defines the desired state of Broker
properties:
components:
items:
type: string
type: array
defaultCustomDomains:
items:
type: string
type: array
defaultGlobalnetClusterSize:
type: integer
globalnetCIDRRange:
type: string
globalnetEnabled:
type: boolean
type: object
status:
description: BrokerStatus defines the observed state of Broker
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
@@ -1,46 +1,40 @@
questions:
- variable: defaultEngineImage
- variable: defaultOperatorImage
default: true
description: "Use default Submariner Engine image or specify a custom one"
label: Use default submariner engine image
description: "Use default Submariner operator image or specify a custom one"
label: Use default Submariner operator image
type: boolean
show_subquestion_if: false
group: "Container Images"
subquestions:
- variable: engine.image.repository
default: "rancher/submariner"
description: "Submariner Engine Image Repository"
- variable: operator.image.repository
default: "quay.io/submariner/submariner-operator"
description: "Submariner Operator Image Repository"
type: string
label: Submariner Engine Image Repository
- variable: engine.image.tag
default: "v0.0.2"
description: "Submariner Engine Image Tag"
label: Submariner Operator Image Repository
- variable: operator.image.tag
default: "0.7.0"
description: "Submariner Operator Image Tag"
type: string
label: Submariner Engine Image Tag
- variable: defaultRouteAgentImage
label: Submariner Operator Image Tag
- variable: defaultSubmarinerImages
default: true
description: "Use default Submariner Route Agent image or specify a custom one"
label: Use default submariner route agent image
description: "Use default Submariner images or specify custom ones"
label: Use default Submariner images
type: boolean
show_subquestion_if: false
group: "Container Images"
group: "Container images"
subquestions:
- variable: routeAgent.image.repository
default: "rancher/submariner-route-agent"
description: "Submariner Route Agent Image Repository"
- variable: submariner.images.repository
default: "quay.io/submariner"
description: "Submariner Repository (base for all non-operator images)"
type: string
label: Submariner Route Agent Image Repository
- variable: routeAgent.image.tag
default: "v0.0.2"
description: "Submariner Route Agent Image Tag"
label: Submariner Repository
- variable: submariner.images.tag
default: "0.7.0"
description: "Submariner Images Tag (shared for all non-operator images)"
type: string
label: Submariner Route Agent Image Tag
- variable: engine.nodeSelectorEnabled
default: true
description: "Restrict submariner to nodes labeled with submariner.io/gateway=true"
label: Restrict gateway deployments to specific nodes
type: boolean
group: "Gateway Configuration"
label: Submariner Images Tag
- variable: submariner.clusterId
default: ""
description: "Enter a unique cluster ID to identify this cluster"
@@ -55,14 +49,6 @@ questions:
label: "IPsec Pre-Shared Key"
group: "Configuration"
required: true
- variable: broker.type
type: enum
default: k8s
options:
- k8s
group: "Broker Configuration"
label: "Broker Type"
description: "Type of Broker to use"
- variable: broker.server
type: string
default: ""
@@ -106,18 +92,32 @@ questions:
label: "Service CIDR"
group: "CIDR Configuration"
required: true
- variable: submariner.serviceDiscovery
type: boolean
default: false
group: "Advanced Configuration"
description: "Enable multicluster service discovery"
label: "Service Discovery Enabled"
- variable: broker.globalnet
type: boolean
default: false
group: "Broker Configuration"
description: "Enable support for overlapping Cluster/Service CIDRs in connecting clusters"
label: "Globalnet Enabled"
subquestions:
- variable: submariner.globalCidr
default: ""
description: "Enter the globalnet CIDR (i.e. 169.254.1.0/24) for this cluster if using globalnet"
type: string
label: "Globalnet CIDR"
group: "CIDR Configuration"
required: false
- variable: submariner.natEnabled
type: boolean
default: false
group: "Advanced Configuration"
description: "If the gateway nodes for this cluster are behind 1:1 NAT, you should enable NAT"
label: "NAT Enabled"
- variable: crd.create
type: boolean
default: true
group: "Advanced Configuration"
description: "Create the Submariner CRDs, if deploying Submariner into the same cluster as the submariner-k8s-broker, you probably shouldn't create CRDs"
label: "CRD Creation Enabled"
- variable: submariner.debug
type: boolean
default: false
@@ -130,3 +130,9 @@ questions:
group: "Advanced Configuration"
description: "Enable Charon debug mode"
label: "Charon Enabled"
- variable: submariner.cableDriver
type: string
default: ""
group: "Advanced Configuration"
description: "Cable driver implementation"
label: "Cable Driver"
@@ -1,6 +1,6 @@
Submariner is now installed.
{{- if .Values.engine.nodeSelectorEnabled }}
{{- if .Values.gateway.nodeSelectorEnabled }}
If you haven't done so yet, please label a node as `submariner.io/gateway=true` to elect it for running Submariner.
{{- end }}
+105
View File
@@ -0,0 +1,105 @@
{{/* 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-gateway service account to use
*/}}
{{- define "submariner.gatewayServiceAccountName" -}}
{{- if .Values.serviceAccounts.gateway.create -}}
{{ default "submariner-gateway" .Values.serviceAccounts.gateway.name }}
{{- else -}}
{{ default "default" .Values.serviceAccounts.gateway.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the submariner-route-agent service account to use
*/}}
{{- define "submariner.routeAgentServiceAccountName" -}}
{{- if .Values.serviceAccounts.routeAgent.create -}}
{{ default "submariner-routeagent" .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 "submariner-globalnet" .Values.serviceAccounts.globalnet.name }}
{{- else -}}
{{ default "default" .Values.serviceAccounts.globalnet.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the submariner-lighthouse-agent service account to use
*/}}
{{- define "submariner.lighthouseAgentServiceAccountName" -}}
{{- if and (.Values.submariner.serviceDiscovery ) (.Values.serviceAccounts.lighthouseAgent.create) -}}
{{ default "submariner-lighthouse-agent" .Values.serviceAccounts.lighthouseAgent.name }}
{{- else -}}
{{ default "default" .Values.serviceAccounts.lighthouseAgent.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the submariner-lighthouse-coredns service account to use
*/}}
{{- define "submariner.lighthouseCoreDnsServiceAccountName" -}}
{{- if and (.Values.submariner.serviceDiscovery ) (.Values.serviceAccounts.lighthouseCoreDns.create) -}}
{{ default "submariner-lighthouse-coredns" .Values.serviceAccounts.lighthouseCoreDns.name }}
{{- else -}}
{{ default "default" .Values.serviceAccounts.lighthouseCoreDns.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,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: gateway
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
+829
View File
@@ -0,0 +1,829 @@
{{- 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.operatorServiceAccountName" . }}
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" . }}:gateway
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:
- submariner-operator
resources:
- deployments/finalizers
verbs:
- update
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- apiGroups:
- apps
resources:
- replicasets
verbs:
- get
- apiGroups:
- submariner.io
resources:
- '*'
- servicediscoveries
verbs:
- '*'
- apiGroups:
- lighthouse.submariner.io
resources:
- '*'
- serviceexports
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ template "submariner.fullname" . }}:gateway
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" . }}:gateway
subjects:
- kind: ServiceAccount
name: {{ template "submariner.gatewayServiceAccountName" . }}
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:
- ""
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:
- submariner-operator
resources:
- deployments/finalizers
verbs:
- update
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- apiGroups:
- apps
resources:
- replicasets
verbs:
- get
- apiGroups:
- submariner.io
resources:
- '*'
- servicediscoveries
verbs:
- '*'
- apiGroups:
- lighthouse.submariner.io
resources:
- '*'
- serviceexports
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
---
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.routeAgentServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
{{- if .Values.broker.globalnet }}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
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:
- 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:
- submariner-operator
resources:
- deployments/finalizers
verbs:
- update
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- apiGroups:
- apps
resources:
- replicasets
verbs:
- get
- apiGroups:
- submariner.io
resources:
- '*'
- servicediscoveries
verbs:
- '*'
- apiGroups:
- lighthouse.submariner.io
resources:
- '*'
- serviceexports
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
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: Role
name: {{ template "submariner.fullname" . }}:globalnet
subjects:
- kind: ServiceAccount
name: {{ template "submariner.globalnetServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
{{- end -}}
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
---
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" . }}:gateway
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.name" . }}
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- 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
- nodes
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:
- submariner.io
resources:
- endpoints
- gateways
- clusters
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ template "submariner.fullname" . }}:gateway
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" . }}:gateway
subjects:
- kind: ServiceAccount
name: {{ template "submariner.gatewayServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
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:
- 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:
- ""
verbs:
- get
- list
- watch
- update
resources:
- nodes
---
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.routeAgentServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
{{- if .Values.broker.globalnet }}
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:
- pods
- services
- namespaces
- nodes
verbs:
- get
- list
- watch
- update
- apiGroups:
- submariner.io
resources:
- endpoints
- clusters
verbs:
- get
- list
- watch
- apiGroups:
- multicluster.x-k8s.io
resources:
- "serviceexports"
verbs:
- get
- list
- watch
---
{{- end -}}
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.globalnetServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
{{- if .Values.submariner.serviceDiscovery }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "submariner.fullname" . }}:lighthouse-agent
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.name" . }}
rules:
- apiGroups:
- ""
resources:
- services
- namespaces
- endpoints
verbs:
- get
- list
- watch
- update
- apiGroups:
- discovery.k8s.io
resources:
- endpointslices
verbs:
- create
- get
- list
- watch
- update
- delete
- deletecollection
- apiGroups:
- submariner.io
resources:
- "gateways"
verbs:
- get
- list
- watch
- 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" . }}:lighthouse-agent
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-agent
subjects:
- kind: ServiceAccount
name: {{ template "submariner.lighthouseAgentServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "submariner.fullname" . }}:lighthouse-coredns
rules:
- apiGroups:
- ""
resources:
- services
- namespaces
- endpoints
verbs:
- get
- list
- watch
- update
- apiGroups:
- discovery.k8s.io
resources:
- endpointslices
verbs:
- create
- get
- list
- watch
- update
- delete
- deletecollection
- apiGroups:
- lighthouse.submariner.io
resources:
- "*"
verbs:
- create
- get
- list
- watch
- update
- delete
- apiGroups:
- submariner.io
resources:
- "gateways"
verbs:
- get
- list
- watch
- 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" . }}:lighthouse-coredns
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "submariner.fullname" . }}:lighthouse-coredns
subjects:
- kind: ServiceAccount
name: {{ template "submariner.lighthouseCoreDnsServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
{{- end -}}
@@ -0,0 +1,27 @@
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 }}"
globalCIDR: "{{ .Values.submariner.globalCidr }}"
serviceDiscoveryEnabled: {{ .Values.submariner.serviceDiscovery }}
cableDriver: {{ .Values.submariner.cableDriver }}
@@ -0,0 +1,71 @@
{{- 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.gateway.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "submariner.gatewayServiceAccountName" . }}
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.lighthouseAgent.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "submariner.lighthouseAgentServiceAccountName" . }}
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.name" . }}
{{- end }}
---
{{- if .Values.serviceAccounts.lighthouseCoreDns.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "submariner.lighthouseCoreDnsServiceAccountName" . }}
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.name" . }}
{{- end }}
+64
View File
@@ -0,0 +1,64 @@
---
submariner:
clusterId: ""
token: ""
clusterCidr: ""
serviceCidr: ""
globalCidr: ""
natEnabled: false
colorCodes: blue
debug: false
serviceDiscovery: true
cableDriver: "libreswan"
images:
repository: quay.io/submariner
tag: "0.7.0"
broker:
server: example.k8s.apiserver
token: test
namespace: xyz
insecure: false
ca: ""
globalnet: false
rbac:
create: true
ipsec:
psk: ""
debug: false
ikePort: 500
natPort: 4500
leadership:
leaseDuration: 10
renewDeadline: 5
retryPeriod: 2
operator:
image:
repository: quay.io/submariner/submariner-operator
tag: "0.7.0"
pullPolicy: IfNotPresent
resources: {}
tolerations: []
affinity: {}
gateway:
image:
repository: quay.io/submariner/submariner-gateway
tag: "0.7.0"
serviceAccounts:
operator:
create: true
name: ""
gateway:
create: true
name: ""
routeAgent:
create: true
name: ""
globalnet:
create: true
name: ""
lighthouseAgent:
create: true
name: ""
lighthouseCoreDns:
create: true
name: ""
-12
View File
@@ -1,12 +0,0 @@
---
name: submariner
version: 0.0.3
appVersion: v0.0.3
description: k8s 1.16.x support
keywords:
home: https://submariner.io/
sources:
- https://submariner-io.github.io/submariner-charts/charts
maintainers:
- name: Rancher Labs
email: charts@rancher.com
-5
View File
@@ -1,5 +0,0 @@
# Submariner
[Submariner](https://submariner.io) is a cross-cluster networking tool.
This chart creates the required components in this cluster to enable cross cluster networking.
-65
View File
@@ -1,65 +0,0 @@
{{/* 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-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 -}}
-43
View File
@@ -1,43 +0,0 @@
{{- if .Values.crd.create -}}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: clusters.submariner.io
annotations:
"helm.sh/hook": crd-install
spec:
group: submariner.io
version: v1
names:
kind: Cluster
plural: clusters
scope: Namespaced
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: endpoints.submariner.io
annotations:
"helm.sh/hook": crd-install
spec:
group: submariner.io
version: v1
names:
kind: Endpoint
plural: endpoints
scope: Namespaced
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: gateways.submariner.io
annotations:
"helm.sh/hook": crd-install
spec:
group: submariner.io
version: v1
names:
kind: Gateway
plural: gateways
scope: Namespaced
{{- end -}}
-132
View File
@@ -1,132 +0,0 @@
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.fullname" . }}-engine
component: engine
name: {{ template "submariner.fullname" . }}-gateway
spec:
revisionHistoryLimit: 5
selector:
matchLabels:
app: {{ template "submariner.fullname" . }}-engine
strategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: {{ template "submariner.fullname" . }}-engine
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- {{ template "submariner.fullname" . }}-engine
topologyKey: "kubernetes.io/hostname"
{{- with .Values.engine.affinity }}
{{ toYaml . | indent 8 }}
{{- end }}
nodeSelector:
{{- if .Values.engine.nodeSelectorEnabled }}
submariner.io/gateway: "true"
{{- end }}
{{- with .Values.engine.nodeSelector }}
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.engine.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
containers:
- command:
- submariner.sh
env:
- name: SUBMARINER_NAMESPACE
value: "{{ .Release.Namespace }}"
- name: SUBMARINER_CLUSTERCIDR
value: "{{ .Values.submariner.clusterCidr }}"
- name: SUBMARINER_SERVICECIDR
value: "{{ .Values.submariner.serviceCidr }}"
- name: SUBMARINER_GLOBALCIDR
value: "{{ .Values.submariner.globalCidr }}"
- name: SUBMARINER_TOKEN
value: "{{ .Values.submariner.apiToken }}"
- name: SUBMARINER_CLUSTERID
value: "{{ .Values.submariner.clusterId }}"
- name: SUBMARINER_COLORCODES
value: "{{ .Values.submariner.colorCodes }}"
- name: SUBMARINER_DEBUG
value: "{{ .Values.submariner.debug }}"
- name: SUBMARINER_NATENABLED
value: "{{ .Values.submariner.natEnabled }}"
- name: SUBMARINER_BROKER
value: "{{ .Values.broker.type }}"
{{- if eq .Values.broker.type "phpapi" }}
- name: BROKER_PHPAPI_PROTO
value: "{{ .Values.broker.proto }}"
- name: BROKER_PHPAPI_SERVER
value: "{{ .Values.broker.server }}"
{{- end }}
{{- if eq .Values.broker.type "k8s" }}
- name: BROKER_K8S_APISERVER
value: "{{ .Values.broker.server }}"
- name: BROKER_K8S_APISERVERTOKEN
value: "{{ .Values.broker.token }}"
- name: BROKER_K8S_REMOTENAMESPACE
value: "{{ .Values.broker.namespace }}"
{{- if .Values.broker.insecure }}
- name: BROKER_K8S_INSECURE
value: "true"
{{- else }}
- name: BROKER_K8S_CA
value: "{{ .Values.broker.ca }}"
{{- end }}
{{- end }}
- name: CE_IPSEC_PSK
value: "{{ .Values.ipsec.psk }}"
- name: CE_IPSEC_DEBUG
value: "{{ .Values.ipsec.debug }}"
- name: CE_IPSEC_IKEPORT
value: "{{ .Values.ipsec.ikePort }}"
- name: CE_IPSEC_NATTPORT
value: "{{ .Values.ipsec.natPort }}"
- name: LEADERSHIP_LEASEDURATION
value: "{{ .Values.leadership.leaseDuration }}"
- name: LEADERSHIP_RENEWDEADLINE
value: "{{ .Values.leadership.renewDeadline }}"
- name: LEADERSHIP_RETRYPERIOD
value: "{{ .Values.leadership.retryPeriod }}"
image: {{ .Values.engine.image.repository }}:{{ .Values.engine.image.tag }}
imagePullPolicy: {{ .Values.engine.image.pullPolicy }}
name: submariner
resources:
{{ toYaml .Values.engine.resources | indent 10 }}
securityContext:
allowPrivilegeEscalation: true
capabilities:
add:
- ALL
privileged: true
readOnlyRootFilesystem: false
runAsNonRoot: false
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
dnsPolicy: ClusterFirst
hostNetwork: true
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 0
serviceAccountName: {{ template "submariner.engineServiceAccountName" . }}
-54
View File
@@ -1,54 +0,0 @@
{{- if ne .Values.submariner.globalCidr "" }}
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: {{ template "submariner.fullname" . }}-globalnet
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.fullname" . }}-globalnet
component: globalnet
spec:
selector:
matchLabels:
app: {{ template "submariner.fullname" . }}-globalnet
template:
metadata:
labels:
app: {{ template "submariner.fullname" . }}-globalnet
spec:
hostNetwork: true
serviceAccountName: submariner-globalnet
serviceAccount: submariner-globalnet
nodeSelector:
submariner.io/gateway: 'true'
containers:
- name: {{ template "submariner.fullname" . }}-globalnet
image: {{ .Values.globalnet.image.repository }}:{{ .Values.globalnet.image.tag }}
imagePullPolicy: {{ .Values.globalnet.image.pullPolicy }}
env:
- name: SUBMARINER_CLUSTERID
value: '{{ .Values.submariner.clusterId }}'
- name: SUBMARINER_EXCLUDENS
value: 'submariner,kube-system,operators'
- name: SUBMARINER_NAMESPACE
value: '{{ .Release.Namespace }}'
securityContext:
allowPrivilegeEscalation: true
capabilities:
add:
- ALL
privileged: true
readOnlyRootFilesystem: false
runAsNonRoot: false
volumeMounts:
# Because we don't actually run iptables locally, but chroot in to the host
- mountPath: /host
name: host-slash
readOnly: true
volumes:
- name: host-slash
hostPath:
path: /
{{- end }}
-113
View File
@@ -1,113 +0,0 @@
{{- if .Values.rbac.create -}}
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: 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" . }}:engine
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ template "submariner.fullname" . }}:engine
subjects:
- kind: ServiceAccount
name: {{ template "submariner.engineServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ template "submariner.fullname" . }}:routeagent
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ template "submariner.fullname" . }}:routeagent
subjects:
- kind: ServiceAccount
name: {{ template "submariner.routeAgentServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "submariner.fullname" . }}:routeagent
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ template "submariner.fullname" . }}:routeagent
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "submariner.fullname" . }}:routeagent
subjects:
- kind: ServiceAccount
name: {{ template "submariner.routeAgentServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
---
{{- if ne .Values.submariner.globalCidr "" }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "submariner.fullname" . }}:globalnet
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
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "submariner.fullname" . }}:globalnet
subjects:
- kind: ServiceAccount
name: {{ template "submariner.globalnetServiceAccountName" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
{{- end -}}
-74
View File
@@ -1,74 +0,0 @@
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: {{ template "submariner.fullname" . }}-routeagent
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.fullname" . }}-routeagent
component: routeagent
spec:
selector:
matchLabels:
app: {{ template "submariner.fullname" . }}-routeagent
template:
metadata:
labels:
heritage: {{ .Release.Service | quote }}
release: {{ .Release.Name | quote }}
chart: {{ template "submariner.chart" . }}
app: {{ template "submariner.fullname" . }}-routeagent
component: routeagent
spec:
serviceAccountName: {{ template "submariner.routeAgentServiceAccountName" . }}
terminationGracePeriodSeconds: 0
hostNetwork: true
containers:
- name: routeagent
command:
- submariner-route-agent.sh
image: {{ .Values.routeAgent.image.repository }}:{{ .Values.routeAgent.image.tag }}
imagePullPolicy: {{ .Values.routeAgent.image.pullPolicy }}
env:
- name: SUBMARINER_NAMESPACE
value: "{{ .Release.Namespace }}"
- name: SUBMARINER_CLUSTERID
value: "{{ .Values.submariner.clusterId }}"
- name: SUBMARINER_DEBUG
value: "{{ .Values.submariner.debug }}"
- name: SUBMARINER_CLUSTERCIDR
value: "{{ .Values.submariner.clusterCidr }}"
- name: SUBMARINER_SERVICECIDR
value: "{{ .Values.submariner.serviceCidr }}"
resources:
{{ toYaml .Values.routeAgent.resources | indent 10 }}
securityContext:
allowPrivilegeEscalation: true
capabilities:
add:
- ALL
privileged: true
readOnlyRootFilesystem: false
runAsNonRoot: false
volumeMounts:
# Because we don't actually run iptables locally, but chroot in to the host
- mountPath: /host
name: host-slash
readOnly: true
{{- with .Values.routeAgent.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.routeAgent.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.routeAgent.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
volumes:
- name: host-slash
hostPath:
path: /
-35
View File
@@ -1,35 +0,0 @@
{{- 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 }}
-70
View File
@@ -1,70 +0,0 @@
---
submariner:
clusterId: ""
token: ""
clusterCidr: "10.42.0.0/16"
serviceCidr: "10.43.0.0/16"
globalCidr: ""
natEnabled: false
colorCodes: blue
debug: false
crd:
create: true
broker:
type: k8s
server: example.k8s.apiserver
token: test
namespace: xyz
insecure: false
ca: ""
rbac:
create: true
ipsec:
psk: ""
debug: false
ikePort: 500
natPort: 4500
leadership:
leaseDuration: 5
renewDeadline: 3
retryPeriod: 2
engine:
image:
repository: rancher/submariner
tag: v0.0.2
pullPolicy: Always
resources: {}
# limits:
# cpu: 100m
# memory: 100Mi
nodeSelectorEnabled: true
nodeSelector: {}
tolerations: []
affinity: {}
routeAgent:
image:
repository: rancher/submariner-route-agent
tag: v0.0.2
pullPolicy: Always
resources: {}
# limits:
# cpu: 100m
# memory: 100Mi
nodeSelector: {}
tolerations: []
affinity: {}
globalnet:
image:
repository: submariner-globalnet
tag: local
pullPolicy: IfNotPresent
serviceAccounts:
engine:
create: true
name: ""
routeAgent:
create: true
name: ""
globalnet:
create: false
name: ""