On Openshift, the operator failed with error
"\"submariner-gateway\" is forbidden: cannot set blockOwnerDeletion
if an ownerReference refers to a resource you can't set finalizers on"
Openshift enables OwnerReferencesPermissionEnforcement, so
in order to set blockOwnerDeletion for an object, the user needs
update permission for the finalizers subresource of the referenced
owner. In this case the owner is the Submariner object.
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
Bump to the latest commit, which updates node from 12 to 16 in addition
to an actions/core update.
Relates-to: submariner-io/subctl#537
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Use the '--app-version' parameter to 'helm package' to dynamically
set the chart 'appVersion' field. We can then omit the hardcoded
'appVersion' field in the Chart.yaml file.
The chart 'version' field is also set by 'helm package' but we still
need to define it in the Chart.yaml file since 'help dep update'
requires it. The placeholder 'version' field is now set to 0.0.0 just
to give it some value.
For E2E, since the version fields are no longer hardcoded, it now
simulates a release by running 'helm package' and extracting the tar
files to HELM_REPO_LOCATION, now set to ./helm_repo.
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
There's no mention in the upstream helm docs about this file nor is
there any docs about interactive user prompting at all (that I can see).
Nor do we document any mechanism for user prompting. It would seem this
is an obsolete remnant from an earlier version of helm so let's remove
it. This also eliminates hard-coded image versions that need to be
updated.
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
...from the top shield banner. I don't see any reason why we
need that. This eliminate places we need to update when we release a
new chart version. The other places where it references a version is
in the sample values. I changed those to just 0.14.0 but we don't
really need to update these as they're intended to be examples.
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
The issue reporting step of the Markdown broken link check GitHub Action
is failing due to missing permissions.
> Error: Resource not accessible by integration
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Due to a bug in LH which was fixed in devel, but not yet backported, we
have to preload the LH images to get latest versions (and operator due
to a similar reason).
Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
When releasing, since the job pushes to the git repository, it needs
to have write permission on "contents".
Signed-off-by: Stephen Kitt <skitt@redhat.com>
The release frequency of some GHAs means we end up with daily
dependabot PRs, which results in lots of not-particularly-useful
review work. Reducing the update cadence to weekly shouldn't expose us
to much risk and will reduce PR churn.
Signed-off-by: Stephen Kitt <skitt@redhat.com>
Set the GitHub Actions token permission to null in most workflows.
This results in:
GITHUB_TOKEN Permissions
Metadata: read
The default permissions, used without the null override, are either
GITHUB_TOKEN Permissions
Actions: write
Checks: write
Contents: write
Deployments: write
Discussions: write
Issues: write
Metadata: read
Packages: write
Pages: write
PullRequests: write
RepositoryProjects: write
SecurityEvents: write
Statuses: write
or
GITHUB_TOKEN Permissions
Actions: read
Checks: read
Contents: read
Deployments: read
Discussions: read
Issues: read
Metadata: read
Packages: read
Pages: read
PullRequests: read
RepositoryProjects: read
SecurityEvents: read
Statuses: read
Jobs triggered by PRs get read permissions, other jobs get write.
One job requires non-null permissions to function.
The dependent issues GHA needs PR/issues write permissions to add/remove
`dependent` labels. It needs status write permission to block/unblock
PRs when dependencies are missing/met. Fails with HttpError otherwise.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Instead of using a copy of the deploy file, use Shipyard's deploy as it
could (and does) diverge.
This also obviates the need for a copy of `Dockerfile.dapper` which
can now be taken directly from Shipyard.
Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
This will ensure that we deploy the current development version of
Submariner and that our artifacts are considered the latest (currently
our latest is 0.11.2!).
Signed-off-by: Stephen Kitt <skitt@redhat.com>
Use Kubernetes 1.24 as the default version for end-to-end tests.
Remove Kubernetes 1.21 end-to-end tests as it's end of life.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
We don't really need to run the entire E2E suite anymore since we're
deploying the operator and it takes care of the entire deployment cycle.
Hence, the testing on operator should suffice and the helm testing can
be much slimmer and only use 2 single-node clusters.
This won't run the non-gw node tests, but as it's all tested on the
operator anyhow, there's no need to re-test it here.
Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
Starting with Kubernetes 1.24, secrets are no longer automatically
created for SAs. This adds secrets to the relevant templates; creating
secrets in this way is supported in all Kubernetes versions.
This also enables testing with 1.24 in CI, to make sure that the fix
actually works.
Signed-off-by: Stephen Kitt <skitt@redhat.com>
See https://github.blog/2022-04-12-git-security-vulnerability-announced/
for context. git now refuses to handle repositories which don't belong
to the current user by default; such repositories need to be
explicitly marked as safe, in the global configuration for the current user.
This fixes the failing release job.
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
Add Dependabot configuration to automatically update GitHub Actions on
the release-0.12 branch.
This will facilitate quick updates while using SHA-based versions.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
All docs.github.com URLs return 403 Forbidden, although they work.
This seems to be a new behavior, as it was working less than a week ago.
This happens in CI across submariner-io repos and locally.
$ curl -I https://docs.github.com/
HTTP/2 403
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
For quicker updates and easier, more consistent maintenance.
SHA-based versions should always be used to be sure the code we pull in
can't be changed without us, for security reasons at least. Dependabot
now supports SHA-based versions for GHAs. This patch should facilitate
their continued use.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Use the yamlint make target provided by Shipyard instead of a third
party GitHub action for running the same tool.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
This adds a feature, but nothing that seems relevant to us.
github.com/tim-actions/get-pr-commits/compare/v1.1.0...v1.2.0
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Bumps the version of markdown-link-check from 3.8.7 to 3.9.3.
Changes base image from node:alpine to node:lts-alpine.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Remove tests for Kubernetes 1.20, as it is End of Life and Submariner
supports all versions upstream-Kubernetes supports and no EOL versions.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Commits produced using "git commit --fix" are great for review, but
must be squashed before a PR is merged.
Signed-off-by: Stephen Kitt <skitt@redhat.com>
Update the versions of Kubernetes tested in the E2E CI. Add 1.23 as the
new default for most tests, remove 1.19 as it is now EOL.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Globalnet controller now uses internal services with external-ips
to support exported services. On OCP Clusters, we require an explicit
RBAC to create services with external-ips, this PR includes the
necessary RBAC for Globalnet pods.
Related to: https://github.com/submariner-io/submariner/issues/1166
Signed-Off-by: Sridhar Gaddam <sgaddam@redhat.com>
As part of Globalnet enhancement where kubeproxy dependency
is removed, the Globalnet Pod will now create internal
services for every exported service in the respective
namespace where the original service resides. This PR
adds the necessary clusterRole to allow Globalnet pod
to create/delete such internal services.
Related to: https://github.com/submariner-io/submariner/issues/1166
Signed-off-by: Sridhar Gaddam <sgaddam@redhat.com>
connectionHealthCheck in submariner CR is a nested field
but is being added as a variable. This means it is ignored
and the field isn't set correctly in gateway pods.
Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
Right now auto release logic updates `devel` to the stable branch name
when creating stable branches. This leads to this job "sharding" into
multiple jobs, and messes up branch protections.
To keep things simple, the main job name will remain the same so that
there's no "PR targets X" and "PR targets Y" jobs, just the one "PR
targets branch" job
Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
Per GitHub's security guidelines, GHAs should be pinned using full
length commit SHAs instead of tags.
The SHAs are of the commits currently resolved by the versions.
Even "trusted" GHAs from GitHub developers are pinned because it's
possible their repo rights could be compromised and a malicious GHA
published. These core repos are not frequently substantially updated.
Submariner-internal GHAs are left pinned at devel because we want
automatic updates from Shipyard's shared tooling.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
As we do with the Flake Finder and other periodic jobs, skip the checks
for PR dependencies on forks.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Submariner, k8s, OS and kernel information
are collected as part of `subctl gather`. Don't
ask for them explicitly in bug report.
Signed-off-by: Janki Chhatbar <jchhatba@redhat.com>
This job marks a PR `dependent` whenever a dependent PR
is mentioned via `Depends on/ depends on` keyword.
The job fails until the dependent PR is not merged. This
helps in properly managing merging of dependent PRs.
Signed-off-by: Janki Chhatbar <jchhatba@redhat.com>
`lighthouse-agent` `ClusterRole` requires access to `globalingressips`
for Globalnetv2 in Lighthouse.
Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
Globalnetv2 requires `globalnet` `ClusterRole` for Egress/IngressIPs
but those were added as `globalnet` `Role` instead. This change
moves the permissions from `Role` to `ClusterRole`
Signed-off-by: Vishal Thapar <5137689+vthapar@users.noreply.github.com>
Add a linting job to verify that no commit message in a PR contains the
case insensitive string "Apply suggestions from code review". Commits
with exactly this title are generated by GitHub automatically when a
batch of proposed changes from code review are accepted from the GitHub
UI. A number of such commits have made it into various Submariner/*
repos.
Commits addressing code review feedback should typically be squashed
into the commits under review, or made into well-commented discrete
commits.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Will configure the submariner-bot to add the /ready-to-test label when a
PR has two approvals, causing the full E2E workflow to run.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Add docs generated by helm-docs for each chart. The docs will be kept
up-to-date with CI and the contents of the docs can be improved in
future changes to inline commenting.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
The maintainers table generated by helm-docs includes a raw URL in
Markdown, which fails markdownlint. I sent a PR upstream to fix the root
of the issue, but for now we have to disable this linter rule.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Somehow the GitHub Pages URL we use to publish and install the charts
works to install the charts in CI but also fails with a 404 in CI.
The URL is successfully used by Shipyard here:
https://github.com/submariner-io/shipyard/blob/
33dc2ffdadf6e520a2101368f7f7456c031bace0/scripts/shared/lib/
deploy_helm#L14
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Following the pattern from other repos, split the E2E test job into a
default job that runs a single default-only test always on PRs and a
full job that runs the full matrix when the ready-to-test label is
added.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
The colon in these field names isn't allowed by K8s, and fails ct
linting. Use the new names from submariner-operator, which have already
been renamed to fix this.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
This field is required by standard chart schemas. It should be v2 for
Charts that support Helm v3, as we do.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Use copyright notice wording required by CNCF for the maintainers field
for both Chart.yaml files.
Also fix an indentation error in one Chart.yaml file.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Add a template for PRs with tips and pointers to docs.
This completes a recommendation of the CII Best Practices program:
> It is SUGGESTED that this policy on adding tests (see test_policy) be
documented in the instructions for change proposals.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Add Submariner's CII Best Practices badge to the README.
Add badges for workflows run against merged code.
Signed-off-by: Daniel Farrell <dfarrell@redhat.com>
Don't run jobs that aren't triggered on pull request on forks.
Forks aren't likely to need these jobs, and theyre more likely to fail
there.
Signed-off-by: Mike Kolesnik <mkolesni@redhat.com>
<!-- Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our developer guide: https://submariner.io/development/
2. Ensure you have added the appropriate tests for your PR: https://submariner.io/development/code-review/#test-new-functionality
3. Read the code review guide to ease the review process: https://submariner.io/development/code-review/
4. If the PR is unfinished, mark it as a draft: https://submariner.io/development/code-review/#mark-work-in-progress-prs-as-drafts
5. If you are using CI to debug, use your private fork: https://submariner.io/development/code-review/#use-private-forks-for-debugging-prs-by-running-ci
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:
properties:
cluster_cidr:
items:
type:string
type:array
cluster_id:
type:string
color_codes:
items:
type:string
type:array
global_cidr:
items:
type:string
type:array
service_cidr:
items:
type:string
type:array
required:
- cluster_cidr
- cluster_id
- color_codes
- global_cidr
- service_cidr
type:object
required:
- spec
type:object
served:true
storage:true
status:
acceptedNames:
kind:""
plural:""
conditions:[]
storedVersions:[]
---
apiVersion:apiextensions.k8s.io/v1beta1
apiVersion:apiextensions.k8s.io/v1
kind:CustomResourceDefinition
metadata:
name:endpoints.submariner.io
spec:
group:submariner.io
version:v1
names:
kind:Endpoint
listKind:EndpointList
plural:endpoints
singular:endpoint
scope:Namespaced
versions:
- name:v1
schema:
openAPIV3Schema:
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:
properties:
backend:
type:string
backend_config:
additionalProperties:
type:string
type:object
cable_name:
type:string
cluster_id:
type:string
healthCheckIP:
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
required:
- spec
type:object
served:true
storage:true
status:
acceptedNames:
kind:""
plural:""
conditions:[]
storedVersions:[]
---
apiVersion:apiextensions.k8s.io/v1beta1
apiVersion:apiextensions.k8s.io/v1
kind:CustomResourceDefinition
metadata:
name:gateways.submariner.io
spec:
group:submariner.io
version:v1
names:
kind:Gateway
listKind:GatewayList
plural:gateways
singular:gateway
scope:Namespaced
additionalPrinterColumns:
- name:ha-status
versions:
- additionalPrinterColumns:
- description:High availability status of the Gateway
jsonPath:.status.haStatus
name:HA Status
type:string
description:High Availability Status of the Gateway
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:
properties:
connections:
items:
properties:
endpoint:
properties:
backend:
type:string
backend_config:
additionalProperties:
type:string
type:object
cable_name:
type:string
cluster_id:
type:string
healthCheckIP:
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
latency:
description:LatencySpec describes the round trip time information
in nanoseconds for a packet between the gateway pods of two
clusters.
properties:
averageRTT:
format:int64
type:integer
lastRTT:
description:TODO This shall be deleted once the operator
is using the latest. Using Optional to avoid validation
errors when this field is not used.
format:int64
type:integer
maxRTT:
format:int64
type:integer
minRTT:
format:int64
type:integer
stddevRTT:
format:int64
type:integer
type:object
latencyRTT:
description:LatencySpec describes the round trip time information
for a packet between the gateway pods of two clusters.
If you haven't done so yet, please label a node as `submariner.io/gateway=true` to elect it for running Submariner.
{{- end }}
By default, Submariner runs with 1 replica. If you have more than one Gateway host, you can scale Submariner to N replicas, and the other Submariner pods will simply join the leader election pool.
By default, Submariner runs with 1 replica. If you have more than one Gateway host, you can scale Submariner to N replicas, and the other Submariner pods will simply join the leader election pool.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.